
Adaptix C2 सेवा प्लगइन जो ऑपरेटर UI से LitterBox पेलोड विश्लेषण को संचालित करता है।

Adaptix के लिए प्री-फ़्लाइट पेलोड QA, LitterBox द्वारा संचालित।
Cheshire एक Adaptix C2 सेवा प्लगइन है जो Adaptix क्लाइंट को एक LitterBox सैंडबॉक्स से जोड़ता है। Adaptix UI के अंदर से, एक ऑपरेटर किसी भी बाइनरी को चुन सकता है, उसे LitterBox की पूर्ण विश्लेषक श्रृंखला (static + dynamic + हर सुलभ EDR प्रोफ़ाइल) के माध्यम से भेज सकता है, और Adaptix से बाहर निकले बिना निर्णय को मूर्त रूप लेते हुए देख सकता है।
यह नाम प्रोजेक्ट मैस्कॉट वंश का अनुसरण करता है:
| Action | LitterBox endpoint(s) | Result |
|---|---|---|
| पेलोड अपलोड करें | POST /upload | md5 + फ़ाइल मेटाडेटा |
| सभी चलाएँ | 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> प्रति प्रोफ़ाइल + /api/results/edr/<profile>/<md5> पर फेज़ 2 पोलिंग | प्रति-प्रोफ़ाइल अलर्ट तालिका + व्यापक अलर्ट विवरण (कारण, MITRE, API, मेमोरी क्षेत्र, कॉल स्टैक, अंतिम उपयोगकर्ता मॉड्यूल, प्रक्रिया, पैरेंट, EDR प्रतिक्रियाएँ) |
| सफ़ाई | DELETE /file/<md5> | LitterBox से अपलोड + परिणाम फ़ोल्डर + प्रति-नमूना विश्लेषण निर्देशिकाएँ हटाता है |
| फ़्लीट प्रोब | GET /health | सैंडबॉक्स स्थिति, स्कैनर इन्वेंट्री, EDR एजेंट पहुंच — EDR प्रोफ़ाइल चेकबॉक्स को नियंत्रित करता है |
EDR फेज़ 2 पोलिंग LitterBox की अनुकूली गति का उपयोग करती है (2s आधार, अलर्ट गिनती स्थिर होने पर 15s तक ×1.5 बैकऑफ़, गतिविधि होने पर 2s पर वापस स्नैप)। प्रत्येक पोल टिक क्लाइंट को 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 प्लगइन Adaptix के TsServiceSendDataClient और LitterBox के REST API के बीच एक स्टेटलेस HTTP रिले है। 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 बनाता है।.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_* विसंगति गणनाएँ (Private RWX → CRITICAL, आदि)level + type + details के पहले 120 अक्षरcategory === 'threat' पर फ़िल्टर किए गएगंभीरता के अवरोही क्रम में, फिर स्कैनर नाम से क्रमबद्ध।
जब डायलॉग बंद होता है, तो वर्तमान नमूने का md5 DELETE /file/<md5> के माध्यम से LitterBox से मिटा दिया जाता है। अभियानों के बीच कोई पुराना नमूना जमा नहीं होता।
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 + (प्रति EDR प्रोफ़ाइल एक POST) सभी को समानांतर रूप से जारी करता है। AXScript डैशबोर्ड लाइव अपडेट होता है जब प्रत्येक goroutine progress और परिणाम इवेंट वापस स्ट्रीम करता है।
Cheshire LitterBox / Adaptix परंपराओं का पालन करता है। विवरण के लिए मूल प्रोजेक्ट लाइसेंस देखें।