← すべての記事

AIによるマルウェア解析には証拠パケットが必要です

Zane St. Johnは安価なAndroidプロジェクターを購入し、不審なDNSトラフィックを見つけ、Claude Codeをリバースエンジニアリングの補助役として使って、端末にプリインストールされていたアプリを調査しました。1

重要なのは、AIエージェントがマルウェア解析を手伝ったことではありません。その主張はすぐに珍しくなくなります。注目すべきは成果物の形です。観測されたネットワーク挙動、パッケージ名、デコンパイルされたコードの経路、コマンド出力、メモ、インジケーター。人間が確認できる材料が残っていました。エージェントを使ったマルウェア解析が信頼に値するのは、出力が「答え」ではなく「調査ファイル」に近い形になっているときだけです。

AIによるマルウェア解析には証拠パケットが必要です。エージェントは、展開、デコンパイル、検索、要約、仮説づくりを速くできます。それでも結論を信じる前に、解析者にはハッシュ、ツールのバージョン、コマンド、抽出されたインジケーター、ソースパス、不確実性のラベル、主張と証拠の対応関係が必要です。

要点

Microsoft ResearchはProject Ireを、ソフトウェアをリバースエンジニアリングし、検証器がマルウェア判定に十分な根拠があるかを判断する前に証拠の連鎖を作る、自律型のマルウェア分類エージェントだと説明しています。2 ZaneのAndroidプロジェクター調査も、小さな規模で同じパターンを示しています。エージェントは個人の解析者がAPK、ログ、文字列、不審なコード経路をたどる助けになります。1

プロダクトとしての教訓は限定的です。AIマルウェア解析者は権威ではなく、作業台として扱うべきです。作業台は証拠を抽出し、整理し、つなげられます。一方で、稼働中のインフラに接続したり、エクスプロイト用クライアントを書いたり、通常のワークステーションで未知のペイロードを実行したり、影響に関する人間の判断を置き換えたりしてはいけません。役に立つ出力とは、レビュー担当者が再現できる証拠パケットです。

重要なポイント

セキュリティチーム向け: - エージェントには判定ではなく、証拠パケットを求めましょう。 - サンプルの同一性、コマンドログ、ツールのバージョン、抽出されたインジケーター、主張の根拠を一緒に保持してください。 - 動的実行、ネットワーク接続、認証情報を含む解析の前には、人間の承認を必須にしてください。

エージェント開発者向け: - マルウェア解析のワークフローは、デフォルトで読み取り専用の静的解析にしてください。 - 抽出、仮説、検証、報告を別々のステップに分けてください。 - 人間が証拠の流れを監査できるよう、生の成果物と参照元の場所を残してください。

プロダクトチーム向け: - 「自律型マルウェア解析」を魔法のように売り込まないでください。 - エージェントが何を調べ、何を推論し、何を検証しておらず、人間がまだ何を判断すべきかを示してください。 - 派手なダッシュボードを作る前に、レビュー用パケットを作りましょう。

Androidプロジェクター事例が示したこと

St. Johnの調査は、通常利用の前にプロジェクターからDNSリクエストが出ていたという観測から始まりました。1 ここが重要です。不審さの起点はモデルではなく、端末の挙動にありました。エージェントが入ったのは、解析者がすでに調べる価値のある問いを持っていた後です。

その後のワークフローは、一般的なリバースエンジニアリングの確認対象をたどりました。

確認対象 重要な理由
DNS観測 ユーザーが操作する前に、端末が通信していたことを示しました。
Androidパッケージ名 調査すべきプリインストールアプリを絞り込む助けになりました。
APKデコンパイル 同梱コードを検索可能なソース風の出力に変換しました。
文字列とエンドポイント 設定、ネットワークの接続先、更新挙動を明らかにしました。
メモと要約 調査が生ファイルの山になるのを防ぎました。

記事では、adbjadxのような一般的なAndroidリバースエンジニアリングツールが挙げられています。1 これらのツールは結論を真実にするわけではありません。成果物を検査可能にします。jadxは、Android DexファイルとAPKファイルをJavaソースに変換し、AndroidリソースもデコードできるコマンドラインおよびGUIのデコンパイラーだと説明されています。3 Apktoolは、マニフェスト、リソース、smali、再ビルドのワークフローを含む、Android APKファイルのリバースエンジニアリング用ツールだと説明されています。4

エージェントの強みは、その中間にあります。不慣れなパッケージを検索し、コードを要約し、調べるべき箇所を提案し、TODOリストを保てます。それでも解析者は、それぞれの主張を元の成果物と照合して検証する必要があります。

AIはリバースエンジニアリングを案件管理に変える

