
オペレーターUIからLitterBoxペイロード解析を駆動するAdaptix C2サービスプラグイン。

LitterBox を基盤とした Adaptix 向けペイロード事前検証。
Cheshire は Adaptix C2 サービスプラグインであり、Adaptix クライアントと LitterBox サンドボックスを橋渡しします。 Adaptix UI 内から、オペレーターは任意のバイナリを選択し、LitterBox の完全な アナライザチェーン(静的解析 + 動的解析 + 到達可能なすべての EDR プロファイル)に ディスパッチして、Adaptix から離れることなく判定結果が現れるのを確認できます。
名称はプロジェクトのマスコットの系譜に従っています:
| アクション | LitterBox エンドポイント | 結果 |
|---|
| ペイロードのアップロード | POST /upload | md5 + ファイルメタデータ |
| Run All | POST /analyze/static/<md5> + /analyze/dynamic/<md5> + /analyze/edr/<profile>/<md5>(×N プロファイル)を並行ゴルーチンで実行 | Static・Dynamic・全 EDR プロファイルが、それぞれの完了に応じて入力される |
| 静的解析のみ | /analyze/static/<md5> | YARA / CheckPlz / Stringnalyzer の検出結果 |
| 動的解析のみ | /analyze/dynamic/<md5> | YARA-mem / PE-Sieve / Moneta / Patriot / HSB / RedEdr の検出結果 |
| EDR(複数) | プロファイルごとに /analyze/edr/<profile>/<md5> + /api/results/edr/<profile>/<md5> への Phase 2 ポーリング | プロファイル別アラート表 + 詳細なアラート情報(理由、MITRE、API、メモリ領域、コールスタック、最終ユーザーモジュール、プロセス、親プロセス、EDR 応答) |
| クリーンアップ | DELETE /file/<md5> | LitterBox からアップロード・結果フォルダ・サンプル別解析ディレクトリを削除 |
| フリートプローブ | GET /health | サンドボックスの状態、スキャナ一覧、EDR エージェントの到達可能性 — EDR プロファイルのチェックボックスを駆動 |
EDR の Phase 2 ポーリングは LitterBox のアダプティブな間隔(基準 2 秒、アラート数が
安定している間は最大 15 秒まで ×1.5 バックオフ、変化があれば 2 秒に復帰)を使用します。
ポーリングの各ティックは 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 を追加します。service_cheshire.so をビルドします。.so と config.yaml、ax_config.axs を
AdaptixC2/dist/extenders/cheshire_service/ にコピーします。AdaptixC2/dist/profile.yaml の Teamserver.extenders に 1 行追加します:
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) などが追加され、判定は実際に実行された内容を正直に反映します。すべてのスキャナのすべての検出を 1 つのソート可能なテーブルに集約します。 行は LitterBox が実際に返す JSON から抽出されます(一般的なファクター文字列ではありません):
initial_threat + scan_results.detection_offsettotal_suspicious + インジケーター別カウントtotal_* 異常カウント(Private RWX → CRITICAL など)level + type + details の最初の 120 文字category === 'threat' にフィルタリングされた RedEdr Defender イベント深刻度の降順、次にスキャナ名の順でソートされます。
ダイアログを閉じると、現在のサンプルの 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 サービスプラグインは各スキャナのディスパッチを独自のゴルーチンで実行するため、
Run All は Static + Dynamic +(EDR プロファイルごとに 1 つの POST)をすべて並行して
発行します。各ゴルーチンが progress イベントと結果イベントをストリームバックする間、
AXScript ダッシュボードはライブで更新されます。
Cheshire は LitterBox / Adaptix の慣例に従います。詳細は親プロジェクトのライセンスを参照してください。