こんにちは!セキュリティ研究者の皆さん 🕵️♂️
前回は、Hello WorldプログラムをGhidraで開き、AIに簡単に質問する方法を学びました。しかし、AIだからといって常に完璧に理解してくれるわけではありません。「このコードを説明して」と適当に尋ねると、AIも「ただのC言語コードですね」と適当に答えます。これを私たちはGIGO(Garbage In, Garbage Out)と呼びます。🗑️
今日は、同じAIを使っても他の人より10倍正確で深みのある分析結果を得る秘訣、「セキュリティ特化型プロンプトエンジニアリング」について学びます。私たちはもはや単なる質問者ではなく、AIを指揮する「プロンプトエンジニア」になるのです!🚀

1. プロンプトエンジニアリングとは?🤷
プロンプト(Prompt)とは、AIに与える「命令」や「質問」を意味します。プロンプトエンジニアリングは、「AIが私が望む最高の回答を出すように質問を精巧に設計する技術」です。
マルウェア分析において、良いプロンプトは以下の構造を持ちます。
✨ 魔法の公式:[ペルソナ(役割)] + [コンテキスト(背景)] + [データ(コード)] + [指示事項(目標)] + [出力形式]
この公式を一つずつ見ていきましょう。
2. STEP 1: ペルソナ設定(あなたの正体は?)🎭
AIに役割を与えることで、回答の品質が大きく変わります。ただ尋ねると「一般人」レベルで答えますが、専門家の役割を与えると専門用語を使って深く分析します。
- ❌ 悪い例:「このコードは何?」
- ✅ 良い例:「あなたは10年の経験を持つマルウェア分析専門家(Senior Malware Analyst)です。セキュリティ監視およびインシデント対応(CERT)の観点から回答してください。」
このように役割を与えることで、AIは突然態度を変え、「攻撃者の意図」や「IoC(侵害指標)」のようなセキュリティの核心情報を探そうと努力します。
3. STEP 2: 質問最適化実践(Before & After)🧪
実際のマルウェアでよく見られる「ソケット接続(ネットワーク通信)」コードを例に比較してみましょう。
📝 分析対象コード(C言語)
// 分析するコードスニペット
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);
s = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(4444);
addr.sin_addr.s_addr = inet_addr("192.168.0.10");
connect(s, (struct sockaddr*)&addr, sizeof(addr));
😱 [Before] 初心者の質問
プロンプト:「以下のコードを説明して。」
>
AIの回答(例):「このコードは、Windowsソケットを初期化し、IP 192.168.0.10の4444ポートにTCP接続を試みるコードです。socket関数とconnect関数を使用しています。」
👉 問題点:間違ったことは言っていませんが、これがなぜ危険なのか、分析者が何をすべきかという情報がありません。ただ「翻訳」してくれただけです。
🤩 [After] プロンプトエンジニアリング適用
プロンプト:「役割:あなたはサイバーセキュリティの専門家です。背景:私は疑わしい実行ファイルから以下のコードスニペットを抽出しました。このコードはユーザーの同意なしに実行されたと推定されます。目標:
>
1. このコードの行動目的を分析してください。(例:バックドア、ダウンローダーなど)
2. 攻撃者がこのコードを通じて何を達成しようとしているのか推論してください。
3. 分析者がブロックすべきネットワークIoC(侵害指標)情報を抽出してください。形式:主要な内容を箇条書きで要約して記述してください。
>
コード:[コードを貼り付け]」
AIの回答(例):🔍 セキュリティ分析レポート
>
– 行動分析:このコードは典型的なリバースシェル(Reverse Shell)またはC2(Command & Control)サーバー接続の試みです。特定のIPに能動的に接続を確立しています。
– 攻撃者の意図:
– 外部攻撃者サーバー(C2)との通信チャネル確立
– 追加の悪性ペイロードのダウンロードまたはリモート制御コマンドの受信待機
– 主要IoC(ブロックが必要):
– Target IP:192.168.0.10(内部ネットワークIPのように見えますが、実際の攻撃では公開IPである可能性が高いです)
– Target Port:4444(Metasploitなどのハッキングツールのデフォルトポートとして頻繁に使用されます 🚩)
👉 違い:お分かりでしょうか?単なる「接続」ではなく、「リバースシェル」、「C2」、「Metasploitのデフォルトポート」のような洞察を提供しています!これこそが私たちが求める分析です。
4. 裏技:連鎖的な質問(Chain of Thought)🔗
一度の質問で終わらせないでください。AIの回答に基づいて、さらに深く掘り下げる必要があります。
- 反論する:「これが正常なネットワーク管理プログラムである可能性はないですか?誤検知(False Positive)の可能性をチェックしてください。」
- 対応を要求する:「この攻撃を検出するためのYARA Ruleを作成してください。」
- 説明を要求する:「初級の監視要員にこの脅威を説明できるように、簡単な言葉で要約してください。」
5. 自分だけの「チートシート」プロンプトを保存する 💾
毎回長く入力するのは大変ですよね?メモ帳やNotionに自分だけのプロンプトテンプレートを保存して使いましょう。
[テンプレート:マルウェア分析用]
Role: Senior Malware Researcher
Task: Analyze the following assembly/C code snippet.
Details:
1. Identify the malicious functionality (Keylogging, Ransomware, RAT, etc.).
2. Explain the logic step-by-step.
3. Highlight crucial API calls and their parameters.
Format: Markdown Table
Code:
[Insert Code Here]
🎉 まとめ
今日、私たちはAIに「誰(専門家)」として「どのように(セキュリティの観点から)」答えるべきかを教える方法を学びました。この技術は、マルウェア分析だけでなく、レポート作成、メール対応など、すべての業務に適用できる核心的な能力です。
次回は、この技術を活用して、人間が読むのが難しい「難読化(Obfuscation)されたスクリプト」をAIと一緒に解き明かす実習を行います。お楽しみに!🔥
ご質問があれば、いつでもコメントに残してください!👇
コメントを残す