従来のマルウェア解析でも、調査ファイルは作られてきました。そこには、ハッシュ、サンプルの入手元、文字列、ドメイン、IPアドレス、ミューテックス、レジストリキー、ファイルパス、スクリーンショット、逆アセンブルのメモ、サンドボックス出力、最終判定などが含まれることがあります。

エージェントは、その作業の速度と量を変えます。1人の解析者が手作業で入力するより多くのファイルを読み、より多くのメモを書き、より多くの仮説を出せます。しかし、出力形式の取り決めが弱ければ、その速度は信頼の問題を生みます。自信ありげな要約は、誤った推論、見落とした分岐、幻覚で作られたAPI名を隠してしまうかもしれません。

MicrosoftのProject Ireは、よりよい形を示しています。Microsoftによれば、このシステムはソフトウェアを自律的に解析・分類し、所見のための証拠の連鎖を構築します。2 設計にはリバースエンジニアリング用ツールに加え、証拠が判定を支えているかを確認する検証器が含まれます。2 重要なのはブランド名より、この検証器という考え方です。マルウェア解析には、結論を流暢に語る語り手だけでなく、証拠を別に裁く役割が必要です。

小さなワークフローでも、同じ分担を使えます。

ステップ エージェントの役割 人間またはポリシーによる確認
取得 サンプルの入手元とハッシュを記録する。 権限と封じ込めを確認する。
抽出 静的成果物を展開する。 ツールチェーンとサンプルの扱いを承認する。
調査 コード、マニフェスト、文字列、リソースを検索する。 参照元の場所を確認する。
仮説化 不審な挙動とリスクを提案する。 裏付けとなる証拠を求める。
検証 各主張を成果物に対応づける。 根拠のない主張を退ける。
報告 インジケーターと影響メモを書く。 対応と開示を決める。

エージェントは多くのことができます。何を信じるに値するかは、確認基準が決めます。

Androidには有用な静的解析面がある

Androidのマルウェア解析には実務上の利点があります。APKは、アプリを実行する前に複数の静的解析面を見せてくれるからです。

Androidのセキュリティドキュメントには、クリアテキスト通信、動的コード読み込み、安全でないブロードキャストレシーバー、ハードコードされたシークレット、権限関連のミスなどのリスクカテゴリが挙げられています。5 MITRE ATT&CK for Mobileには、Broadcast Receiversや実行時の新規コードダウンロードといった技法が含まれており、観測された挙動を攻撃者の手口に対応づけるための語彙を解析者に与えてくれます。6

そのため、静的解析を起点にした証拠パケットには価値があります。

Android成果物 記録すべき証拠
APKハッシュ SHA-256、入手元、収集日、ファイル名。
マニフェスト パッケージ名、権限、サービス、レシーバー、プロバイダー、エクスポートされたコンポーネント、SDKターゲット。
デコンパイル済みコード 主張に関係するファイルパス、クラス、メソッド、行またはシンボル。
リソース URL、ドメイン、APIパス、設定値、証明書、アセット。
ネイティブライブラリ ライブラリ名、アーキテクチャ、エクスポートされたシンボル、展開メモ。
ネットワーク観測 観測されたドメインまたはIP、タイムスタンプ、ツール、接続が受動的だったか能動的だったか。
挙動の対応づけ 証拠が支える場合に限ったATT&CK Mobile技法。
不確実性 エージェントが調べていないこと、証明できなかったこと。

この表は重要な誤りを避けています。最初に「マルウェアかどうか」をモデルに判断させていません。後で判定をレビュー可能にする証拠を保存するよう、システムに求めています。

証拠パケット

有用なAIマルウェア解析パケットは、予測しやすい形に収まるべきです。

セクション 必須内容
範囲 誰が解析を承認したか、どのサンプルまたは端末を調べたか、どの行為が禁止されていたか。
サンプルの同一性 ハッシュ、ファイル名、サイズ、タイムスタンプ、ソースパス、証拠保全のメモ。
ツールチェーン ツール名、バージョン、コマンドライン、環境の境界。
静的所見 マニフェストの事実、パッケージ名、不審な文字列、エンドポイント、リソース、コード上の場所。
動的所見 承認された場合のみ。環境、ネットワーク分離、ログ、スクリーンショット、観測された挙動。
インジケーター ドメイン、IPアドレス、パッケージ名、ファイルパス、証明書データ、その他の観測可能な成果物。
主張マップ それぞれの結論と、それを支える正確な成果物の組み合わせ。
未検証の作業 展開していないサンプル、追っていないコード経路、再現していないネットワーク挙動、前提。
推奨アクション ブロック、監視、削除、エスカレーション、開示、解析継続。信頼度も添える。

パケットの中心は主張マップです。

