prabhakaran-jm/verdict

GitHub: prabhakaran-jm/verdict

在 SIFT Workstation 上运行的自主 DFIR 智能体,通过只读 MCP 服务器封装取证工具,自动完成证据调查、筛选、对抗性验证与带引用报告生成。

Stars: 0 | Forks: 0

# 结论

SANS SIFT FIND EVIL! AI Hackathon — findevil.devpost.com

每个发现皆有据可查,每个操作皆可审计,绝不凭空捏造恶意行为。

License: Apache-2.0 Python 3.11+ FIND EVIL! Hackathon SIFT Workstation 13 typed MCP tools

快速开始 · 完整案例 · 架构 · 准确率报告 · 执行日志

在 SIFT Workstation 上进行自动化 DFIR —— 一条命令即可执行调查、筛选、对抗性验证并生成带引用的报告。一个自定义的**只读 MCP 服务器**封装了 Sleuth Kit、Volatility 3、YARA 和 EZ Tools;模型永远不会获取 shell。 ``` verdict investigate ``` 安全性是**架构性的**:仅有十三个强类型的取证工具——**根本不存在可供禁用的 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 two-process architecture

Architecture doc

两个进程:**编排器** (`verdict/`) + **只读 MCP 服务器** (`verdict_mcp/`),仅通过 stdio 连接。基于阶段的允许列表、路径防护、固定的二进制文件以及仅在服务器端存在的账本——而非基于提示词的安全性。Mermaid 源码:[`docs/architecture.mmd`](docs/architecture.mmd)。

MCP Sleuth Kit Volatility 3 YARA Claude Sonnet 4.6

完整图表:[`docs/architecture.md`](docs/architecture.md) ## 退出代码 | 代码 | 含义 | |------|---------| | **0** | 成功 —— 已写入报告 + 账本 | | **1** | 无效或空的案例文件夹 | | **2** | 被中断 —— 运行文件夹中留有部分追踪记录 | | **3** | 内部错误 / 缺少 `ANTHROPIC_API_KEY` | ## 项目文档 | 文档 | 用途 | |-----|---------| | [`docs/architecture.md`](docs/architecture.md) | 安全边界图 | | [`docs/dataset.md`](docs/dataset.md) | 冒烟 + Szechuan 数据集来源 | | [`docs/accuracy-report.md`](docs/accuracy-report.md) | 对照真实基准的自我评估 | | [`docs/execution-logs/`](docs/execution-logs/) | 账本 + 记录(提交 #8) | | [`docs/devpost-story.md`](docs/devpost-story.md) | Devpost 叙述 | | [`docs/spec.md`](docs/spec.md) | 技术规范 | | [`docs/prd.md`](docs/prd.md) | 产品需求 | | [`docs/scope.md`](docs/scope.md) | 黑客松范围 | ## 许可证 Apache-2.0 — 详见 [`LICENSE`](LICENSE)。

GTG-1002 防御者侧镜像 · github.com/prabhakaran-jm/verdict

标签:AI智能体, MCP, Python, SIFT, 安全, 数字取证, 无后门, 自动化脚本, 超时处理, 逆向工具