manojmallick/find-evil

GitHub: manojmallick/find-evil

一款面向 SIFT Workstation 的自主事件响应取证代理,通过无 shell 架构和审计追踪在保障证据完整性的前提下自动化数字调查。

Stars: 0 | Forks: 0

# 寻找 Evil! 🔍 ![Find Evil! — 针对 SIFT Workstation 的自主、带审计追踪的 IR](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c99030090f223046.png) **专为 SANS SIFT Workstation 设计的自主、带审计追踪的事件响应(IR)工具。** 为 **SANS Find Evil! 黑客松 2026** 而构建。Apache 2.0。 ## 为什么与众不同 大多数“用于 DFIR 的 AI”演示只是给模型一个 shell 并礼貌地指示它不要 破坏东西。Find Evil! 移除了 shell。Agent **仅**通过暴露类型化取证工具的自定义 MCP server 来访问 OS —— 在它的世界里根本不存在 `rm`、`dd`、`curl`、`ssh`。 | 属性 | 如何保证 | 证明 | |---|---|---| | **证据无法被篡改** | 在生成任何子进程之前,在代码中拒绝指向 `/cases`、`/mnt` 的 `rm`/`dd`/`shred`/重定向 | `tests/unit/test_guardrails.py` (30 个测试),`BYPASS_TESTING.md` (12/12) | | **无数据外泄** | 工具层面不包含 `curl`/`wget`/`ssh`/`scp`/`nc`;在 `_safe_run` 处被拦截 | 同上 | | **0% 幻觉(CONFIRMED 级别)** | 每个 CONFIRMED 发现都必须带有存在于审计日志中的 `call_id`,否则拒绝生成报告 | `tests/unit/test_report_integrity.py`,`ACCURACY_REPORT.md` | | **完整的监管链** | 每次工具调用 → UUID `call_id` + 输出的 SHA256 存储在 `tool_calls.jsonl` 中;任何发现都可在 <10秒 内 grep 追溯 | `DEMO_VIDEO_SCRIPT.md` Shot 6 | 这些直接对应黑客松的评审标准:**约束实现(架构层面 vs 基于提示词)** 和 **审计追踪质量**。 ## 架构(30秒版本) ``` Agent (6-phase loop) ──calls──► MCP server (typed tools only) ──guarded──► SIFT binaries │ │ rm/dd/curl DO NOT EXIST here (log2timeline, vol, ...) │ ▼ └──────────────────────────► Audit log (tool_calls.jsonl: call_id + SHA256) │ Report generator ◄──verifies every CONFIRMED call_id against the log──┘ ``` 包含信任边界的完整图表:**[ARCHITECTURE.md](ARCHITECTURE.md)**。 ## 快速开始(SIFT Workstation,Ubuntu 22.04) ``` # 一键安装(克隆、venv、deps、YARA rules、目录、shell wrapper) curl -fsSL https://raw.githubusercontent.com/manojmallick/find-evil/main/install.sh | bash ``` 或从源码运行: ``` git clone https://github.com/manojmallick/find-evil.git cd find-evil python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" ``` ### 运行分析 ``` # 1. 以只读模式挂载证据 sudo ewfmount /path/to/evidence.E01 /mnt/ewf/ sudo mount -o ro,loop,noatime /mnt/ewf/ewf1 /mnt/case_disk # 2. 创建一个 case mkdir -p /cases/CASE001 cp /cases/TEMPLATE/CLAUDE.md /cases/CASE001/ # 3. 分析(磁盘 + 内存) find-evil --case /cases/CASE001 --disk /mnt/case_disk \ --memory /cases/CASE001/memory.raw --max-iterations 3 # 4. 查看与验证 python3 -m json.tool /cases/CASE001/findings/findings.json firefox /cases/CASE001/findings/report.html grep '' /opt/find-evil/logs/tool_calls.jsonl | python3 -m json.tool ``` ## 两种执行模式 **确定性流水线(默认)** —— 固定、可复现的 6 阶段序列。 法庭可辩护:相同的案例始终以相同的方式运行。 **自主推理(`--reasoning`)** —— 由 Claude 模型驱动调查:它根据发现的内容选择下一个工具,叙述其分析师推理过程,形成并测试假设,以及自我纠正。**在 LLM 掌控时,架构层面的保证依然有效** —— 它只能调用类型化工具(无 `rm`/`curl`),并且它记录的 CONFIRMED 发现在其 `call_id` 不在审计日志中时会被拒绝。完全自主,证据完整性零损失。需要 `ANTHROPIC_API_KEY`;否则回退到确定性模式。 ``` find-evil --case /cases/CASE001 --disk /mnt/case_disk --reasoning # autonomous ``` ## 6 阶段分析流水线 1. **分类** —— 监管链哈希 + YARA IOC 扫描(20 条自定义规则) 2. **时间线** —— MFT + prefetch + **timestomping 检测 ($SI vs $FN)** 3. **内存** —— Volatility **pslist + malfind (注入代码) + netscan** 4. **痕迹** —— 注册表持久化 + 登录事件日志 5. **关联** —— 跨来源差异检测 + 有限度的自我纠正 6. **报告** —— 验证每个 `call_id`,渲染 `findings.json` + `report.html` 自我纠正循环是演示的核心:如果磁盘 prefetch 时间线中存在某个进程,但在内存进程列表中却缺失,它会被标记,随后形成三个假设,并自主运行针对性的重新分析。 **10 个类型化取证工具**,涵盖磁盘、内存、注册表、事件日志、YARA、反取证(timestomping)以及内存注入/网络分析。 ## 自行验证这些保证(无需 SIFT) ``` python3 -m pytest tests/ # 56 passed python3 tests/benchmark/run_benchmark.py --dataset synthetic # precision/recall + 0% hallucination ``` - **56 个测试** 锁定了安全护栏、审计追踪和防止幻觉的保证。 - **合成基准测试** 可以在任何地方运行,并断言 CONFIRMED 级别幻觉为 0%。 ## 仓库布局 ``` mcp_server/ Custom MCP server — typed forensic tools + architectural guardrails config.py BLOCKED_COMMANDS, PROTECTED_WRITE_PATHS, path/injection validation safe_exec.py _safe_run() — the single guarded, shell=False chokepoint logger.py Audit trail (tool_calls.jsonl) + SHA256 evidence integrity tools.py 10 typed forensic tools (rm/dd/curl deliberately absent) server.py FastMCP registration layer agent/loop.py The `find-evil` command — 6-phase orchestrator + self-correction reasoning.py Autonomous LLM mode (--reasoning) — Claude drives tool selection reports/ Findings model + report generator (enforces call_id integrity) tests/ 56 unit/integration tests + reproducible benchmark harness find_evil_custom.yar 20 custom YARA rules (lateral movement, persistence, C2, ...) install.sh One-command SIFT installer ``` ## 文档 | 文档 | 内容 | |---|---| | [ARCHITECTURE.md](ARCHITECTURE.md) | 分层架构 + 安全/信任边界 | | [BYPASS_TESTING.md](BYPASS_TESTING.md) | 12 个记录在案的绕过尝试,全部被拦截 | | [ACCURACY_REPORT.md](ACCURACY_REPORT.md) | 精确率/召回率,误报,幻觉分析 | | [DATASETS.md](DATASETS.md) | 测试数据集 + 如何确立基准事实 | | [DEMO_VIDEO_SCRIPT.md](DEMO_VIDEO_SCRIPT.md) | 5 分钟演示镜头列表 | | [DEVPOST.md](DEVPOST.md) | 项目描述(Devpost 提交文本) | ## 许可证 Apache 2.0 —— 见 [LICENSE](LICENSE)。证据完整性即是本产品。
标签:AI安全, Chat Copilot, 审计追踪, 库, 应急响应, 数字取证, 自动化脚本, 逆向工具