主張 証拠 信頼度
アプリが動的コード読み込みを使っている デコンパイル済みコードの経路とAndroidリスクカテゴリの引用。 動的挙動が再現されるまでは中。
アプリが不審なドメインに接続している 受動的DNS観測と、文字列または設定の参照。 両方の情報源が一致すれば高。
アプリがレシーバーを通じて永続化する マニフェストのレシーバーと、起動またはシステムブロードキャストを処理するコード経路。 ラボで観測されない限り中。
アプリは悪意がある 複数の裏付けられた挙動、文脈、人間によるレビュー。 モデル要約だけでは決して判断しない。

最後の行は解析者を守ります。マルウェア判定には影響があります。誤検知はベンダーを傷つけたり、インシデント対応を混乱させたりします。見逃しはユーザーを危険にさらします。モデルに証拠を迂回する近道を与えてはいけません。

エージェントが拒否すべきこと

マルウェア対応では、目的が防御であっても拒否の境界が必要です。

エージェントは、次の行為の前に拒否するか、明示的な人間の承認を求めるべきです。

  • 稼働中のC2(コマンド・アンド・コントロール)インフラに接続すること。
  • 疑わしいバックドアやアップデーター用のクライアントを書くこと。
  • 攻撃者が管理するインフラから第2段階ペイロードをダウンロードすること。
  • 隔離されたラボの外で未知のサンプルを実行すること。
  • 解析中に実ユーザーの認証情報、個人アカウント、本番ネットワークを使うこと。
  • 責任ある開示の前に、被害者を特定し得る稼働中のインジケーターを公開すること。
  • 防御目的の調査をエクスプロイト手順に変えること。

OpenAIのlocal-shellドキュメントは、エージェントに任意のシェルコマンド実行を許すことは危険になり得ると警告し、コマンドをシェルに渡す前にサンドボックス化、または厳格な許可リストと拒否リストを使うことを推奨しています。7 AnthropicのClaude Codeベストプラクティスガイドは、エージェント作業における検証基準と文脈管理を重視しています。8 マルウェア解析にはその両方が必要です。行動の前にはコマンド制限を、信じる前には証拠の制限を置く必要があります。

拒否の境界は、タスクそのものに書いておくべきです。

このAPKを静的に解析してください。
実行しないでください。
リモートインフラに接続しないでください。
エクスプロイトやクライアントのコードを書かないでください。
ファイルパス、コマンド、信頼度ラベルを含む証拠だけを返してください。
裏付けのない主張はすべて未検証として印を付けてください。

この種の指示だけでワークフローが安全になるわけではありません。フック、サンドボックス、レビュー担当者が強制できる具体的な基準を与えるのです。

判定の責任は人間に残る

AIエージェントは、マルウェア解析の作業時間を何時間も削減できます。APKの山から不審なパッケージの短いリストへ進めます。クラスを要約し、インテントフィルターを展開し、設定文字列を特定し、報告書の下書きを作れます。こうした利点には意味があります。

それでも、エージェントに判定の責任を持たせるべきではありません。

解析者が責任を持つものは次のとおりです。

  • サンプル解析の権限。
  • 何かを動的に実行するかどうかの判断。
  • 意図と影響の解釈。
  • 影響を受けるベンダー、ユーザー、プラットフォームとの連絡。
  • 修復と開示の判断。
  • 報告書に載せる最終的な文言。

この分担により、エージェントは有用なままでいられます。モデルは骨の折れる接続作業を担います。人間は、倫理的、法的、文脈的な責任を保ちます。

ワークフローの作り方

小さな静的解析ループから始めます。

  1. サンプルをハッシュ化し、入手元を記録します。
  2. マニフェスト、リソース、文字列、デコンパイル済みコードを読み取り専用の作業ディレクトリに抽出します。
  3. エージェントに、参照元の場所付きで所見リストを作らせます。
  4. 2回目のパスで各所見に反論させ、根拠のない主張に印を付けさせます。
  5. 証拠パケットを作ります。
  6. そのパケットが動的ラボ解析を正当化するか判断します。

エージェントへのプロンプトでは、構造化された出力を要求するべきです。

各所見について、次を含めてください。
- 主張
- 成果物のパス
- その成果物を生成したコマンド
- 参照元の抜粋またはシンボル
- 信頼度
- その主張を反証する条件
- 動的解析が必要かどうか

この出力は、「プロジェクターにマルウェアが入っている」という表現ほど刺激的ではありません。ですが、はるかに有用です。

証拠ゲートはこの話にそのまま当てはまります。証拠のない主張は、最終回答に入れるべきではありません。レビューパケットが新しい最終回答になるも同じです。納品物は文章の要約ではなく、別の人が作業を検証できるパケットです。

FAQ

AIエージェントはマルウェア解析ができますか?

