
مكوّن إضافي لخدمة Adaptix C2 يشغّل تحليل حمولات LitterBox من واجهة المشغّل.

ضمان جودة الحمولة قبل الإطلاق لـ Adaptix، مدعوم من LitterBox.
Cheshire هو إضافة خدمة (service plugin) لنظام Adaptix C2 تعمل كجسر بين عميل Adaptix وبيئة الاختبار المعزولة LitterBox. من داخل واجهة Adaptix، يمكن للمشغّل اختيار أي ملف ثنائي وإرساله عبر سلسلة المحللات الكاملة في LitterBox (Static + Dynamic + كل ملف تعريف EDR يمكن الوصول إليه)، ومشاهدة الحكم وهو يظهر دون مغادرة Adaptix إطلاقًا.
يتبع الاسم سلالة تمائم المشروع:
| الإجراء | نقطة (نقاط) نهاية LitterBox | النتيجة |
|---|---|---|
| رفع الحمولة | POST /upload | md5 + البيانات الوصفية للملف |
| Run All | POST /analyze/static/<md5> + /analyze/dynamic/<md5> + /analyze/edr/<profile>/<md5> (×N ملفات تعريف) في goroutines متوازية | تُملأ نتائج Static وDynamic وكل ملف تعريف EDR فور اكتمال كل منها |
| Static فقط | /analyze/static/<md5> | نتائج YARA / CheckPlz / Stringnalyzer |
| Dynamic فقط | /analyze/dynamic/<md5> | نتائج YARA-mem / PE-Sieve / Moneta / Patriot / HSB / RedEdr |
| EDR (متعدد) | /analyze/edr/<profile>/<md5> لكل ملف تعريف + استقصاء المرحلة 2 عبر /api/results/edr/<profile>/<md5> | جدول تنبيهات لكل ملف تعريف + تفاصيل تنبيه شاملة (السبب، MITRE، API، منطقة الذاكرة، مكدس الاستدعاءات، وحدة المستخدم النهائية، العملية، العملية الأم، استجابات EDR) |
| التنظيف | DELETE /file/<md5> | يزيل مجلدات الرفع ومجلدات النتائج ومجلدات تحليل كل عيّنة من LitterBox |
| فحص الأسطول | GET /health | حالة بيئة الاختبار، جرد الماسحات، إمكانية الوصول إلى وكيل EDR — يغذّي مربعات اختيار EDR Profiles |
يستخدم استقصاء المرحلة 2 لـ EDR الإيقاع التكيفي الخاص بـ LitterBox (أساسه ثانيتان، تراجع ×1.5 حتى 15 ثانية عندما يكون عدد التنبيهات مستقرًا، وعودة فورية إلى ثانيتين عند حدوث تغيير). كل نبضة استقصاء تدفّق حدث progress إلى العميل، بحيث يمكن لشريط التقدم المباشر إظهار أعداد التنبيهات وهي تتزايد في الوقت الفعلي.
Cheshire/
├── README.md
├── setup_cheshire.sh deploy script
└── cheshire_service/
├── config.yaml service plugin manifest + litterbox_url
├── go.mod / go.sum
├── Makefile builds dist/service_cheshire.so
├── pl_main.go Go service plugin (HTTP client to LitterBox)
└── ax_config.axs AXScript UI (the dashboard dialog)
إضافة Go هي مرحّل HTTP عديم الحالة بين TsServiceSendDataClient الخاص بـ Adaptix وواجهة REST API الخاصة بـ LitterBox. يتولى ملف AXScript كل العرض — لافتة الحكم، ملخص الاكتشاف، تبويبات فرعية لكل ماسح، جدول تنبيهات EDR مع النقر لعرض التفاصيل.
يتطلب Cheshire وجود نسخة LitterBox قيد التشغيل (راجع مستودع LitterBox للتثبيت). تحقق من إمكانية الوصول:
curl http://<litterbox-host>:1337/health
عدّل cheshire_service/config.yaml واضبط litterbox_url:
extender_type: "service"
extender_file: "service_cheshire.so"
ax_file: "ax_config.axs"
service_name: "cheshire"
service_config: |
litterbox_url: "http://192.168.88.128:1337"
إذا كان litterbox_url مفقودًا، تُحمَّل الإضافة لكن كل أمر من أوامر المشغّل يعيد "Cheshire is not configured: set litterbox_url in service_config". لا يوجد إعداد افتراضي احتياطي.
bash setup_cheshire.sh --ax /path/to/AdaptixC2
يقوم هذا بـ:
AdaptixC2/AdaptixServer/extenders/cheshire_service/../extenders/cheshire_service إلى مساحة عمل Go.service_cheshire.so عبر Makefile..so المبنى + config.yaml + ax_config.axs إلى AdaptixC2/dist/extenders/cheshire_service/.أضف سطرًا إلى AdaptixC2/dist/profile.yaml تحت Teamserver.extenders:
extenders:
- "extenders/cheshire_service/config.yaml"
...
pkill -f adaptixserver
cd AdaptixC2/dist
./adaptixserver -profile profile.yaml
يجب أن ترى [cheshire] Initialized — LitterBox at http://... في سجل الخادم، متبوعًا بـ [+] Service 'cheshire' loaded.
في شريط قوائم عميل Adaptix، يفتح Cheshire → Test with Cheshire لوحة التحكم.
┌─ Payload ───────────────────────────────────────────────────────────────┐
│ [Browse...] /home/op/payloads/beacon.exe │
├─ EDR Profiles ──────────────────────────────────────────────────────────┤
│ ☑ Elastic Defend ● reachable elastic · WIN-VM01 · nightcity │
│ ☐ Fibratus ● not reachable fibratus │
├─ Dynamic Analysis Args ─────────────────────────────────────────────────┤
│ --quiet -p 4444 │
├─────────────────────────────────────────────────────────────────────────┤
│ [Run All] | [Static] [Dynamic] [EDR] | [Cleanup] Uploaded: ... │
├─────────────────────────────────────────────────────────────────────────┤
│ 🚫 DETECTED — 5 hit(s) across 2 Static, 1 Dynamic [CRITICAL] │
│ ✓ Static ✓ Dynamic 🔄 elastic (2) │
├─ Detection Summary ─────────────────────────────────────────────────────┤
│ Severity | Scanner | Detection | Detail │
│ CRITICAL | Static · CheckPlz | Trojan:Win64/... | offset 0x20EF │
│ CRITICAL | Static · YARA | mimikatz_strings | matched $sek... │
│ HIGH | Dynamic · PE-Sieve | 3 modifications | 3 IAT hooks │
│ ... │
├─ Static | Dynamic | EDR ────────────────────────────────────────────────┤
│ per-scanner sub-tabs with stat strip + bordered finding cards │
└─────────────────────────────────────────────────────────────────────────┘
⏳ RUNNING — N hit(s) so far بينما لا يزال أي ماسح مجدول قيد التنفيذ.🚫 DETECTED — N hit(s) across X Static, Y Dynamic, Z EDR [maxSev] بمجرد وصول كل ماسح مجدول إلى حالة نهائية.✓ CLEAN — 0 critical/high/medium detections فقط إذا لم تكن هناك إصابات حقيقية في أي ماسح. تُذكر الإشارات المعلوماتية (LOW/INFO) بشكل منفصل، وليس في العنوان الرئيسي.(Static only) / (Dynamic + EDR) وما شابه ذلك عندما يشغّل المشغّل ماسحًا فرديًا بدلًا من Run All — إذ يعكس الحكم بأمانة ما نُفّذ فعلًا.يجمع كل اكتشاف عبر كل ماسح في جدول واحد قابل للفرز. تُستخرج الصفوف من JSON الفعلي الذي يعيده LitterBox (وليس من سلاسل عوامل عامة):
initial_threat + scan_results.detection_offsettotal_suspicious + إحصاءات لكل مؤشرtotal_* من Moneta (Private RWX → CRITICAL، إلخ.)level + type + أول 120 حرفًا من detailscategory === 'threat'مرتبة حسب مستوى الخطورة تنازليًا، ثم حسب اسم الماسح.
عند إغلاق الحوار، يُمسح md5 الخاص بالعيّنة الحالية من LitterBox عبر DELETE /file/<md5>. لا تتراكم عيّنات قديمة بين المهام.
Adaptix Client (Qt) ──┐
│ AXScript service_command("cheshire", "run_all", {...})
▼
Adaptix Server ──→ service_cheshire.so ──HTTP──→ LitterBox ──→ EDR VM
│ │ │
│ streams progress events Static / Dynamic │
│ + results back via scanners run on │
│ TsServiceSendDataClient the LitterBox host │
▼ │ │
Adaptix Client renders verdict, detection summary, │ EDR profile
progress strip, per-scanner detail panels. ▼ dispatches
/analyze/edr/<P>/<md5>
Phase 1: exec on EDR VM
Phase 2: poll Elastic
for alerts
تشغّل إضافة خدمة Go إرسال كل ماسح في goroutine خاص به، لذا يصدر Run All أوامر Static + Dynamic + (POST واحد لكل ملف تعريف EDR) جميعها بالتوازي. تتحدّث لوحة تحكم AXScript لحظيًا بينما يدفق كل goroutine أحداث progress والنتائج إلى العميل.
يتبع Cheshire اصطلاحات LitterBox / Adaptix. راجع تراخيص المشاريع الأصلية للتفاصيل.