codeforcode111/findevil

GitHub: codeforcode111/findevil

一款基于证据契约机制的自治数字取证事件响应 Agent,通过架构级反幻觉设计确保对 Windows 端点的自动化调查结论可溯源且不可篡改。

Stars: 0 | Forks: 0

# FinDevil **证据契约自治 IR Agent —— 在结构上无法说谎的 agent** ## 什么是 FinDevil? FinDevil 是一款**自治事件响应 agent**,能够在没有人工干预的情况下对受损的 Windows 端点进行推理。它将 Claude Code(规划和推理引擎)连接到在网络隔离的 Docker 容器中运行的 SIFT Workstation 取证工具,并通过 Model Context Protocol (MCP) 将它们桥接起来。 其核心差异化优势不在于速度或覆盖率,而在于**通过证据契约实现架构级的幻觉预防**。agent 所做的每一个声明都必须附有对原始证据(EVTX 记录、注册表键、内存页、文件系统条目)的引用。MCP 服务器的 Contract Compiler 会拒绝任何无法追溯到经过哈希验证的来源的发现。该 agent 在结构上就无法做出它未观察到的断言。 ## 架构 ``` graph TD CC["Claude Code\n(Planning + Reasoning)"] MCP["Investigation Runtime MCP Server\n(Python / FastMCP)"] EV["Evidence Vault\n(read-only · hash integrity)"] TG["Tool Gateway\n(Docker SIFT exec + security)"] COMP["Contract Compiler\n(reject uncited claims)"] SCE["Self-Correction Engine\n(auto-downgrade)"] AL["Audit Ledger\n(hash-chained JSONL)"] SIFT["SIFT Docker Container\n(network_mode: none)"] CC <-->|MCP Protocol| MCP MCP --- EV MCP --- TG MCP --- COMP MCP --- SCE MCP --- AL TG <-->|docker exec| SIFT ``` ### 数据流 1. Claude Code 接收案情简报并调用 MCP 工具以形成调查计划。 2. **Tool Gateway** 将每次工具调用转换为针对 SIFT 容器的 `docker exec` 命令(Hayabusa、Volatility、Sleuth Kit、Plaso、Zimmerman tools、YARA)。 3. 原始输出被摄取到 **Evidence Vault** 中,该模块会计算 SHA-256 哈希值并将证据以只读方式存储。 4. Claude Code 起草一项发现。**Contract Compiler** 会检查每个断言是否包含 vault 引用;未引用的声明在离开 MCP 边界之前会被拒绝。 5. **Self-Correction Engine** 将新证据与之前的发现进行比较,并在必须降低置信度时发出更正。 6. 每一个动作 —— 工具调用、证据摄取、发现、更正 —— 都会作为哈希链式的 JSONL 条目追加到 **Audit Ledger** 中。 ## 核心功能 ### 1. Self-Correction Engine(3 种更正类型) 该 agent 不仅仅是追加发现;它还会重新审视它们。系统会自动执行三种更正类别: | 类型 | 触发条件 | 效果 | |---|---|---| | `DOWNGRADE` | 出现矛盾的证据 | 降低置信度;标记先前的条目 | | `RETRACT` | 发现在重新评估契约后无法成立 | 从实时报告中移除;保留 ledger 条目 | | `AMEND` | 证据的范围扩大 | 更新发现;记录差异 | ### 2. 证据契约(结构性反幻觉) 每个 `Finding` 对象都是一个 Pydantic 模型,该模型要求包含一个或多个 `EvidenceRef` 对象,通过哈希值和字节偏移量将其链接到 vault 证据。Contract Compiler 在写入时强制执行此操作 —— 不是作为提示指令,而是作为 Python 类型约束。提示注入攻击无法绕过它。 ### 3. Windows 端点深度 FinDevil 针对各类 Windows 证据内置了全套 SIFT 工具链的封装: | 证据类型 | 工具 | |---|---| | EVTX 事件日志 | Hayabusa(Sigma 规则)、原生 EVTX 解析器 | | 注册表配置单元 | Zimmerman RECmd、Registry Explorer | | 内存映像 | Volatility 3(pslist、netscan、malfind、cmdline) | | 文件系统 / 时间线 | Sleuth Kit、Plaso / log2timeline | | 横向移动 / YARA | 自定义 YARA 规则集、hayabusa 横向移动 profile | ### 4. 架构级安全约束 安全性并非通过系统提示指令来强制执行,而是通过 runtime 强制执行: - SIFT 容器以 `network_mode: none` 模式运行 —— 没有数据外泄路径。 - 证据以只读方式挂载;agent 可以读取证据但无法修改它们。 - Tool Gateway 维护着一份允许执行的二进制文件注册表;无法执行任意 shell 命令。 - Evidence Vault 仅支持追加;如果在摄取后篡改了任何证据,哈希验证将会失败。 ### 5. 哈希链防篡改审计追踪 Audit Ledger 将每个事件追加为一条 JSONL 记录,其中每个条目都包含 `prev_hash` —— 即上一个条目的 SHA-256 哈希值。从创世块开始重放该链条,可以验证没有任何条目被悄无声息地插入、删除或修改。`findevil trace` CLI 命令可以验证并美观地打印出特定案例的完整链条。 ### 6. 面向操作员和审查员的 CLI 工具 ``` findevil investigate # run autonomous investigation findevil trace # replay and validate audit chain findevil bench # batch-scan EVTX files, emit detections findevil doctor # check Docker/SIFT/MCP health findevil report # render HTML/Markdown report with citations ``` ## 快速开始 ### 前置条件 - Docker(Engine 24+) - 支持 MCP 的 Claude Code - Python 3.12+ ### 1. 启动 SIFT 容器 ``` git clone https://github.com/findevil/findevil cd findevil docker compose up -d ``` SIFT 容器根据 `Dockerfile.sift` 构建,并将 `./cases/real_evidence` 以只读方式挂载到容器内的 `/evidence` 路径。不授予任何网络访问权限。 ### 2. 安装 Python 包 ``` pip install -e . ``` ### 3. 配置 Claude Code MCP 将 FinDevil MCP 服务器添加到您的 Claude Code 配置中: ``` { "mcpServers": { "findevil": { "command": "python", "args": ["-m", "findevil.server"], "env": { "FINDEVIL_CASE_DIR": "/absolute/path/to/cases" } } } } ``` ### 4. 运行调查 ``` # 将 Windows artifacts(EVTX、memory image、registry hives)放置在 cases/real_evidence/ 中 findevil investigate cases/real_evidence --case-id demo-001 ``` 或者直接询问 Claude Code: ## 试一试(面向审查员) 该代码库附带了一个位于 `cases/` 目录下的独立测试语料库和一个基准测试框架。要复现已发布的测试结果,请执行: ``` # 1. 验证环境是否正常 findevil doctor # 2. 运行完整的测试套件 pytest tests/ -v # 3. 批量扫描包含的 EVTX 语料库并统计检测结果 findevil bench cases/evtx_samples/ --output bench_results.jsonl # 4. 运行完整的演示调查 findevil investigate cases/real_evidence/ --case-id judge-run-01 # 5. 验证 audit chain(证明未被篡改) findevil trace judge-run-01 # 6. 渲染带有证据引用的最终报告 findevil report judge-run-01 --format markdown ``` 第 3 步的预期输出为:`37,732 detections across 877 EVTX files`(跨 877 个 EVTX 文件检测到 37,732 次)。 要观察反幻觉系统的实际运行情况,请尝试使用伪造的证据哈希调用 MCP 工具 `submit_finding` —— Contract Compiler 会在该发现被记录之前,以 `ContractViolation` 错误拒绝它。 ## 测试结果 | 指标 | 数值 | |---|---| | 测试套件 | 跨 9 个模块的 55 个测试 | | 进行基准测试的 EVTX 文件 | 877 | | 总检测数 | 37,732 | | 捕获的契约违规 | 100% 拦截了注入的伪造内容 | | 审计链完整性 | 在所有测试用例上均已验证 | 测试模块包括:`test_vault`、`test_compiler`、`test_correction`、`test_ledger`、`test_executor`、`test_registry`、`test_models`、`test_cli`、`test_e2e`。 ## 技术栈 | 层级 | 技术 | |---|---| | 推理引擎 | Claude Code(通过 Anthropic API 使用 claude-sonnet-4-x) | | Agent 与工具桥接层 | Model Context Protocol (MCP) | | MCP 服务器框架 | FastMCP (Python) | | 数据模型 / 验证 | Pydantic v2 | | 取证平台 | SIFT Workstation (Docker) | | EVTX / Sigma 检测 | Hayabusa | | 注册表分析 | Zimmerman tools (RECmd) | | 内存取证 | Volatility 3 | | 时间线 / 文件系统 | Plaso / log2timeline、Sleuth Kit | | 恶意软件扫描 | YARA | | 容器隔离 | Docker(`network_mode: none`,只读挂载) | | CLI | Click | | 报告模板 | Jinja2 | ## 项目结构 ``` findevil/ ├── src/findevil/ │ ├── server.py # FastMCP server — MCP entry point │ ├── cli.py # Click CLI (investigate / trace / bench / doctor / report) │ ├── vault/ # Evidence Vault — read-only, SHA-256 integrity │ ├── contracts/ # Contract Compiler + Finding/EvidenceRef models │ ├── correction/ # Self-Correction Engine (DOWNGRADE / RETRACT / AMEND) │ ├── audit/ # Hash-chained Audit Ledger (JSONL) │ └── tools/ # Tool wrappers: hayabusa, volatility, sleuthkit, plaso, │ # zimmerman, yara_scanner, executor, registry ├── tests/ # 55-test suite ├── cases/ # Evidence and EVTX sample corpus ├── docker-compose.yml # SIFT container definition └── Dockerfile.sift # SIFT Workstation image ``` ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。 ## 致谢 - **SANS Institute** —— FIND EVIL! 黑客马拉松及 SIFT Workstation 平台 - **DFIR.training / Eric Zimmerman** —— Zimmerman 取证工具 - **Yamato Security** —— Hayabusa EVTX 分析引擎 - **EVTX-ATTACK-SAMPLES** —— 用于基准测试的公开 EVTX 语料库 - **Volatility Foundation** —— Volatility 3 内存取证框架 - **Anthropic** —— Claude Code 及 Model Context Protocol
标签:AI智能体, AlienVault OTX, DLL 劫持, MCP, 大语言模型, 库, 应急响应, 数字取证, 自动化脚本, 请求拦截, 逆向工具