prabhakaran-jm/verdict
GitHub: prabhakaran-jm/verdict
在 SIFT Workstation 上运行的自主 DFIR 智能体,通过只读 MCP 服务器封装取证工具,自动完成证据调查、筛选、对抗性验证与带引用报告生成。
Stars: 0 | Forks: 0
# 结论
```
安全性是**架构性的**:仅有十三个强类型的取证工具——**根本不存在可供禁用的 shell 工具**。服务器强制执行路径保护、固定二进制文件、输出上限,以及单写入者的仅追加 `ledger.jsonl`。
为 [FIND EVIL!](https://findevil.devpost.com/) 黑客松而构建 · [Devpost 故事](docs/devpost-story.md)
| | 冒烟案例 | 完整 Szechuan |
|---|:---:|:---:|
| **大小** | ~3 MB(仓库内) | ~25–30 GB([下载](docs/dataset.md)) |
| **耗时** | ~3–4 分钟 | ~30–60 分钟 |
| **成本** | ~$0.30–0.50 | ≤ **$5.00**(预算限制) |
| **最适合** | 评委、演示、CI | 准确率报告 |
## 试一下(冒烟案例 —— 约3分钟,几分钱)
内置的冒烟案例是经过净化的 Windows 取证文件。它完整演练了整个流水线 —— 调查 → 筛选 → 验证 → 报告 —— 其中包含演示的核心亮点:当验证器发现对 `mimikatz.exe` 诱饵的过度声明时,会出现一次 **`REFUTED`**(驳回)的反转(该文件仅包含 12 字节的 ASCII 文本,并非恶意软件)。
### 1. 在 SIFT 虚拟机上进行设置
```
git clone https://github.com/prabhakaran-jm/verdict.git
cd verdict
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
export ANTHROPIC_API_KEY=sk-ant-... # required — VERDICT calls Claude autonomously
```
可选的健全性检查(取证工具已在 PATH 中):
```
python -m verdict_mcp.binaries --check
```
### 2. 运行冒烟调查
```
verdict investigate ./cases/smoke/
```
在大约 10 秒内:完成案例验证、证据清点、陈述计划。运行过程会叙述每一次工具调用,显示实时的成本计数器,依次执行筛选和验证,最后打印发现摘要。
### 3. 打开报告
```
ls runs/
# 例如 runs/20260613T092457Z/report.html
```
在浏览器中打开 `report.html`。点击引用——它会跳转到匹配的 `ledger.jsonl` 条目(包含工具、参数、输出的 SHA-256)。同时也会生成 `report.pdf`。
### 4. 关注重点
| 关键节点 | 位置 |
|------|--------|
| 服务安装(`VerdictSmokeSvc` → `update.exe`) | VERIFIED(已验证) · System.evtx / 7045 |
| Run-key 持久化 | 注册表 · `NTUSER.DAT` |
| YARA 命中发票标记 | `yara_scan` · `rules/smoke.yar` |
| **`REFUTED` 诱饵** | `mimikatz.exe` 在验证中被反转 —— 纯文本,并未进行凭证转储 |
### 5. 空案例对照(可选)
```
verdict investigate ./cases/clean/
```
预期会得到一份诚实的空报告——**零捏造的发现**。
## Full Szechuan Sauce 演练
主要数据集:[The Case of the Stolen Szechuan Sauce](https://dfirmadness.com/the-stolen-szechuan-sauce/) —— 不包含在 git 中。请在虚拟机上下载一次。
### 下载并验证
```
sudo mkdir -p /cases/szechuan && sudo chown "$USER" /cases/szechuan
./scripts/get-dataset.sh # ~13.5 GB download, MD5-verified, auto-extract
pip install volatility3 # recommended in venv for mem_analyze
./scripts/day1-gate.sh /cases/szechuan # optional: binaries + dataset + Vol3 gate
```
有关来源、MD5 校验表和已知限制,请参见 [`docs/dataset.md`](docs/dataset.md)。
### 完整运行
```
source .venv/bin/activate
export ANTHROPIC_API_KEY=sk-ant-...
verdict investigate /cases/szechuan/ --budget 5.00 2>&1 | tee szechuan-transcript.txt
```
| 参数 | 典型值 |
|-----------|----------------|
| 挂钟时间 | ~30–60 分钟 |
| API 成本 | ≤ **$5.00** |
| 退出代码 | 成功为 `0` |
`runs//` 下的输出内容:
- `report.html` / `report.pdf` — 映射了 ATT&CK 的发现结果及账本引用
- `findings.json` — 结构化的发现结果 + 结论
- `ledger.jsonl` — 仅追加的审计追踪
- `artifacts/` — 运行期间从磁盘镜像中提取的文件
**准确率**(对比已公布的真实基准):[`docs/accuracy-report.md`](docs/accuracy-report.md) —
在初次运行上达到 **100% 精确度下的约 40% 召回率**;每一个遗漏均已被标明。
## 环境要求
| 要求 | 说明 |
|-------------|-------|
| **平台** | [SIFT Workstation](https://www.sans.org/tools/sift-workstation/) 虚拟机;在 Windows 主机上开发,**在 SIFT 上运行** |
| **Python** | 3.11+ |
| **API key** | `ANTHROPIC_API_KEY` — 使用 Claude Sonnet 4.6 进行筛选 + 验证 |
| **磁盘** | Szechuan 案例需约 60 GB 可用空间;冒烟案例仅需几 MB |
| **取证工具栈** | Sleuth Kit, Volatility 3, YARA, EZ Tools — 参见 `python -m verdict_mcp.binaries --check` |
| **可选** | 用于 EZ Tools 回退方案的 .NET;在 venv 中执行 `pip install volatility3` |
```
pip install -e .
```
## 架构
两个进程:**编排器** (`verdict/`) + **只读 MCP 服务器** (`verdict_mcp/`),仅通过 stdio 连接。基于阶段的允许列表、路径防护、固定的二进制文件以及仅在服务器端存在的账本——而非基于提示词的安全性。Mermaid 源码:[`docs/architecture.mmd`](docs/architecture.mmd)。
每个发现皆有据可查,每个操作皆可审计,绝不凭空捏造恶意行为。
快速开始 · 完整案例 · 架构 · 准确率报告 · 执行日志
在 SIFT Workstation 上进行自动化 DFIR —— 一条命令即可执行调查、筛选、对抗性验证并生成带引用的报告。一个自定义的**只读 MCP 服务器**封装了 Sleuth Kit、Volatility 3、YARA 和 EZ Tools;模型永远不会获取 shell。 ``` verdict investigate
GTG-1002 防御者侧镜像 · github.com/prabhakaran-jm/verdict
标签:AI智能体, MCP, Python, SIFT, 安全, 数字取证, 无后门, 自动化脚本, 超时处理, 逆向工具