AshtonVaughan/bountyhound
GitHub: AshtonVaughan/bountyhound
BountyHound 是一个集成 Claude Code 的统一安全测试框架,通过 MCP 协议统一调度 Nuclei、SQLMap、Nmap、Ffuf、Amass 等工具实现自动化漏洞扫描与网络侦察。
Stars: 0 | Forks: 0
# BountyHound 安全工具套件
**集成 Claude 的统一安全测试框架,包含 6 种高级工具。**
用于自动化漏洞扫描、漏洞利用测试、网络侦察和安全分析的完整系统——所有这些都可以通过 Claude Code 进行控制。
## 架构概述
```
Claude Code
↓
MCP Unified Server (mcp-unified-server/)
├── ↓ HTTP
├─→ Nuclei (8188) — Template-based vuln scanning
├─→ SQLMap (8189) — SQL injection testing
├─→ Nmap (8190) — Network reconnaissance
├─→ Ffuf (8191) — Web fuzzing
└─→ Amass (8192) — Subdomain enumeration
```
每个工具都作为独立的 FastAPI 服务器运行,并带有后台任务处理。
## 工具
### Nuclei (`nuclei-claude/`)
**基于模板的漏洞扫描**
- 根据精选的 Nuclei 模板扫描 URL
- 按严重程度、标签、模板进行过滤
- 端口:`8188`
**MCP 工具**:
- `nuclei_scan(urls, templates, severity)` — 开始扫描
- `nuclei_status(job_id)` — 获取结果
- `nuclei_cancel(job_id)` — 取消任务
- `nuclei_server_status()` — 服务器统计信息
### SQLMap (`sqlmap-claude/`)
**SQL 注入测试与利用**
- 自动化 SQL 注入检测
- 支持多种注入类型
- 检测级别和风险控制
- 端口:`8189`
**MCP 工具**:
- `sqlmap_test(url, method, data, level, risk)` — 开始测试
- `sqlmap_status(job_id)` — 获取发现结果
- `sqlmap_cancel(job_id)` — 取消任务
- `sqlmap_server_status()` — 服务器统计信息
### Nmap (`nmap-claude/`)
**网络侦察与端口扫描**
- 服务版本检测
- 多种扫描类型(SYN, TCP, UDP)
- 指定端口范围
- 解析 XML 以获取结构化结果
- 端口:`8190`
**MCP 工具**:
- `nmap_scan(targets, ports, scan_type, aggressive)` — 开始扫描
- `nmap_status(job_id)` — 获取开放端口
- `nmap_cancel(job_id)` — 取消任务
- `nmap_server_status()` — 服务器统计信息
### Ffuf (`ffuf-claude/`)
**Web 模糊测试与参数发现**
- 目录/文件枚举
- 参数模糊测试
- 状态码过滤
- 解析 JSON 输出
- 端口:`8191`
**MCP 工具**:
- `ffuf_fuzz(url, wordlist, method, match_status, filter_status)` — 开始模糊测试
- `ffuf_status(job_id)` — 获取发现的 endpoint
- `ffuf_cancel(job_id)` — 取消任务
- `ffuf_server_status()` — 服务器统计信息
### Amass (`amass-claude/`)
**子域名枚举与侦察**
- 被动枚举模式
- 多种数据源
- 包含 DNS 解析
- 解析 JSON 输出
- 端口:`8192`
**MCP 工具**:
- `amass_enum(domain, passive, include_unresolved)` — 开始枚举
- `amass_status(job_id)` — 获取子域名
- `amass_cancel(job_id)` — 取消任务
- `amass_server_status()` — 服务器统计信息
## 统一 MCP 服务器
**Claude Code 的单一入口点** (`mcp-unified-server/`)
通过一个 MCP 连接暴露所有 5 个工具。
**启动**:
```
cd mcp-unified-server
python main.py
```
这会将请求代理到所有 5 个后端服务。
## 共享基础库
**`bh-core/` — 可重用组件**
- `models.py` — 基础 Pydantic 模型(Job, Finding, Request)
- `state.py` — 用于任务追踪的 BaseStateManager
- `persistence.py` — 保存/加载状态(JSON/pickle)
- `logger.py` — 统一的日志记录
- `mcp_base.py` — MCP 服务器模板
所有工具均扩展了这些类。
## 安装与运行
### 设置
1. **安装 bh-core**:
```
cd bh-core
pip install -r requirements.txt
```
2. **安装每个工具**(示例:nuclei-claude):
```
cd nuclei-claude
pip install -r requirements.txt
```
3. 对以下工具重复操作:`sqlmap-claude`、`nmap-claude`、`ffuf-claude`、`amass-claude`
4. **安装统一 MCP 服务器**:
```
cd mcp-unified-server
pip install -r requirements.txt
```
### 运行单个工具
每个工具在其指定端口上独立运行:
```
# Terminal 1: Nuclei
cd nuclei-claude && python main.py
# Terminal 2: SQLMap
cd sqlmap-claude && python main.py
# Terminal 3: Nmap
cd nmap-claude && python main.py
# Terminal 4: Ffuf
cd ffuf-claude && python main.py
# Terminal 5: Amass
cd amass-claude && python main.py
```
### 运行统一 MCP 服务器
```
cd mcp-unified-server
python main.py
```
然后在 Claude Code 中,将 MCP 服务器加载为 `mcp-unified-server`。
## 使用示例
### 使用 Nuclei 扫描目标
```
nuclei_scan(urls="target.com", templates="http,cves", severity="high")
```
返回:`{"job_id": "a3f2e1c9", "status": "running", ...}`
### 轮询 Nuclei 结果
```
nuclei_status(job_id="a3f2e1c9")
```
返回:一旦完成,包含发现结果的完整任务对象。
### 使用 Nmap 扫描网络
```
nmap_scan(targets="192.168.1.0/24", ports="80,443,8080", scan_type="sV", aggressive=true)
```
返回:`{"job_id": "b4f2e2c0", "status": "running", ...}`
### Web 目录模糊测试
```
ffuf_fuzz(url="http://target.com/FUZZ", wordlist="/usr/share/wordlists/dirbuster/common.txt", filter_status="404")
```
返回:`{"job_id": "c5f2e3c1", "status": "running", ...}`
### 枚举子域名
```
amass_enum(domain="example.com", passive=true)
```
返回:`{"job_id": "d6f2e4c2", "status": "running", ...}`
## 数据流
1. **Claude 调用 MCP 工具**:`nuclei_scan(urls="target.com", templates="http")`
2. **统一 MCP 服务器解析**:请求 → JSON payload
3. **向后端发送 HTTP POST**:`POST http://127.0.0.1:8188/api/scan`
4. **后端创建任务**:返回 `job_id`
5. **生成后台任务**:子进程开始扫描
6. **Claude 轮询状态**:`nuclei_status(job_id)`
7. **后端返回**:包含结果的任务对象(状态:completed、error、cancelled)
## API endpoint
所有工具都遵循相同的 REST 模式:
```
POST /api/{action} — Start job (e.g., /api/scan, /api/test)
GET /api/{action}/{job_id} — Get job status & results
POST /api/cancel/{job_id} — Cancel job
GET /api/status — Server stats
```
## 目录结构
```
BountyHound/
├── bh-core/ # Shared foundation
│ ├── __init__.py
│ ├── models.py # Base Job, Finding, Request
│ ├── state.py # BaseStateManager
│ ├── persistence.py # Save/load utilities
│ ├── logger.py # Logging config
│ ├── mcp_base.py # MCP server template
│ └── requirements.txt
│
├── mcp-unified-server/ # Single entry point
│ ├── main.py # Unified MCP server
│ └── requirements.txt
│
├── nuclei-claude/ # Template-based scanning
│ ├── main.py, api.py, mcp_server.py, scanner.py, models.py, state.py
│ └── requirements.txt
│
├── sqlmap-claude/ # SQL injection testing
├── nmap-claude/ # Network scanning
├── ffuf-claude/ # Web fuzzing
├── amass-claude/ # Subdomain enumeration
│
└── README.md # This file
```
## 任务管理
所有任务都遵循相同的状态机:
```
running → completed | cancelled | error
```
**自动清理**:每 10 分钟,旧的已完成任务将被删除(最多保留 100 个)。
## 内存与性能
- **并发任务**:无限制(存储在内存中)
- **自动清理**:每个工具最多保留 100 个已完成/出错/取消的任务
- **超时**:可根据请求配置(默认为 30-600 秒)
- **并发**:每个工具的设置(例如,Nuclei 为 10,Ffuf 为 50)
## 错误处理
所有工具都在任务对象中返回错误:
```
{
"job_id": "a3f2e1c9",
"status": "error",
"error": "Scan timed out after 300s"
}
```
## 环境变量
每个工具支持:
```
API_PORT=8188 # FastAPI listen port
MCP_MODE=1 # Run as MCP-only (no FastAPI)
```
## 与 Claude 集成
**在 Claude Code 中**:
1. 添加 MCP 服务器:`mcp-unified-server/main.py`
2. 直接使用 MCP 工具:
nuclei_scan(urls="target.com", templates="http")
**跨工具工作流**:
```
1. nmap_scan(targets="target.com") # Discover open ports
2. ffuf_fuzz(url="target.com:8080/FUZZ") # Enumerate directories
3. nuclei_scan(urls="target.com:8080/*") # Scan found endpoints
```
## 可扩展性
添加新工具的步骤:
1. 创建 `{tool-name}-claude/` 目录
2. 从 `bh-core` 扩展模型:
- `BaseJob` → `{Tool}Job`
- `BaseFinding` → `{Tool}Finding`
- `BaseRequest` → `{Tool}Request`
3. 创建 `state.py`:`{Tool}StateManager(BaseStateManager)`
4. 创建 `scanner.py`:`start_{tool}_task()` 函数
5. 创建 `api.py`:FastAPI endpoint(POST /api/{action}, GET /api/{action}/{job_id} 等)
6. 创建 `mcp_server.py`:MCP 工具定义(使用 `@mcp.tool()` 注册)
7. 创建 `main.py`:运行 FastAPI + 任务清理
8. 将新工具添加到 `mcp-unified-server/main.py`
## 未来工具
计划添加:
- **gobuster** — 目录枚举
- **BloodHound** — Active Directory 枚举
- **Metasploit Framework** — 漏洞利用执行
- **Nessus** — 漏洞扫描
- **Volatility** — 内存取证
- **Zeek** — 网络分析
该模式对于任何 CLI 工具均完全可扩展。
## 支持
如有疑问或问题,请参阅:`/help`
标签:AV绕过, CISA项目, Claude集成, CTI, DNS枚举, DOE合作, FastAPI, MCP, 主机安全, 安全测试, 密码管理, 插件系统, 攻击性安全, 网络安全工具, 逆向工具