9ith4b/malware-binary-analysis
GitHub: 9ith4b/malware-binary-analysis
面向 Claude Code 和 Codex 的恶意二进制分析 Skill,基于 IDA Pro 和 IDASQL 提供可恢复、证据驱动的多阶段分析流程。
Stars: 0 | Forks: 0
# Malware Binary Analysis Skill
面向 Claude Code 和 Codex 的恶意二进制分析 Skill。它以 IDA Pro + [IDASQL](https://github.com/allthingsida/idasql) 为主要分析环境,提供可恢复的功能遍历、证据管理、Payload 提取、多阶段执行建模和报告生成流程。
这个项目解决的不是“反编译一个入口函数”,而是如何在复杂、多文件、可能加壳或分阶段执行的恶意代码中,持续回答以下问题:
- 样本到底执行了哪些功能,是否仍有遗漏?
- 每项结论由哪段代码、哪个文件偏移或哪次工具输出支撑?
- 解密、解压、释放和注入产生的 Payload 之间是什么关系?
- Claude Code 与 Codex 如何在不依赖聊天记忆的情况下继续同一个 Case?
- 如何同时写出普通读者能理解、专业人员能复现的分析报告?
支持两个工作流:
- `analysis`:执行完整分析。
- `report`:根据已经记录的分析证据生成最终报告。
## 主要能力
- 从入口、函数、字符串、导入、导出、资源、回调和间接调用等视角交叉遍历程序功能。
- 使用工作队列和覆盖率门禁降低功能遗漏。
- 使用 `FACT`、`INFERENCE`、`HYPOTHESIS`、`REFUTED` 和证据定位降低幻觉。
- 将分析笔记、状态、IDASQL 查询结果和提取文件分开保存。
- 自动记录解密、解压、释放、下载、内存映射等 Payload 血缘关系。
- 将主样本、shellcode、DLL、释放文件和注入载荷组织为执行 Stage。
- 根据实际执行 Stage 顺序生成报告,而不是根据文件分析顺序生成报告。
- 使用分页上下文、工作项摘要和 Stage 摘要限制上下文膨胀。
- 支持 Claude Code 和 Codex 在不并发写入的前提下继续同一个分析 Case。
- 报告正文采用“做了什么 → 如何实现 → 紧邻代码截图”的连续叙事方式。
- 将密码、密钥材料、派生公式、边界标记、路径、命令和 C2 等关键常量写入正文。
- 使用 draw.io 生成可编辑的执行流程、攻击链和 Artifact 血缘图。
## 工作流概览
样本 / IDA 数据库
│
▼
IDASQL 身份确认与多视角发现
│
▼
工作队列 + 覆盖率门禁 + 证据记录
│
├── 解密 / 解压 / 释放 ──► Artifact 血缘图
│
└── 进程 / DLL / Shellcode 执行 ──► Stage 执行图
│
▼
按真实执行顺序生成分析报告
Artifact 表示不可变的文件或字节内容;Stage 表示某个 Artifact 在特定进程、入口和触发条件下的一次执行。二者分开建模,可以避免把“文件提取顺序”误写成“攻击执行顺序”。
## 目录结构
malware-binary-analysis/
├── SKILL.md
├── README.md
├── agents/
│ └── openai.yaml
├── assets/
│ ├── analysis-note-template.md
│ ├── report-template.md
│ ├── section-summary-template.md
│ └── stage-summary-template.md
├── references/
│ ├── agent-compatibility.md
│ ├── analysis-workflow.md
│ ├── context-management.md
│ ├── evidence-state-protocol.md
│ ├── idasql-workflow.md
│ ├── multi-stage-analysis.md
│ ├── payload-extraction.md
│ ├── report-workflow.md
│ └── report-writing-method.md
└── scripts/
├── case_manager.py
├── stage_graph.py
└── validate_compatibility.py
## 前置条件
### 创建和检查 Case
- Python 3.10 或更高版本。
- `case_manager.py`、`stage_graph.py` 和兼容性校验器仅使用 Python 标准库。
### 执行真实二进制分析
- IDA Pro 可从当前环境启动。
- [IDASQL](https://github.com/allthingsida/idasql) 已安装,且 `idasql --version` 执行成功。
- 推荐安装 [IDASQL Skills](https://github.com/allthingsida/idasql-skills)。
- 需要反编译结果时,应具有可用的 Hex-Rays Decompiler。
- 报告需要绘图时,应配置 draw.io 工具、MCP 服务或经过授权的本地 CLI。
如果 IDA 或 IDASQL 不可用,Agent 只能初始化和检查 Case,不能把可执行 Stage 标记为已经分析。
不要在宿主机直接运行未知样本。动态执行、调试、仿真或引爆必须位于经过明确授权的隔离环境中。
## 安全边界
- 默认优先静态分析,不会自动运行、调试或引爆未知样本。
- 未经明确授权,不会把样本、哈希或提取内容上传到第三方服务。
- 如果 IDA 或 IDASQL 不可用,只允许创建或检查 Case,不能把可执行 Stage 标记为分析完成。
- 动态执行必须由用户明确授权,并在隔离环境中进行。
- 同一个 `case-root` 同一时间只允许一个 Agent 写入,避免状态和证据互相覆盖。
## 安装
本 Skill 对 Claude Code 和 Codex 使用同一个目录。开发期间推荐通过目录链接安装,避免两份副本逐渐不一致。
先克隆仓库:
git clone https://github.com/9ith4b/malware-binary-analysis.git
cd malware-binary-analysis
### Windows:同时安装到 Claude Code 和 Codex
在 PowerShell 中执行。修改 `$SkillSource`,使其指向本 Skill 的实际目录。目标目录必须尚不存在。
$SkillSource = (Resolve-Path ".").Path
$ClaudeSkills = Join-Path $env:USERPROFILE ".claude\skills"
$CodexBase = if ($env:CODEX_HOME) {
$env:CODEX_HOME
} else {
Join-Path $env:USERPROFILE ".codex"
}
$CodexSkills = Join-Path $CodexBase "skills"
New-Item -ItemType Directory -Force -Path $ClaudeSkills | Out-Null
New-Item -ItemType Directory -Force -Path $CodexSkills | Out-Null
New-Item -ItemType Junction `
-Path (Join-Path $ClaudeSkills "malware-binary-analysis") `
-Target $SkillSource
New-Item -ItemType Junction `
-Path (Join-Path $CodexSkills "malware-binary-analysis") `
-Target $SkillSource
### Linux/macOS:同时安装到 Claude Code 和 Codex
将 `/absolute/path/malware-binary-analysis` 替换为 Skill 的绝对路径:
SKILL_SOURCE="/absolute/path/malware-binary-analysis"
CODEX_SKILLS="${CODEX_HOME:-$HOME/.codex}/skills"
mkdir -p "$HOME/.claude/skills" "$CODEX_SKILLS"
ln -s "$SKILL_SOURCE" "$HOME/.claude/skills/malware-binary-analysis"
ln -s "$SKILL_SOURCE" "$CODEX_SKILLS/malware-binary-analysis"
### Claude Code 项目级安装
如果只希望当前项目使用该 Skill,可将整个目录复制或链接到:
/.claude/skills/malware-binary-analysis/
该目录内必须直接包含 `SKILL.md`:
/.claude/skills/malware-binary-analysis/SKILL.md
Claude Code 官方支持项目级 `.claude/skills/` 和个人级 `~/.claude/skills/` Skill。
### 使用复制方式安装
也可以把完整目录复制到对应的 `skills` 目录。复制时必须保留 `SKILL.md`、`scripts/`、`references/`、`assets/` 和 `agents/`。
复制安装后,每次更新都要完整替换两边的安装副本。不要只复制 `SKILL.md`。
## 安装验证
从 Skill 源目录执行:
python .\scripts\validate_compatibility.py --skill-root .
python .\scripts\case_manager.py --help
python .\scripts\stage_graph.py --help
idasql --version
Linux/macOS 可使用:
python3 ./scripts/validate_compatibility.py --skill-root .
python3 ./scripts/case_manager.py --help
python3 ./scripts/stage_graph.py --help
idasql --version
兼容性校验成功时会输出:
{
"valid": true,
"targets": [
"claude-code",
"codex"
],
"errors": []
}
安装完成后启动一个新的 Claude Code 或 Codex 会话。如果 Claude Code 会话启动时还不存在顶层 `.claude/skills` 目录,应重启 Claude Code。
## 使用方法
### 快速开始
分析一个新样本:
Claude Code: /malware-binary-analysis analysis [case-root]
Codex: $malware-binary-analysis analysis [case-root]
从已经闭环的 Case 生成报告:
Claude Code: /malware-binary-analysis report
Codex: $malware-binary-analysis report
### 使用 Claude Code 分析样本
/malware-binary-analysis analysis "D:\samples\suspicious.exe" "D:\cases\suspicious"
### 使用 Codex 分析样本
$malware-binary-analysis analysis "D:\samples\suspicious.exe" "D:\cases\suspicious"
`case-root` 用于保存整个分析任务。如果目录中已经存在有效状态,Agent 会恢复现有分析,而不是重新开始。
### 使用 Claude Code 生成报告
/malware-binary-analysis report "D:\cases\suspicious"
### 使用 Codex 生成报告
$malware-binary-analysis report "D:\cases\suspicious"
报告只能根据 `analysis_raw/` 中已经保存的证据生成。状态文件可以证明覆盖情况,但不能代替报告证据。
## IDASQL 连接方式
Skill 支持 IDASQL CLI、本地 HTTP、MCP 和 IDA GUI 插件方式。
### Headless CLI
idasql -s ...
### 交互式 CLI
idasql -s -i
### HTTP
idasql -s --http
### MCP
idasql -s --mcp
连接后,Agent 会先查询 `binary` 表确认当前 IDA 数据库身份,并在不确定表结构时使用 `PRAGMA table_xinfo(...)`,不会猜测 IDASQL 字段。
每个可执行 Artifact 都必须关联独立、可识别的 IDA 数据库。shellcode 还需要记录架构、入口偏移、假定加载基址和映射方式。
## Case 输出
典型分析 Case:
/
├── analysis_raw/
│ ├── *.md
│ └── idasql/
│ ├── queries/
│ └── results/
├── analysis_state/
│ ├── state.json
│ ├── coverage.md
│ ├── artifacts/
│ ├── stages/
│ ├── relationships/
│ └── stage_summaries/
├── analysis_extract/
└── analysis_report/
├── report.md
└── figures/
- `analysis_raw/`:分析笔记、IDASQL 查询、结果和其他中间证据。
- `analysis_state/`:工作队列、覆盖率、Artifact、Stage 和执行关系。
- `analysis_extract/`:从样本中提取或重构的 Payload。
- `analysis_report/`:最终报告、代码截图和 draw.io 图形。
## 报告写作方法
最终报告同时服务两类读者:
- 普通读者不查看反编译代码,也能通过正文理解样本做了什么、攻击如何展开以及可能造成什么影响。
- 逆向分析人员可以根据 Artifact、Stage、IDB、函数地址、实现顺序和紧邻截图快速复现结论。
每个详细行为小节遵循同一顺序:
1. 先用自然语言说明功能和影响。
2. 顺着功能描述解释代码如何实现,包括触发条件、输入来源、解析或解密过程、关键分支、API/指令链、输出和失败路径。
3. 在常量真正影响行为的位置写出密码、种子、实际密钥派生公式、标记、路径、命令、端口、时间间隔或 IOCTL。
4. 紧接着放置能够支撑这段说明的 IDA 代码截图。
5. 图片标题写明它证明的结论,并标注 Artifact、Stage、IDB、函数名和 VA/RVA。
正文在隐藏全部截图后仍应完整可读;专业人员只查看实现语句、截图、标题和地址时仍应能够复现。详细规范见 [`references/report-writing-method.md`](references/report-writing-method.md)。
报告所需流程图或攻击链图必须保留可编辑的 `.drawio` 源文件,并将 PNG/SVG 导出到 `analysis_report/figures/`。图中保持颜色、形状和方向一致,避免文字溢出与连线交叉。
## 分析恢复和跨 Agent 交接
Claude Code 和 Codex 可以继续同一个 Case,但不能同时写入同一个 `case-root`。
切换 Agent 前:
1. 完成或明确延期当前工作项。
2. 保存分析笔记、摘要、证据 ID 和报告标签。
3. 保存并重新查询 IDASQL 中的重命名、注释和类型修改。
4. 执行 Case 和 Stage 图的 `status`。
5. 执行当前图版本的校验。
切换后,只需把 `case-root` 交给另一个 Agent。接收方应从状态文件和确定性工作队列恢复,不应依赖上一段聊天记录。
## 手动状态检查
将 `` 和 `` 替换为实际路径:
python "/scripts/case_manager.py" status --case-root ""
python "/scripts/case_manager.py" next-item --case-root ""
python "/scripts/stage_graph.py" status --case-root ""
python "/scripts/stage_graph.py" validate --case-root "" --mode analysis
python "/scripts/case_manager.py" validate --case-root "" --mode analysis
报告前执行:
python "/scripts/stage_graph.py" validate --case-root "" --mode report
python "/scripts/case_manager.py" validate --case-root "" --mode report
## 常见问题
### Skill 没有被 Claude Code 发现
- 确认路径为 `.claude/skills/malware-binary-analysis/SKILL.md` 或 `~/.claude/skills/malware-binary-analysis/SKILL.md`。
- 确认没有多嵌套一层同名目录。
- 如果 `.claude/skills` 是会话启动后才创建的,重启 Claude Code。
- 直接输入 `/malware-binary-analysis` 检查是否能够调用。
### Skill 没有被 Codex 发现
- 确认路径为 `$CODEX_HOME/skills/malware-binary-analysis/SKILL.md`。
- 未设置 `CODEX_HOME` 时,检查 `~/.codex/skills/malware-binary-analysis/SKILL.md`。
- 确认整个 Skill 目录都已安装,而不是只有 `SKILL.md`。
- 启动新的 Codex 会话后再次调用。
### 找不到 Python
依次尝试:
python3
python
py -3
使用能够运行 `scripts/case_manager.py --help` 的 Python 3.10+ 解释器。
### 找不到 IDASQL
- 确认 IDA Pro 已正确安装。
- 确认 IDASQL 位于其要求的安装位置。
- 执行 `idasql --version`。
- 如果仅缺少 IDASQL,Case 可以初始化,但可执行 Stage 不能通过完成校验。
### 报告无法通过校验
常见原因:
- 仍有未分析或未延期的工作项;
- 没有完成苏格拉底式问题闭环;
- 可执行 Artifact 没有关联 IDA 数据库;
- Stage 没有摘要、原始笔记或证据;
- Stage 图在最后一次修改后没有重新校验;
- 报告中仍存在未填写的模板占位符;
- 缺少主题摘要或 draw.io 图形。
## 进一步文档
- [Skill 核心约束](SKILL.md)
- [Claude Code/Codex 兼容规范](references/agent-compatibility.md)
- [IDASQL 工作流](references/idasql-workflow.md)
- [完整分析流程](references/analysis-workflow.md)
- [证据和状态协议](references/evidence-state-protocol.md)
- [上下文管理](references/context-management.md)
- [多阶段分析](references/multi-stage-analysis.md)
- [Payload 提取](references/payload-extraction.md)
- [报告流程](references/report-workflow.md)
- [报告写作方法](references/report-writing-method.md)
标签:AI辅助分析, Claude Code, DAST, DNS 反向解析, IDA Pro, 云资产清单, 恶意软件分析, 网络信息收集, 自动化分析, 跨站脚本, 逆向工具, 逆向工程