# Malware Re Analysis Ja

> GhidraおよびGhidra MCPを使用してWindowsマルウェアを日本語で 静的解析・動的解析するときに使用する汎用リバースエンジニアリングSkill。 PE/EXE/DLL、DLL side-loading、packing/unpacking、configuration decode、 C2、process、memory、registry、file、IPC、persistence、anti-analysis、 debuggerによるruntime確認を対象とする。

- Skill: `str-sa1t0/malware-re-analysis-ja-2` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add str-sa1t0/malware-re-analysis-ja-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/str-sa1t0/malware-re-analysis-ja-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: str-sa1t0 (https://skillmd.com/u/str-sa1t0)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/str-sa1t0/malware-re-analysis-ja-2

---


# マルウェア静的・動的解析 Skill

## 目的

Windowsマルウェアを特定のMalware Familyの既知情報に依存せず、

静的解析
→ 挙動仮説の構築
→ 動的確認対象の選定
→ Runtime観測
→ 静的・動的証拠の統合
→ 最終レポート

まで一貫して解析する。

ユーザーから一回の解析依頼を受けた場合、
各Phaseごとに確認を求めず、可能な範囲で最後まで完走する。

## 最重要原則

以下を必ず守る。

1. 推測を観測事実として記載しない。
2. 外部Malware Familyラベルをground truthとして扱わない。
3. API名や文字列が存在するだけで、その挙動を実行済みと判断しない。
4. Static VAとRuntime VAを同一視しない。
5. ツールの存在確認だけで解析を終了しない。
6. Debuggerが利用できなくても静的解析と最終レポートは完了する。
7. 対象検体をKali上で実行しない。
8. 隔離環境のネットワーク設定を変更しない。

## 解析対象の固定

ユーザーが対象ファイル名を指定している場合、そのProgramだけを解析対象とする。

複数ProgramがGhidraで開いていても、
明示されていないProgramへ勝手に解析対象を広げない。

ただし対象Programが別DLL・EXEを参照している場合、

- ファイル名
- Import関係
- LoadLibrary関係
- Export/Ordinal参照

などの関係性は記録してよい。

参照先Programそのものの内部解析は、
ユーザーが明示的に要求している場合のみ行う。

## Ghidra MCP開始時

まず `references/ghidra-mcp.md` に従う。

Ghidra MCPがすでに対象instanceへ接続済みの場合、
原則として `connect_instance` を再実行しない。

最初に、利用可能なら以下を実際に呼び出す。

1. list_open_programs
2. 対象Programへのswitch
3. get_current_program_info
4. get_metadata

`search_tools` や `check_tools` による存在確認だけで
解析成功と判断してはいけない。

必要なツール名が不明な場合のみ `search_tools` を使う。

## 解析フロー

### Phase 1: 安全確認

読む:

- `references/safety.md`

解析環境が安全条件を満たさない場合、
危険な操作を避け、実施可能な静的解析だけを行う。

### Phase 2: 静的解析

必ず読む:

- `references/static-analysis.md`
- `references/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.md`
- `references/ghidra-mcp.md`
- `references/safety.md`

Debuggerが利用できる場合のみ実施する。

Debuggerを使用できない場合は、

DYNAMIC_NOT_EXECUTED

として静的解析を継続し、最終レポートを出す。

## 証拠分類

全ての重要結論を以下のいずれかとして扱う。

- OBSERVED_STATIC
- OBSERVED_RUNTIME
- INFERRED
- EXTERNAL
- UNKNOWN

詳細は `references/evidence-model.md` に従う。

## 一回の依頼で完走する

次の理由だけで途中終了してはいけない。

- 一部ツールが見つからない
- Debuggerがdetached
- C2接続に失敗した
- 対象文字列が見つからない
- 外部情報が不足している

実施可能な範囲で、

静的解析
→ 仮説
→ 動的解析候補
→ 可能ならRuntime確認
→ 証拠統合
→ 最終レポート

まで進める。

ただし以下の場合は停止してよい。

- 対象Programそのものが存在しない
- 対象ファイルを識別できない
- 安全条件に反する操作しか残っていない
- 実行対象を誤認する可能性が高い

## 最終レポート

原則として次の構成で出力する。

1. Executive Summary
2. Sample Information
3. PE Structure
4. Entry Point / Main Execution Flow
5. Imports / API Resolution
6. Important Strings
7. Major Functions
8. DLL Loading
9. Network Behavior
10. Process / Session Behavior
11. Memory Behavior
12. File / Registry / IPC
13. Persistence
14. Decode / Crypto / Configuration
15. Anti-analysis / Packing
16. Dynamic Analysis Findings
17. Evidence Table
18. Confirmed Findings
19. Inferred Findings
20. Unknown / Not Verified
21. 次に解析すべき場所

Evidence Tableには最低限以下を含める。

| Finding | Evidence class | Program | Function/address | Evidence | Confidence |
|---|---|---|---|---|---|

Confidenceは原則として、

- HIGH
- MEDIUM
- LOW

を使用する。

