alancontreras-mx/haak-anvil
GitHub: alancontreras-mx/haak-anvil
一款现代 Python 构建的渗透测试报告生成器,可将 Nmap、Nessus 等多种扫描工具的原始输出转化为统一、专业的多格式报告,并支持项目范围管理与 CVE/CWE 丰富化。
Stars: 0 | Forks: 0
# Haak Anvil
[](LICENSE)
[](https://www.python.org)
[]()
**Haak Anvil** 可将原始扫描器输出(Nmap、Nessus,以及更多即将支持的格式)转化为
**专业的、多格式的渗透测试报告**,包含一致的严重性评分、
项目范围元数据、CVE/CWE 丰富化,以及可直接发送给客户的模板。
专为交付**真实测试项目**而非仅包含项目符号的 PDF 的
进攻性安全团队而构建。
## 为什么还需要另一个报告工具?
现有工具要么:
- 仅输出 Excel,缺乏项目背景信息。
- 硬编码单一工具的格式,在您更换扫描器时就会失效。
- 是无人维护的 Python 2 遗留代码。
- 将所有功能隐藏在 SaaS 付费墙之后。
Haak Anvil 则是:
- **现代 Python 3.10+**(带有类型提示、pydantic v2、支持异步)。
- **多工具优先**:目前支持 Nmap 和 Nessus,接下来将支持 Burp / Nuclei / ZAP / sqlmap / Subfinder。
- **多格式输出**:JSON(机器可读)、Markdown(人类可读)、HTML(面向客户),即将支持 PDF + DOCX。
- **项目范围限定**:每份报告都关联到一个由 YAML 定义的测试项目(客户、范围、日期、方法论、分析师)。
- **支持 CVE/CWE**:从标签字段和自由文本中提取 ID,为 NVD/EPSS 丰富化做好准备 (v0.2)。
- **Apache 2.0 许可证**:可商用,无任何附加义务。
## 快速开始
```
git clone https://github.com/alancontreras-mx/haak-anvil.git
cd haak-anvil
python -m pip install -e .
```
### 解析 Nmap 扫描并生成 HTML
```
nmap -sV -oX out.xml 10.0.0.0/24
haak-anvil nmap out.xml --format html --output report.html
```
### 解析 Nessus 导出文件
```
haak-anvil nessus client.nessus --format md --output report.md
```
### 范围限定的测试项目
创建 `engagement.yaml`:
```
id: HK-2026-001
client:
name: Acme Corp
contact: ciso@acme.example
scope: "External perimeter + corporate WLAN"
methodology: PTES
period:
start: 2026-05-10
end: 2026-05-20
analyst: Alan Contreras
language: es-MX
```
然后执行:
```
haak-anvil nmap out.xml -e engagement.yaml -f html -o reports/
haak-anvil nessus client.nessus -e engagement.yaml -f json -o reports/
```
### 合并多工具结果
```
haak-anvil nmap out.xml -e engagement.yaml -f json -o reports/nmap.json
haak-anvil nessus client.nessus -e engagement.yaml -f json -o reports/nessus.json
haak-anvil merge reports/nmap.json reports/nessus.json -e engagement.yaml -f html -o reports/final.html
```
## 架构
```
haak_anvil/
├── core/ # Engagement, Asset, Port, Finding, CVSS, Severity, ReportBundle
├── parsers/ # ParserBase + nmap, nessus (burp, nuclei, zap, sqlmap... v0.2)
├── renderers/ # RendererBase + json, markdown, html (pdf, docx... v0.2)
├── enrichers/ # CVE/EPSS enrichment via NVD 2.0 API (stub v0.1, full v0.2)
├── templates/ # Jinja2 HTML templates
└── cli.py # Typer CLI
```
每个解析器都将特定工具的输出映射为一个统一的 `ReportBundle`。每个
渲染器则消费一个 `ReportBundle` 并输出某种格式。添加一个新工具只需要一个
约 150 行代码的模块,继承自 `ParserBase`。
## 支持的工具 (v0.1)
| 工具 | 状态 | 备注 |
|-------------|--------|----------------------------------------------------|
| Nmap | ✅ | XML 输出 (`-oX`);已测试 7.x 版本 |
| Nessus | ✅ | `.nessus` v2 导出;优先使用 CVSS v3 而非 v2 |
| Burp Suite | 🚧 v0.2 | XML 导出 |
| Nuclei | 🚧 v0.2 | JSONL 输出 |
| OWASP ZAP | 🚧 v0.2 | JSON/XML 报告 |
| sqlmap | 🚧 v0.2 | 输出目录解析 |
| Subfinder | 🚧 v0.2 | JSON 输出 |
| Gowitness | 🚧 v0.2 | SQLite 资产丰富化 |
## 输出格式 (v0.1)
| 格式 | 状态 | 用例 |
|-------------|--------|-------------------------------------------|
| JSON | ✅ | 机器摄取 (TheHive, SIEM, 自定义) |
| Markdown | ✅ | GitHub 维基,内部文档 |
| HTML | ✅ | 客户交付物 (Tailwind CDN,单文件) |
| PDF | 🚧 v0.2 | 可打印,WeasyPrint |
| DOCX | 🚧 v0.2 | 可编辑的客户交付件 |
## 路线图
- **v0.2** (目标 Q3-2026):Burp + Nuclei + ZAP + sqlmap 解析器,CVE/EPSS 丰富化,PDF + DOCX 渲染器,HTML 模板变体。
- **v0.3**:可选的 FastAPI + HTMX Web UI,通过入口点实现的插件系统,多语言报告模板 (es-MX / en-US / pt-BR)。
- **v0.4**:AI 驱动的执行摘要 (Claude API),TheHive / Wazuh / MISP 推送集成,证据链签名 (Ed25519)。
有关完整的发布历史,请参阅 [CHANGELOG.md](CHANGELOG.md)。
## 开发
```
python -m pip install -e ".[dev]"
ruff check src tests
pytest --cov=haak_anvil --cov-report=term-missing
```
欢迎提交 PR。如果是重大更改,请先开一个 Issue。
## 许可证
Apache License 2.0。详见 [LICENSE](LICENSE)。
## 作者
**Alan Contreras** — 首席执行官兼联合创始人,[Haak Cybersecurity Consulting](https://haak.com.mx)
墨西哥 · [contacto@haak.com.mx](mailto:contacto@haak.com.mx) · [LinkedIn](https://mx.linkedin.com/in/alan-contreras-)
秉承渗透测试报告工具 (dradis-ce, faraday-ng, secutils) 的传统,
针对 2026 年的工作流使用现代 Python 从头构建。
标签:CVE, HTML, JSON, Markdown, Nessus, Nmap, PTES, Pydantic, Python, Web安全, 元数据管理, 反取证, 多格式输出, 安全测试, 安全评估, 开源安全工具, 异步, 报告生成器, 攻击性安全, 数字签名, 数据展示, 无后门, 类型提示, 红队, 网络安全, 自动化报告, 蓝队分析, 虚拟驱动器, 逆向工程平台, 隐私保护