manojmallick/find-evil
GitHub: manojmallick/find-evil
一款面向 SIFT Workstation 的自主事件响应取证代理,通过无 shell 架构和审计追踪在保障证据完整性的前提下自动化数字调查。
Stars: 0 | Forks: 0
# 寻找 Evil! 🔍

**专为 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, 审计追踪, 库, 应急响应, 数字取证, 自动化脚本, 逆向工具