Rootless-Ghost/HuntForge
GitHub: Rootless-Ghost/HuntForge
MITRE ATT&CK 威胁狩猎剧本生成器,离线提供多平台检测查询与工件模板。
Stars: 0 | Forks: 0
# HuntForge
**威胁狩猎剧本生成器** — Nebula Forge 套件的一部分。
输入 MITRE ATT&CK 技术 ID → 输出完整的分析师可用狩猎剧本,包含多平台检测查询、预期工件与 MITRE 上下文。**完全离线** — 无需互联网连接。
## 功能特性
- **MITRE ATT&CK 覆盖** — 内置数据集覆盖所有 10 个主要战术(初始访问、执行、持久化、权限提升、防御规避、发现、横向移动、收集、命令与控制、渗出)中的 60+ 种技术
- **多平台查询** — 为每种技术生成 Splunk SPL、Wazuh/Elasticsearch JSON、Sigma YAML、KQL(Microsoft Sentinel)
- **狩猎假设** — 针对你的环境与可用日志来源进行范围限制的叙述性假设
- **工件** — 事件 ID、日志来源、字段名、进程名、注册表键、命令模式
- **MITRE 上下文** — 子技术、相关技术、检测说明、ATT&CK 链接
- **置信度评分** — 1–10 分,可根据可用日志来源调整
- **日志来源建议** — 必需/推荐/可选来源及其说明
- **剧本库** — 保存、浏览、筛选并导出所有生成的剧本
- **导出** — Markdown 与 JSON 格式导出每个剧本
- **LogNorm 集成** — `/api/enrich` 接受 ECS-lite 事件并推荐狩猎剧本
- **CLI** — 完整的命令行接口,支持管道与自动化使用
## 快速开始
```
# 安装依赖
pip install -r requirements.txt
# 复制并可选编辑配置
cp config.example.yaml config.yaml
# 启动 Web 服务器
python app.py
```
打开 [http://127.0.0.1:5007](http://127.0.0.1:5007)
## CLI 使用
```
# 生成剧本(Markdown 输出)
python cli.py --technique T1059.001 --env windows --sources sysmon,wazuh
# 保存到文件
python cli.py --technique T1059.001 --output playbook.md
# JSON 格式
python cli.py --technique T1059.001 --format json --output playbook.json
# 搜索技术
python cli.py --search powershell
python cli.py --search "lateral movement"
# 列出所有技术(可选按战术过滤)
python cli.py --list
python cli.py --list --tactic Execution
# 列出所有战术
python cli.py --list-tactics
```
## API 参考
### 健康检查
```
GET /api/health
→ {"status": "ok", "tool": "huntforge", "version": "1.0.0"}
```
### 生成剧本
```
POST /api/playbook/generate
Content-Type: application/json
{
"technique_id": "T1059.001",
"context": {
"environment": "windows",
"log_sources": ["sysmon", "wazuh", "splunk"]
},
"output_format": "json",
"save": true
}
```
### 列出剧本
```
GET /api/playbooks?page=1&per_page=25&tactic=Execution&search=powershell
```
### 获取剧本
```
GET /api/playbook/
DELETE /api/playbook/
```
### 导出剧本
```
GET /api/playbook//export?format=json
GET /api/playbook//export?format=markdown
```
### 技术搜索
```
GET /api/techniques?q=powershell
GET /api/techniques?tactic=Execution
GET /api/technique/T1059.001
```
### LogNorm 增强
```
POST /api/enrich
Body: {"events": [...ECS-lite events from LogNorm...]}
→ {"suggestions": [...hunt playbook suggestions...]}
```
## 剧本结构
每个生成的剧本包含:
| 章节 | 内容 |
|------|------|
| **元数据** | 技术 ID、名称、战术、描述 |
| **狩猎假设** | 叙述 — 对手正在做什么以及原因 |
| **查询** | Splunk SPL、Wazuh JSON、Sigma YAML、KQL(Sentinel) |
| **工件** | 事件 ID、字段名、进程、注册表键、网络端口 |
| **MITRE 上下文** | 子技术、相关技术、ATT&CK 链接、检测说明 |
| **日志来源** | 必需 / 推荐 / 可选来源及理由 |
| **置信度** | 分数 1–10、覆盖率、标签及理由 |
## MITRE 覆盖范围
| 战术 | 覆盖技术 |
|------|----------|
| 初始访问 | T1566、T1566.001、T1566.002、T1190、T1133、T1078 |
| 执行 | T1059、T1059.001、T1059.003、T1059.005、T1047、T1053.005 |
| 持久化 | T1547.001、T1543.003、T1136.001、T1505.003 |
| 权限提升 | T1548.002、T1055、T1068 |
| 防御规避 | T1070.001、T1027、T1562.001、T1036、T1218.011 |
| 凭据访问 | T1003.001、T1110.003 |
| 发现 | T1082、T1087.001、T1046、T1016、T1057、T1135、T1069.002 |
| 横向移动 | T1021.001、T1021.002、T1550.002 |
| 收集 | T1005、T1056.001、T1560 |
| 命令与控制 | T1071.001、T1071.004、T1105、T1572 |
| 渗出 | T1041、T1048、T1567、T1020 |
## Nebula Forge 集成
HuntForge 在 **5007** 端口运行并集成:
- **LogNorm**(5006)— 通过 `/api/enrich` 接受 ECS-lite 事件以提供上下文感知的剧本建议
- **Nebula Dashboard**(5010)— 注册为工具卡片
在 `nebula-dashboard/config.yaml` 中注册:
```
tools:
huntforge:
label: "HuntForge"
url: "http://127.0.0.1:5007"
health_path: "/api/health"
description: "MITRE ATT&CK threat hunt playbook generator"
category: "Detection"
```
## 项目结构
```
HuntForge/
├── core/
│ ├── engine.py # Playbook generation engine
│ ├── mitre_data.py # Embedded MITRE ATT&CK dataset (offline)
│ ├── query_builder.py # Splunk / Wazuh / Sigma / KQL generators
│ └── storage.py # SQLite persistence layer
├── templates/
│ ├── base.html # Layout + sidebar
│ ├── index.html # Generator page
│ ├── playbook.html # Playbook detail view
│ └── library.html # Saved playbooks browser
├── static/
│ ├── css/style.css # Dark theme (Nebula Forge suite)
│ └── js/main.js # Frontend logic
├── output/ # Exported playbooks
├── app.py # Flask application
├── cli.py # Command-line interface
├── requirements.txt
├── config.example.yaml
└── README.md
```
## 许可证
本项目采用 MIT License 授权 — 详细信息请参见 [LICENSE](LICENSE) 文件。
由 [Rootless-Ghost](https://github.com/Rootless-Ghost) 构建
属于 **Nebula Forge** 安全工具套件的一部分。
标签:ATT&CK链接, CLI命令行, Cloudflare, ECS-lite, Elasticsearch, KQL, Microsoft Sentinel, MITRE ATT&CK, Nebula Forge, Wazuh, Web界面, 事件ID, 多平台查询, 威胁情报, 子技术, 安全运营, 导出JSON, 导出Markdown, 工件, 开发者工具, 扫描框架, 文档结构分析, 日志来源, 日志规范化, 检测假设, 狩猎剧本生成器, 相关技术, 离线工具, 置信度评分, 逆向工具