
面向 Adaptix 的预检载荷质量保证,由 LitterBox 驱动。
Cheshire 是一个 Adaptix C2 服务插件,它将 Adaptix 客户端连接到 LitterBox 沙箱。操作员可以在 Adaptix UI 内部选取任意二进制文件,将其提交至 LitterBox 的完整分析链(静态 + 动态 + 每个可达的 EDR 配置文件),并在不离开 Adaptix 的情况下观察判定结果。
名称遵循项目吉祥物的谱系:
| 操作 | LitterBox 端点 | 结果 |
|---|
| 上传载荷 | POST /upload | md5 + 文件元数据 |
| 全部运行 | POST /analyze/static/<md5> + /analyze/dynamic/<md5> + /analyze/edr/<profile>/<md5> (×N 个配置文件) 在并行 goroutine 中 | 静态、动态、每个 EDR 配置文件在完成后立即填充 |
| 仅静态 | /analyze/static/<md5> | YARA / CheckPlz / Stringnalyzer 发现 |
| 仅动态 | /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 配置文件复选框 |
EDR 阶段 2 轮询使用 LitterBox 的自适应节奏(基础 2 秒,告警计数稳定时 ×1.5 退避至多 15 秒,有变化时立即回到 2 秒)。
每个轮询周期向客户端流式传输一个 progress 事件,以便实时进度条可以实时显示告警计数递增。
Cheshire/
├── README.md
├── setup_cheshire.sh 部署脚本
└── cheshire_service/
├── config.yaml 服务插件清单 + litterbox_url
├── go.mod / go.sum
├── Makefile 构建 dist/service_cheshire.so
├── pl_main.go Go 服务插件(LitterBox 的 HTTP 客户端)
└── ax_config.axs AXScript UI(仪表盘对话框)
Go 插件是一个无状态 HTTP 中继,位于 Adaptix 的
TsServiceSendDataClient 和 LitterBox 的 REST API 之间。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 打开仪表盘。
┌─ 载荷 ───────────────────────────────────────────────────────────────┐
│ [浏览...] /home/op/payloads/beacon.exe │
├─ EDR 配置文件 ───────────────────────────────────────────────────────┤
│ ☑ Elastic Defend ● 可达 elastic · WIN-VM01 · nightcity │
│ ☐ Fibratus ● 不可达 fibratus │
├─ 动态分析参数 ───────────────────────────────────────────────────────┤
│ --quiet -p 4444 │
├─────────────────────────────────────────────────────────────────────────┤
│ [全部运行] | [静态] [动态] [EDR] | [清理] 已上传: ... │
├─────────────────────────────────────────────────────────────────────────┤
│ 🚫 已检测 — 5 个命中,跨 2 个静态、1 个动态 [严重] │
│ ✓ 静态 ✓ 动态 🔄 elastic (2) │
├─ 检测摘要 ────────────────────────────────────────────────────────────┤
│ 严重级别 | 扫描器 | 检测 | 详情 │
│ 严重 | 静态 · CheckPlz | Trojan:Win64/... | 偏移量 0x20EF │
│ 严重 | 静态 · YARA | mimikatz_strings | 匹配 $sek... │
│ 高 | 动态 · PE-Sieve | 3 个修改 | 3 个 IAT 钩子 │
│ ... │
├─ 静态 | 动态 | EDR ──────────────────────────────────────────────────┤
│ 每个扫描器子标签,带有统计条 + 带边框的发现卡片 │
└─────────────────────────────────────────────────────────────────────────┘
⏳ 运行中 — 到目前为止 N 个命中 当任何已安排的扫描器正在执行时。🚫 已检测 — N 个命中,跨 X 个静态、Y 个动态、Z 个 EDR [最高严重级别] 当每个已安排的扫描器都达到终态时。✓ 干净 — 0 个严重/高/中检测 仅当所有扫描器都没有真正命中时。信息性信号(低/信息)会单独注明,不会出现在标题中。(仅静态) / (动态 + EDR) 等会在操作员运行单个扫描器而不是全部运行时附加 — 判定如实反映实际执行的内容。将所有扫描器中的每个检测汇总到一个可排序的表格中。行从 LitterBox 实际返回的 JSON 中提取(不是通用因子字符串):
initial_threat + scan_results.detection_offsettotal_suspicious + 每个指标计数total_* 异常计数(私有 RWX → 严重等)level + type + details 前 120 个字符category === 'threat'按严重级别降序排序,然后按扫描器名称排序。
当对话框关闭时,当前样本的 md5 会通过 DELETE /file/<md5> 从 LitterBox 中清除。两次交任务之间不会积累过期样本。
Adaptix 客户端 (Qt) ──┐
│ AXScript service_command("cheshire", "run_all", {...})
▼
Adaptix 服务器 ──→ service_cheshire.so ──HTTP──→ LitterBox ──→ EDR VM
│ │ │
│ 流式传输 progress 事件 静态 / 动态 │
│ + 结果返回 扫描器在 │
│ TsServiceSendDataClient LitterBox 主机上运行 │
▼ │ │
Adaptix 客户端渲染判定、检测摘要、 │ EDR 配置文件
进度条、每个扫描器的详情面板。 ▼ 调度
/analyze/edr/<P>/<md5>
阶段 1:在 EDR VM 上执行
阶段 2:轮询 Elastic
获取告警
Go 服务插件在每个自己的 goroutine 中运行每个扫描器调度,因此
全部运行会同时发出静态 + 动态 +(每个 EDR 配置文件一个 POST)。随着每个 goroutine 流式返回
progress 和结果事件,AXScript 仪表盘会实时更新。
Cheshire 遵循 LitterBox / Adaptix 的惯例。详情请参见父项目许可证。