制限内であれば可能です。エージェントは静的解析、要約、デコンパイル結果のナビゲーション、インジケーター抽出、報告書の下書きを支援できます。ただし、再現可能な証拠と人間によるレビューなしに、マルウェア判定の最終権限にしてはいけません。

Claude CodeやCodexをマルウェアに使っても安全ですか?

管理された防御目的のワークフロー内に限ります。通常のワークステーションで未知のサンプルを実行しないでください。稼働中のインフラに接続しないでください。エージェントに認証情報や制限のないシェル・ネットワークアクセスを与えないでください。隔離された作業ディレクトリでの静的解析が、より安全な出発点です。

マルウェア解析の証拠パケットには何を含めるべきですか?

最低限、ハッシュ、サンプルの入手元、ツールのバージョン、コマンド、マニフェストの事実、抽出されたインジケーター、コード上の場所、主張と証拠の対応表、信頼度ラベル、未検証作業の一覧を含めます。

AIの判定は証拠になりますか?

なりません。モデルの発言は解釈です。証拠とは、ハッシュ、ログ、コマンド、コード経路、マニフェスト、観測されたネットワーク挙動、再現可能な解析手順などの成果物から来ます。

エージェントは所見をMITRE ATT&CKに対応づけるべきですか?

証拠が対応づけを支えている場合は、対応づけるべきです。成果物の裏付けがない技法ラベルは飾りになります。ATT&CK Mobileは語彙として使い、証明の代わりにしてはいけません。6

おわりに

AIはマルウェア解析から解析者を取り除くものではありません。解析者が何を求めるべきかを変えるものです。

弱い出力は、自信に満ちた判定です。強い出力は、再現可能なパケットです。サンプルの同一性、コマンド、成果物、インジケーター、主張の根拠、不確実性、次の行動が入っているものです。

エージェントはリバースエンジニアリングを速くできます。証拠パケットは、それを信頼できるものにします。


参照


  1. Zane St. John, “Claude Codeを使ったAndroidマルウェアのリバースエンジニアリング,” 2026年2月5日公開。Androidプロジェクター事例、不審なDNSという出発点、adbjadxの使用、Claude Code支援によるAPK調査、防御目的のリバースエンジニアリングワークフローの形の出典。 

  2. Microsoft Research, “Project Ire: 大規模なマルウェアの自律的特定,” 2025年8月公開。Project Ireの自律型リバースエンジニアリングの位置づけ、証拠の連鎖の設計、ツール利用、検証器ステージの出典。 

  3. jadx project, “jadx README,” GitHubリポジトリドキュメント、2026年5月18日アクセス。jadxがコマンドラインとGUIで使えるDex-to-Javaデコンパイラーであり、Android APKとリソースをサポートすることの出典。 

  4. Apktool, “Apktool,” 公式ドキュメント、2026年5月18日アクセス。ApktoolがAndroid APKファイルのリバースエンジニアリング用ツールであり、マニフェスト、リソース、smaliのデコードワークフローを持つことの出典。 

  5. Android Developers, “アプリのセキュリティリスクを軽減する,” 2026年5月18日アクセス。クリアテキスト通信、動的コード読み込み、ハードコードされたシークレット、安全でないブロードキャストレシーバーなど、Androidのリスクカテゴリの出典。 

  6. MITRE ATT&CK, “Mobile Matrix,” 2026年5月18日アクセス。Broadcast Receiversや実行時の新規コードダウンロードなど、ATT&CK Mobileの技法語彙の出典。 

  7. OpenAI, “Local shell,” OpenAI APIドキュメント、2026年5月18日アクセス。エージェントがシェルコマンドを実行する前のlocal-shellリスクの位置づけ、サンドボックスまたは許可・拒否リストのガイダンスの出典。 

  8. Anthropic, “Claude Codeのベストプラクティス,” Claude Codeドキュメント、2026年5月18日アクセス。エージェント解析の位置づけで使った、コンテキストウィンドウ、検証基準、CLIツールのワークフローに関するガイダンスの出典。 

関連記事

フォーク爆弾が私たちを救った

LiteLLMの攻撃者は1つの実装ミスを犯しました。そのミスこそが、47,000件のインストールが46分で発覚した唯一の理由です。

1 分で読める

オープンソースはセキュリティ境界ではありません

AIによる脆弱性発見に関するGDSのガイダンスは、オープンソースのセキュリティを正しく捉えています。原則として隠す範囲を減らし、より速く修正し、例外は証拠とともに明示する、という考え方です。

1 分で読める

Ralphループ:自律型AIエージェントを一晩中稼働させる方法

ストップフック、スポーンバジェット、ファイルシステムメモリを備えた自律エージェントシステムを構築しました。失敗から学んだことと、実際にコードをシップする仕組みを紹介します。

3 分で読める