[実習] “AIよ、これマルウェアに見える?” 🤖 抽出したメタデータで一次判別する

こんにちは、セキュリティの卵の皆さん! 🌱

前回まで、私たちは静的解析ツール(PE-bear、Pestudio、Strings)を使って、未知のファイルから「骨と肉(メタデータ)」を抽出する作業を行いました。

  • インポートテーブル(IAT):このファイルが使用するツール(API関数)
  • 文字列(Strings):ファイル内部に隠されたテキスト(IPアドレス、メッセージなど)

しかし、いざ数百のAPI関数と数千行の文字列を目の当たりにすると、目が回ってしまいます。😵‍💫 「一体この組み合わせは何を意味するんだ?」

まさにこの時!私たちの頼れる助手、生成AI(ChatGPT、Claudeなど)が活躍する時です。私たちが抽出した「原材料」をAIに与えると、AIは膨大なセキュリティ知識に基づいて「これは90%の確率でランサムウェアです!」と一次診断を下してくれます。

本日は、抽出されたメタデータをAIに入力し、悪性かどうかを迅速に判別するプロンプトエンジニアリングの実習を行ってみましょう。🚀


1. 📋 準備物:私たちが集めた手がかり

AIに質問する前に、前回の実習で得たデータを整理する必要があります。テキストファイルやメモ帳に以下の内容が準備されている必要があります。

  1. 主要APIリスト(IAT):CryptEncrypt、WriteFile、InternetOpenなど
  2. 疑わしい文字列(Strings):readme.txt、http://evil.com、cmd.exeなど
  3. ファイル基本情報:ファイルサイズ、コンパイル時間など(オプション)

💡 ヒント:すべての文字列を入れる必要はありません。あまりにも一般的な単語は除外し、「特徴的なもの」を中心に選んで準備してください。


2. 🗣️ [実習] AIに尋ねる方法(プロンプト作成)

AIは優れた分析官ですが、質問が粗雑だと回答も粗雑になります。「ペルソナ(役割)」を与え、具体的な指示を出す必要があります。

以下のプロンプトをコピーして、皆さんのデータで埋めてください!

📝 マルウェア判別マスタープロンプト

[役割付与] あなたは20年の経験を持つマルウェア分析の専門家(Malware Analyst)です。

>

[状況] 私は疑わしいWindows実行ファイル(PE)からインポートAPIリストと内部文字列(Strings)を抽出しました。このデータに基づいて、ファイルの悪性度を一次判断しようとしています。

>

[分析データ] 1. 主要インポートAPIリスト:

>

Plaintext

>

`

(ここにPestudioから抽出したAPIリストを貼り付けてください。例:CryptEncrypt、WriteFile…)

`

>

2. 主要文字列(Strings):

>

Plaintext

>

`

(ここにStringsツールで抽出した文字列を貼り付けてください。例:Your files are encrypted、.onion…)

`

>

[要求事項] 上記データを総合的に分析し、以下の内容をレポート形式で作成してください。

>

1. 悪性疑い確率:(0~100%の間で推定)

>

2. 予想される悪性行為:(ランサムウェア、キーロガー、バックドアなど具体的な種類)

>

3. 判断根拠(3つ以上):APIと文字列の組み合わせ(Combination)を根拠に説明してください。(例:API Aと文字列Bが共に存在するため、Cの行為が疑われます)

>

4. MITRE ATT&CKマッピング:関連する攻撃戦術/技術IDを明記してください。


3. 🧪 [シミュレーション] 実際の入力と結果の例

さて、実際に前回ランサムウェアサンプルから抽出したデータを入力したとき、AIがどのように反応するか見てみましょう。

📥 私たちが入力したデータ(例)

  • API:FindFirstFile、FindNextFile、CryptEncrypt、CryptGenKey、WriteFile、DeleteFile
  • Strings:All your files are encrypted、bitcoin、restore_guide.txt、.locked

📤 AIの分析結果(例)

🚨 マルウェア分析結果レポート

>

1. 悪性疑い確率:98%(非常に高い)

>

2. 予想される種類:ランサムウェア(Ransomware)

>

3. 判断根拠(Evidence):

>

ファイル探索と暗号化の組み合わせ:FindFirstFile/FindNextFileでシステム内のファイルを検索し、CryptEncrypt APIを使用して暗号化を実行する典型的なランサムウェアのロジックです。

>

脅迫メッセージの識別:文字列中の「All your files are encrypted」と「bitcoin」は、ユーザーに金銭を要求するランサムノートの主要キーワードです。

>

破壊的な行為:WriteFileで暗号化されたデータを書き込み、DeleteFileで元のファイルを削除して復元を不可能にするパターンが見られます。

>

4. MITRE ATT&CKマッピング:

>

T1486 (Data Encrypted for Impact):データ暗号化

>

T1490 (Inhibit System Recovery):元の削除と復元妨害


4. ⚖️ 注意点:AI盲信禁止!(誤検知検証)

AIの回答が常に正解とは限りません。

  • セキュリティプログラムの場合:ウイルス対策プログラムもCryptEncrypt(自己保護)やDeleteFile(治療)関数を使用します。AIがこれを悪性と誤解する可能性があります。
  • パッキング(Packing)されたファイル:ファイルが圧縮(Packing)されている場合、APIがほとんど見えず、AIが「正常なファイルのようです」と誤って判断する可能性があります。(この場合、「APIが少なすぎるためパッキングが疑われる」という結果を誘導する必要があります。)

したがって、AIの結果は「参考用の一次所見」として活用し、確実な検証は分析官(まさに皆さん!)がサンドボックス実行などを通じて直接行う必要があります。


🎉 終わりに:分析速度を10倍速く!

おめでとうございます! 👏 これで皆さんは、複雑なアセンブリコードをすべて解析することなく、メタデータ抽出+AI相談というコンボを通じて、わずか5分でマルウェアの正体を把握する能力を身につけました。

この方法は、多数の疑わしいファイルを迅速に分類(トリアージ)する必要があるセキュリティ監視現場で非常に有用なスキルです。

次回は、このように分類されたマルウェアが実際にどのようなサーバーと通信するのか(ネットワーク分析)を掘り下げる応用コースに進んでみましょう。お楽しみに! 👋



Comments

コメントを残す

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