考察
- 観測事実 実行後、検体は子プロセスを生成し、一時フォルダへファイルを書き込んだ。
- 観測事実 自動起動に関わるレジストリキーへの書き込みが記録された。
-
推論
関数
FUN_00401a30のレジストリ操作が、観測された書き込みに対応すると考えられる。 - 推論 初期化処理から呼ばれていることから、再起動後も動作を続けるための処理である可能性が高い。
- 不明点 接続先を決める処理は、今回の解析範囲では特定できていない。追加調査の対象とする。
LLM × Agent × VM ─ Malware Analysis Automation
複雑なレポートも
全自動に
r_AKanaly は、LLM と独自エージェントが VM を操作し、 動的解析ログと Ghidra の静的解析情報を照合して、 根拠付きのレポートを生成するマルウェア解析自動化ツールです。
Mission
マルウェアの解析レポートは、被害からの復旧や同じ攻撃への対策に欠かせない一方で、作成には解析の知識と専用ツールを操作する技術が必要です。初心者にとっては大きな壁があり、専門家でも1件ごとに時間がかかるため大量には作れず、調べたい検体のレポートが見つからないことも少なくありません。r_AKanaly は、世界で利用できるマルウェア解析レポートを増やすことを目的に、検体のアップロードやハッシュ値の取得と同じくらい手軽に「レポートを作る」を選べるようにしたいと考えています。そのための目標として、初期環境を整えたあとは、検体と必要な情報を指定するだけで、解析からレポート・成果物の保存、VM の終了までを全自動で完了する仕組みを作っています。
01 ─ Overview
検体を渡すと、LLM が調査の方針を判断し、独自エージェントが VM を操作して情報を集め、
観測とコードを照合した考察をレポートにまとめます。
人が工程ごとに VM を手で操作する負担を減らし、解析からレポート生成までを一本につなぐツールです。
解析対象のファイルと
解析条件
LLM × 独自エージェントが
VM を操作
観測事実・推論・根拠・
不明点を整理
LLM が、次に何を調べるかを決め、取得した情報を読み取って照合・考察する。
独自エージェント が、LLM の指示を VM 内の具体的な操作や情報取得につなぎ、結果を返す。
考察は、実際に取得した 観測記録とコード情報 に結び付けてレポートに書く。
02 ─ Strengths
「判断して動く」「大量のログを推論に使える形にする」「根拠に結び付けて書く」。この 3 つが解析の自動化を支えています。
強み 01 Autonomous VM Operation
LLM を文章生成だけに使うのではなく、解析を進める判断役として使います。 独自エージェントが LLM の指示を VM 内の操作や情報取得につなぎ、結果を LLM へ返します。 スクロールで、その 1 周を追ってみましょう。
与えられた検体と解析条件、これまでに得た情報から、「次に何を確かめるべきか」を LLM が決めます。
MCP は、LLM がツールを使うための窓口です。判断した内容が、ツールの呼び出しとして送られます。
VM の外側(Host)で、Host agent が指示を受け取ります。内容に応じて、VM 内の OS agent と Ghidra agent に指令を送ります。
VM 内(Guest)では、OS agent が展開・準備・OS 操作を行い、Ghidra agent が関数などの解析情報を取得します。
取得した記録や解析情報は Host を経由して LLM に戻ります。人が VM を手で操作してコピーする必要はありません。
LLM は結果を読み取り、追加の調査や確認が必要かを判断します。このループを繰り返して、解析をレポートまで進めます。
手動の解析
工程ごとに人が VM を操作し、結果を取り出して読み、次の操作を考える。
r_AKanaly
判断は LLM、操作は独自エージェント。判断 → 操作 → 結果 → 判断 が自動でつながる。
強み 02 Log Compression for Reasoning
検体を実行すると、大量の動的解析ログが発生します。r_AKanaly はこれを、 解析に必要な情報を残した行動情報へ整理し、LLM の推論に活用します。
そのままでは量が多く、推論に使いにくい
子プロセスを生成し、コマンドを実行
一時フォルダへ実行ファイルを書き込み
自動起動に関わるキーへ値を設定
外部ホストへの接続を試行
LLM が行動を把握しやすい単位にまとまる
ファイル圧縮(ZIP など)
r_AKanaly のログ圧縮
検体の行動を把握する
何を実行し、何を書き込み、どこへ通信しようとしたか。
静的解析で調べる箇所を決める
観測した行動に関係しそうな処理を、Ghidra で重点的に調べる。
強み 03 Grounded Report
グラウンディングとは、説明や推論を実際に取得した情報に結び付けることです。
レポートの各記述が、どの観測記録・どの解析情報から導かれたのかをたどれます。
下のレポートの文にカーソルを合わせる(またはタップする)と、根拠が表示されます。
考察
FUN_00401a30 のレジストリ操作が、観測された書き込みに対応すると考えられる。
動的解析の観測記録
Process Create parent=sample.exe child=cmd.exeFile Write %TEMP%\a3f1.tmpReg SetValue HKCU\…\CurrentVersion\Run\updaterTCP Connect → 203.0.113.10:443 (failed)Ghidra の解析情報
FUN_00401a30 : RegSetValueExW を呼び出しFUN_00401a30 の呼び出し元 : FUN_00401200(初期化)FUN_00402c10 : 文字列を加工して接続処理へ渡す(引数未解決)動的解析や Ghidra で実際に確認できたこと。
観測事実とコード情報を照合して導いた考察。
その記述がどの記録・どの解析情報に基づくか。
今回の情報では確定できず、追加調査が必要なこと。
観測事実と推論を区別し、根拠をたどれるようにすることで、解析結果の検証と追加調査につなげられます。
03 ─ Architecture
Host 側が工程の制御や指示・結果の受け渡しを担い、Guest 側の VM 内で動的解析と Ghidra による静的解析を行います。 各要素をクリックすると役割が表示されます。
LLM
調査内容の判断、解析情報の読み取り、照合、考察、レポート内容の生成
独自エージェント
指示を具体的な操作や情報取得につなぎ、結果を返す
スクリプト
定型処理や工程の接続など、決められた処理の実行
VM と解析ツール
検体の実行・観測や、コード・関数などの情報取得を行う環境と手段
04 ─ Workflow
6 つの段階で解析を進めます。ただし調査には追加の情報取得や確認も含まれるため、一方向に一度ずつ進む固定処理ではありません。
対象のファイルと調査の前提を与えます。
VM 内で実行し、プロセスやファイル操作などの記録を収集します。
大量の記録を、LLM が推論に利用しやすい行動情報へまとめます。
Ghidra の関数や解析情報から、観測した行動に関係する処理などを調べます。
動的な観測とコードの情報を結び付け、何が起きたか、どの処理が関わるかを考察します。
観測事実、推論、根拠、不明点を整理します。
05 ─ Scope
ユーザーが解析環境・検体・解析条件を準備したあと、その後の工程を自動でつなぐことを目的としています。
ユーザーが準備
r_AKanaly が自動でつなぐ
※ 環境の初期構築や条件の指定と、指定後の解析工程の自動化は、別の範囲として扱っています。
06 ─ Input & Output
何を渡すと、途中で何が得られ、最後に何が手元に残るのか。
入力
解析の途中で得られるもの
最終成果物
GET r_AKanaly
配布状況・必要な環境・導入の流れは、ダウンロードページで案内しています。
Developer
r_k01m