マルウェア静的・動的解析 Skill
目的
Windowsマルウェアを特定のMalware Familyの既知情報に依存せず、
静的解析 → 挙動仮説の構築 → 動的確認対象の選定 → Runtime観測 → 静的・動的証拠の統合 → 最終レポート
まで一貫して解析する。
ユーザーから一回の解析依頼を受けた場合、 各Phaseごとに確認を求めず、可能な範囲で最後まで完走する。
最重要原則
以下を必ず守る。
- 推測を観測事実として記載しない。
- 外部Malware Familyラベルをground truthとして扱わない。
- API名や文字列が存在するだけで、その挙動を実行済みと判断しない。
- Static VAとRuntime VAを同一視しない。
- ツールの存在確認だけで解析を終了しない。
- Debuggerが利用できなくても静的解析と最終レポートは完了する。
- 対象検体をKali上で実行しない。
- 隔離環境のネットワーク設定を変更しない。
解析対象の固定
ユーザーが対象ファイル名を指定している場合、そのProgramだけを解析対象とする。
複数ProgramがGhidraで開いていても、 明示されていないProgramへ勝手に解析対象を広げない。
ただし対象Programが別DLL・EXEを参照している場合、
- ファイル名
- Import関係
- LoadLibrary関係
- Export/Ordinal参照
などの関係性は記録してよい。
参照先Programそのものの内部解析は、 ユーザーが明示的に要求している場合のみ行う。
Ghidra MCP開始時
まず references/ghidra-mcp.md に従う。
Ghidra MCPがすでに対象instanceへ接続済みの場合、
原則として connect_instance を再実行しない。
最初に、利用可能なら以下を実際に呼び出す。
- list_open_programs
- 対象Programへのswitch
- get_current_program_info
- get_metadata
search_tools や check_tools による存在確認だけで
解析成功と判断してはいけない。
必要なツール名が不明な場合のみ search_tools を使う。
解析フロー
Phase 1: 安全確認
読む:
references/safety.md
解析環境が安全条件を満たさない場合、 危険な操作を避け、実施可能な静的解析だけを行う。
Phase 2: 静的解析
必ず読む:
references/static-analysis.mdreferences/evidence-model.md
対象がDLL、またはDLLロードが重要な場合は追加で読む:
references/pe-dll-analysis.md
Network関連処理が確認された場合:
references/network-analysis.md
Packing / runtime decode / self-modifying behaviorが疑われる場合:
references/unpacking-analysis.md
Phase 3: 仮説形成
静的解析から、動的確認する価値が最も高い処理を最大3個選ぶ。
大量のBreakpoint候補を並べない。
候補ごとに最低限以下を記録する。
- Function
- Static VA
- Static ImageBase
- RVA
- 観測したい仮説
- Runtimeで確認すべき値
Phase 4: 動的解析
読む:
references/dynamic-analysis.mdreferences/ghidra-mcp.mdreferences/safety.md
Debuggerが利用できる場合のみ実施する。
Debuggerを使用できない場合は、
DYNAMIC_NOT_EXECUTED
として静的解析を継続し、最終レポートを出す。
証拠分類
全ての重要結論を以下のいずれかとして扱う。
- OBSERVED_STATIC
- OBSERVED_RUNTIME
- INFERRED
- EXTERNAL
- UNKNOWN
詳細は references/evidence-model.md に従う。
一回の依頼で完走する
次の理由だけで途中終了してはいけない。
- 一部ツールが見つからない
- Debuggerがdetached
- C2接続に失敗した
- 対象文字列が見つからない
- 外部情報が不足している
実施可能な範囲で、
静的解析 → 仮説 → 動的解析候補 → 可能ならRuntime確認 → 証拠統合 → 最終レポート
まで進める。
ただし以下の場合は停止してよい。
- 対象Programそのものが存在しない
- 対象ファイルを識別できない
- 安全条件に反する操作しか残っていない
- 実行対象を誤認する可能性が高い
最終レポート
原則として次の構成で出力する。
- Executive Summary
- Sample Information
- PE Structure
- Entry Point / Main Execution Flow
- Imports / API Resolution
- Important Strings
- Major Functions
- DLL Loading
- Network Behavior
- Process / Session Behavior
- Memory Behavior
- File / Registry / IPC
- Persistence
- Decode / Crypto / Configuration
- Anti-analysis / Packing
- Dynamic Analysis Findings
- Evidence Table
- Confirmed Findings
- Inferred Findings
- Unknown / Not Verified
- 次に解析すべき場所
Evidence Tableには最低限以下を含める。
| Finding | Evidence class | Program | Function/address | Evidence | Confidence |
|---|
Confidenceは原則として、
- HIGH
- MEDIUM
- LOW
を使用する。