tejcodes-rex/verdict

GitHub: tejcodes-rex/verdict

VERDICT 是一个基于 Claude Code 和自定义 MCP Server 的自主 DFIR 调查分析 agent,通过只读架构和确定性验证引擎在 SIFT Workstation 上实现可追溯、自纠正的数字取证。

Stars: 0 | Forks: 0

# VERDICT **用于 DFIR 调查、关联和分流的可验证证据推理** 这是一个专为 SANS SIFT Workstation 设计的自主 incident response 分析师。VERDICT 扩展了 Protocol SIFT,引入了一个只读的 Custom MCP Server,将 SIFT 工具链转化为类型化的、对证据安全的函数;同时引入了一个 Claude Code agent,用于形成假设,根据实际工具输出验证每一项声明,并在信息源不一致时进行自我纠正。它的构建旨在匹配对手的速度,同时绝不牺牲响应者不能失去的一样东西:证据的完整性和发现的真实性。 Find Evil 旨在弥合机器速度攻击与人类速度响应之间的差距。2025 年 11 月,Anthropic 记录了 GTG-1002,这是一次国家级支持的行动,该行动驱动 Claude Code 进行侦察、漏洞利用和横向移动,实现了 80% 到 90% 的自主性,请求速率被 Anthropic 称为人类操作员在物理上不可能达到的。那是攻击方。Protocol SIFT 是防御方的答案,Rob Lee 的定位非常准确:用防御性 AI 编排来应对 AI 威胁速度。VERDICT 通过使自主响应者的两种失效模式(修改证据,以及自信地报告不真实的事物)在结构上变得不可能,而不仅仅是予以劝阻,从而强化了这种编排。 ## 提交合规性(请先阅读此部分) 包含所有必需组件及其确切位置。本项目是完整的,每一项都在下面提供了链接。 | # | 必需组件 | 所在位置 | |---|--------------------|-------------| | 1 | **公共代码仓库,开源** | 本仓库。许可证见下文。 | | 2 | **MIT 或 Apache 2.0 许可证文件** | [`LICENSE`](LICENSE) (MIT),独立位于仓库根目录,可在 About 部分检测到。 | | 3 | **包含设置说明的 README** | 本文件。请参阅 [设置](#setup-two-paths) 和 [运行它](#run-an-investigation-for-judges)。 | | 4 | **实时部署或分步运行说明** | [运行调查](#run-an-investigation-for-judges):一条 Docker 命令,或在 SIFT 上原生运行。 | | 5 | **功能和特性的文本描述** | 下方的 [它的作用](#what-it-does),以及 Devpost 项目页面。 | | 6 | **演示视频(实时终端、语音旁白、自我纠正)** | 链接位于 Devpost 页面顶部。一个真实的 asciinema 终端录制(原始 cast 文件提交于 [`logs/examples/demo_session.cast`](logs/examples/demo_session.cast),可通过 `asciinema play` 回放,证明它是真实的终端捕获)。脚本位于 [`docs/demo_script.md`](docs/demo_script.md)。 | | 7 | **架构图** | [`docs/architecture.png`](docs/architecture.png) (及源文件 [`docs/architecture.svg`](docs/architecture.svg)),叙述见 [`docs/architecture.md`](docs/architecture.md)。标出了全部五种元素类型和两个信任边界。 | | 8 | **证据数据集文档** | [`docs/datasets.md`](docs/datasets.md):来源、哈希值,以及 agent 发现的内容。 | | 9 | **准确性报告** | [`docs/accuracy_report.md`](docs/accuracy_report.md),加上每次运行时在每个 run 目录中自动生成的 `accuracy_report.md`。 | | 10 | **Agent 执行日志(可追溯到工具执行)** | [`logs/examples/`](logs/examples/):包含完整运行的 agent 流 (`agent_stream.jsonl`) 和工具来源 (`provenance.jsonl`)。 | 使用的架构模式(根据简报):**模式 2,Custom MCP Server**,以 Claude Code 作为代理引擎。三个必需的能力(无需人工干预的自我纠正、可追溯到特定工件的准确性验证,以及结构化的调查叙述)在 [设计如何映射到评估标准](#how-the-design-maps-to-the-judging-criteria) 中进行了演示和描述。 针对官方第一阶段资格提示(评委运行的确切 12 项检查,来自 Judge Pack 附录 A)的完整自我审计位于 [`SUBMISSION_CHECKLIST.md`](SUBMISSION_CHECKLIST.md) 中。评委不可妥协的“将任何发现追溯到其工具执行”检查已为您完成,并在 [`docs/three_claim_trace.md`](docs/three_claim_trace.md) 中提供了三个具体示例。 ## 它的作用 您将 VERDICT 指向一个案件(一个磁盘镜像、一个内存捕获、一个数据包捕获,或者来自同一主机的多个内容),它会像资深分析师一样执行完整的分流: 1. **定位**证据,在接触任何对象之前记录每个对象的只读监管链哈希值。 2. **形成可证伪的假设**,关于发生了什么,并指出能够确认或推翻每一个假设的工件。 3. **自适应地编排工具。**它运行能够决定某个假设的最廉价的工具,读取结果,并让该结果决定下一个工具。没有固定的 pipeline。 4. **验证每一个发现。**在任何声明被允许写入报告之前,一个确定性引擎会重新读取已归档的工具输出,并检查所断言的值是否真实存在于两个独立的来源中,之后才会将任何内容称为已确认。 5. **自我纠正。**当引用的输出不支持某项声明时,该声明会被视为可能的幻觉并被撤回。当两个来源不一致时,agent 会运行第三个来源来打破僵局。每一次思路的改变都会连同触发它的执行过程一起被记录下来。 6. **交叉检查来源。**给定一台主机的磁盘和内存镜像,它会比较它们并标记差异,而这正是真实入侵隐藏的地方。 7. **证明完整性并生成报告。**它对原始文件重新进行哈希处理以证明它们从未被修改过,然后生成结构化的调查叙述和诚实的准确性报告,这两者均根据运行账本生成。 其结果是一项同事可以在交叉询问中进行辩护的调查:每一句话都可以追溯到特定的工具执行,已确认的事实与推论分开,并且 agent 发现自己犯的错误也被记录在案。 ## 它与基线的不同之处 基线 Protocol SIFT 是一个 Claude Code 配置:技能文件加上行为规则,交给模型一个 shell (`Bash(*)`) 并要求它小心行事。它的防护栏是基于 prompt 的,并且它将原始工具输出输入到模型上下文中,这是有记录的导致其产生幻觉的根源。 VERDICT 改变了架构,而不仅仅是 prompt: | 关注点 | 基线 Protocol SIFT | VERDICT | |---------|------------------------|---------| | 证据安全 | Prompt 指出“绝不修改”;但 shell 仍然可以做任何事情 | 没有 shell,不存在任何写入工具;文件以 `O_RDONLY` 方式打开;强制将写入操作限制在证据根目录之外 | | 幻觉控制 | “不要产生幻觉”指令 | 确定性验证引擎根据归档输出重新检查每一项声明 | | 自我纠正 | “失败时重试”指令 | 结构性:一个 UNSUPPORTED 或 CONTRADICTED 的判定会强制撤回或打破僵局,并连同触发器一起记录 | | 上下文过载 | 原始工具转储直接进入模型 | 输出被解析为紧凑的摘要;原始数据归档到磁盘并通过 id 引用 | | 审计追踪 | 停止时追加的摘要行 | 每次执行对应一条结构化的来源记录;每个发现都会打印其 exec id | ## 设置(两种途径) ### 途径 A:Docker(推荐评委使用,一条命令) 要求:Docker 和 Claude Code 凭证(一个 `ANTHROPIC_API_KEY`,或挂载的 `~/.claude`)。无需其他任何内容。 ``` git clone https://github.com/tejcodes-rex/verdict.git cd verdict docker build -t verdict:latest . ``` 该镜像包含固定版本的 SIFT 工具链子集(The Sleuth Kit、Volatility 3、用于较旧或 32 位内存镜像的 Volatility 2.6、tshark、YARA、RegRipper、ExifTool)以及 agent runtime,因此无需启动 SIFT VM 即可在任何机器上重现运行。 ### 途径 B:在 SANS SIFT Workstation 上原生运行 在 SIFT Workstation 上,工具已经安装好了。安装 server 和 agent 配置: ``` git clone https://github.com/tejcodes-rex/verdict.git cd verdict pip3 install -e . # 将 Claude Code 指向 VERDICT MCP server 和 doctrine: cp agent/CLAUDE.md ~/.claude/CLAUDE.md cp agent/settings.json ~/.claude/settings.json ``` MCP server 会在 runtime 解析每个工具(SIFT 路径 `/opt/volatility3*/vol.py` 下的 Volatility 3,SIFT 路径 `/usr/local/bin/vol.py` 下的 Volatility 2,其余在 PATH 中),并带有 `VERDICT_` 环境变量覆盖。使用一条命令确认您的环境: ``` python3 -m verdict.doctor # prints exactly which tool resolved, and where ``` 这是针对真实的 SIFT 工具布局验证过的:在故意将 `vol` 排除在 PATH 之外(如在 OVA 中)的情况下,VERDICT 将 Volatility 3 解析为 `python3 /opt/volatility3/vol.py`,从该路径执行它,并在 SIFT 工具链上运行了实时调查。请参阅 [`docs/architecture.md`](docs/architecture.md) 和准确性报告。 ## 运行调查(面向评委) 带有已发布 ground truth 的样本证据记录在 [`docs/datasets.md`](docs/datasets.md) 中。Nitroba 网络案件很小(53 MB)并且可自我验证。要重现头条运行: ``` # 1. 获取样本 evidence(脚本从官方来源下载并验证 hashes) bash scripts/fetch_sample_evidence.sh # 2. 在 Docker 中运行完整的 autonomous investigation。 # Evidence 以 read-only 方式挂载;所有输出均存放在 ./work 中。 ANTHROPIC_API_KEY=sk-... \ EVIDENCE=$(pwd)/evidence/cases/nitroba \ WORK=$(pwd)/work \ docker compose run --rm --entrypoint bash verdict \ scripts/run_investigation.sh nitroba /evidence /work ``` (镜像入口点是 MCP server 本身;`--entrypoint bash` 会运行调查驱动程序。如果您不想使用 compose,等效的 `docker run` 位于 [`docs/submission_guide.md`](docs/submission_guide.md) 中。) Agent 身份验证:该 agent 是 Claude Code,因此它需要您的 Claude 凭证。导出 `ANTHROPIC_API_KEY`(如上所示),或者,如果您使用 Claude 订阅,则通过在运行命令中添加 `-v $HOME/.claude:/root/.claude` 来挂载您现有的登录信息。该镜像绝不包含凭证;您需要在运行时提供它们。这是唯一的外部依赖,而且也是本次赛事评委已经拥有的依赖。 完成后,请查看最新的 `./work/run-*/` 目录: - `report.md` 是调查叙述。 - `accuracy_report.md` 是根据 ground truth 评定的自我评估。 - `provenance.jsonl` 是工具执行审计追踪。 - `agent_stream.jsonl` 是完整的 agent 执行日志。 要针对您自己的证据运行 agent,请将其放入一个目录中并作为 `EVIDENCE` 传入。Agent 会根据其找到的任何数据类型进行自适应调整。 ## 设计如何映射到评判标准 - **自主执行质量。** Agent 基于明确的假设账本进行推理,并根据其学到的内容重新排序。自我纠正是结构性的:由真实工具输出计算出的验证判定会强制执行。触发因素是真实的(输出中缺少某个值、两个来源不一致),因此它们无法被人为安排。参见 [`docs/architecture.md`](docs/architecture.md)。 - **IR 准确性。** 如果其断言的值不存在于两个独立的来源中,任何声明都不会进入已确认列表。已确认的事实和推论有明确的标记。准确性报告是根据账本生成的,列出了 agent 捕获到的幻觉,并根据已发布的 ground truth 进行评分。 - **广度和深度。** 深入处理磁盘(The Sleuth Kit)、内存(Volatility 3、Volatility 2 和无符号字符串分析)、网络、Windows 注册表和程序执行证据(RegRipper、Shimcache、Amcache),以及 IOC 搜寻(YARA),并提供基于事实的 MITRE ATT&CK 映射。在真正的 SIFT Workstation 上运行的 Ali Hadi 案件 ([`logs/examples/alihadi_sift/`](logs/examples/alihadi_sift/)),将来自一台主机的 3 GB 磁盘镜像和 1 GB 内存捕获关联起来:它重建了完整的 kill chain(DVWA 命令注入、sqlmap SQL 注入活动、三个 webshell(包括 Meterpreter payload)、磁盘上 SAM 中的两个攻击者创建的账户以及 RDP 持久性),并且只有在内存捕获独立证实了相同的注入命令时,才将 RDP 持久性发现提升为 CONFIRMED。持久性的跨来源验证被视为一类高价值发现。 - **约束实现。** 防护栏是架构性的:server 不暴露任何破坏性原语,证据以只读方式打开 (`O_RDONLY | O_NOFOLLOW`),内存工具拒绝任何 Volatility dump 插件或输出标志,因此工具参数不能成为写入原语,配置层作为纵深防御拒绝通用 shell 和写入工具。绕过测试记录在准确性报告中。 - **审计追踪质量。** 每次执行对应一条来源记录;每个发现都会打印其 exec id;三声明追踪是机械化的。来源日志是一个防篡改的哈希链,每次运行都在 `manifest.json` 中使用经过验证的链头进行密封。 - **可用性和文档。** 一条 Docker 命令即可运行,并在真正的 SANS SIFT Workstation 上进行了验证:官方 OVA 已启动,完整的自主 agent 在其上端到端地运行(`logs/sift_verification/`,以及位于 `logs/examples/nitroba_sift/` 下的 SIFT 运行);`python3 -m verdict.doctor` 可报告任何上的工具解析情况。提供 ground truth 样本、已提交的运行、实时调查视图 (`scripts/agent_live.py`),以及与示例提交的诚实正面对比 (`benchmark/VALHUNTIR_COMPARISON.md`)。 每个经过验证的发现也会映射到 **MITRE ATT&CK** 技术(以确定性方式,仅基于已确认的发现,因此它不会产生幻觉上下文),从而为分析师提供 kill chain 的全貌,而没有知识库查找带来的虚假上下文风险。 ## 仓库布局 ``` verdict/ verdict/ the Python package (MCP server, engine, tools, reports) server.py the MCP server: typed read-only tools + reasoning tools evidence.py read-only evidence vault and integrity guarantees provenance.py per-execution audit records (JSONL) corroborate.py deterministic claim verifier ledger.py hypotheses, findings, self-correction events tools/ sleuthkit, volatility3, tshark, plaso wrappers report/ narrative and accuracy-report generators agent/ the agentic engine config: doctrine + read-only permissions scripts/ run an investigation, fetch sample evidence, score a run groundtruth/ answer keys for scored cases docs/ architecture, datasets, accuracy report, demo script logs/examples/ a committed full run (agent stream + tool provenance) tests/ smoke tests that exercise the stack on real evidence ``` ## 许可证 MIT。请参阅 [`LICENSE`](LICENSE)。本项目基于开源的 Protocol SIFT 和 SANS SIFT Workstation 构建;新颖的贡献(只读的 MCP server、验证引擎、假设账本以及来源和报告层)是为本次活动原创的工作,并已在全文中作为此类工作记录在案。
标签:DLL 劫持, MCP, 大语言模型, 安全运营, 库, 应急响应, 扫描框架, 数字取证, 自动化分析, 自动化脚本, 请求拦截, 跨站脚本, 逆向工具