内容
# 证据基因法庭
[](https://github.com/FUYOH666/evidencegene-court/actions/workflows/ci.yml)
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://github.com/astral-sh/uv)
[](https://modelcontextprotocol.io/)
[](tests/test_attestation.py)
[](https://findevil.devpost.com/)
> **对抗性自主数字取证和事件响应**。一个由人工智能代理组成的法庭——检察官、辩护律师、仲裁员——通过一个有类型的只读MCP服务器调查磁盘和内存证据。没有发现可以进入报告,除非在SHA-256链接的审计日志中有一个有效的证据引用。幻觉不会被提示所阻止——它们在API边界上被**结构性拒绝**。
为[FIND EVIL!](https://findevil.devpost.com/)(SANS Institute,2026)而构建——第一个自主人工智能事件响应黑客马拉松,基于[SIFT工作站](https://www.sans.org/tools/sift-workstation)。
**演示视频:** [youtu.be/HerCqv_LA3Q](https://youtu.be/HerCqv_LA3Q) ·
**模式:** 自定义MCP服务器 + 多代理 · **完全本地运行**(无云)

在[DFIR Madness Case 001](https://dfirmadness.com/the-stolen-szechuan-sauce/)上,法庭自主识别了记录的植入物`coreupdater.exe`及其C2连接,通过与磁盘时间线相互验证,升级为`CONFIRMED`,并阻止了一个注入的虚构发现——所有这些都在一台本地模型的笔记本电脑上。参见[accuracy report](docs/ACCURACY_REPORT.md)。
## 为什么存在
GTG-1002显示攻击者运行MCP协调的入侵,自动化程度为80–90%。证据基因法庭是防御端的镜像——相同的代理加MCP形状,但信任边界颠倒——每个工具都是只读的,每个输出都是内容寻址的,每个声明都是审计的。
完整的调查在**单个笔记本电脑上运行,使用本地LLM**(LM Studio / 任何OpenAI兼容的端点)。包含个人身份信息或特权材料的内容从不离开机器。相同的配置标志将法庭指向云API(如果您的策略允许)。
## 架构(模式:自定义MCP服务器 + 多代理)
```mermaid
flowchart TB
subgraph evidence [只读证据]
IMG[磁盘E01 / 内存镜像]
end
subgraph mcp [sift-gene-mcp — 有类型的MCP服务器]
TOOLS[11个有类型的只读工具]
STORE[证据存储SQLite]
CHAIN[SHA-256审计链JSONL]
end
subgraph court [证据基因法庭]
P[检察官]
D[辩护律师]
A[仲裁员]
end
GATE[发现序列化器 — 失败关闭门]
IMG --> TOOLS --> STORE --> CHAIN
STORE --> P & D
P --> A
D --> A
A --> GATE
GATE -->|有效证据引用| REPORT[发现:CONFIRMED / INFERRED / ABSTAIN]
GATE -->|拒绝 + 日志| A
```
安全边界 — 所有**架构**,无提示:
| 边界 | 执行 |
|----------|-------------|
| 无shell,无写入 | 工具在传输过程中不存在;无法篡改 |
| 上下文窗口安全 | 工具返回有界预览 + `artifact_id`;完整数据保留在SQLite中 |
| 反幻觉 | 序列化器拒绝发现`artifact_refs`丢失/未知 |
| 层级完整性 | CONFIRMED仅授予跨>=2个不同证据源的引用 |
| 失控循环 | 法庭协调器中的硬`max_iterations`上限 |
| 篡改证据 | 追加JSONL,SHA-256哈希链;`verify_audit_chain`重放 |
## v0.2 — 红队,消融,陪审团
三个新增功能推动了“有类型的MCP + 反幻觉”(现在是基本要求):
- **注入套件(`egc-court redteam`)** — GTG-1002的镜像。自主攻击我们自己的辩护律师,使用6个有效载荷映射到MITRE ATLAS,并证明每个载荷在架构上都被中和(最新:6/6被防御)。直接回答了“guardrails是架构还是基于提示 — 测试绕过?”的评判标准。参见[docs/ATLAS_MAPPING.md](docs/ATLAS_MAPPING.md)。
- **反事实消融(`egc-court ablate`)** — 删除一个证据源,观察CONFIRMED崩溃为INFERRED。发现是可证伪的;层级由证据赚取,而不是由模型断言。
- **模型陪审团(`egc-court jury`)** — 收集一次证据,运行法庭每个陪审模型,仅在模型间达成共识时升级。弹性:出错的陪审模型弃权,而不是使面板崩溃。
此外,还有ATT&CK杀伤链时间线和自包含的HTML报告(`egc-court report`)。所有新增功能都是确定性的,可离线测试;只有陪审团花费(本地)LLM调用。合成的微型装置(`egc-court fixture`)在毫秒内运行整个管道,无需证据镜像。
## 快速开始
```bash
# 先决条件:uv,sleuthkit(brew install sleuthkit libewf),python 3.12+
uv sync --extra dev --extra forensics
# 健康检查(LLM端点 + 法医工具)
uv run egc-court health
# 独立运行MCP服务器(stdio)
uv run egc-mcp
# 对案例运行完整的法庭调查
uv run egc-court investigate --memory /cases/case001/citadeldc01.mem --source memory:dc01
```
通过`.env`进行配置(参见`.env.example`)— `EGC_LLM_BASE_URL`默认为`http://localhost:1234/v1`。
## 在SIFT工作站上(适用于评委)
所有使用的工具(Volatility 3,Sleuth Kit)都随SIFT附带。参见[docs/TRY_IT_OUT.md](docs/TRY_IT_OUT.md)以获取逐步说明。
## 数据集
演示案例: [DFIR Madness Case 001 — The Stolen Szechuan Sauce](https://dfirmadness.com/the-stolen-szechuan-sauce/)(公开,有已发布的真实情况)。参见[docs/DATASET.md](docs/DATASET.md)。
## 项目布局
| 路径 | 内容 |
|------|------|
| `src/evidencegene/tools/` | 有类型的只读MCP服务器 + 法医包装器 |
| `src/evidencegene/court/` | 检察官/辩护律师/仲裁员协调器 + LLM客户端 |
| `src/evidencegene/attestation/` | 发现序列化器 + 层级(失败关闭门) |
| `src/evidencegene/artifacts/` | 证据存储 + SHA-256审计链 |
| `docs/` | 架构,数据集,准确性报告,尝试 |
| `docs/submission/` | 演示视频,图表,实际样本运行日志 |
## 文档
- [架构和信任边界](docs/ARCHITECTURE.md)
- [准确性报告](docs/ACCURACY_REPORT.md)
- [数据集](docs/DATASET.md) · [尝试](docs/TRY_IT_OUT.md)
- [贡献](CONTRIBUTING.md) · [安全策略](SECURITY.md) · [更新日志](CHANGELOG.md)
## 许可证
MIT — 参见[LICENSE](LICENSE)。由[Aleksandr Mordvinov](https://github.com/FUYOH666)构建。
开源供DFIR社区使用。