marez8505/sift-sentinel

GitHub: marez8505/sift-sentinel

SIFT Sentinel 是一个基于 MCP 的自校正事件响应代理,解决了在 SIFT 工作站中安全自动化取证分析的闭环控制与幻觉问题。

Stars: 0 | Forks: 0

# SIFT Sentinel — 自主事件响应代理 **SANS Find Evil! 黑客马拉松提交** | 2026年4月–6月 | [findevil.devpost.com](https://findevil.devpost.com) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/) [![MCP](https://img.shields.io/badge/Protocol-MCP-green.svg)](https://modelcontextprotocol.io) ## 什么是这个工具 SIFT Sentinel 通过结合两个组件,使 Protocol SIFT 完全实现自主化: 1. **自定义 MCP 服务器** — 将 SIFT 工作站的 200 多个取证工具封装为类型化、结构化的函数。该服务器不会暴露 `rm`、`dd`、`wget`、`curl` 或 `ssh`,因此代理在物理上无法运行这些命令。所有输出在返回给 LLM 之前都会经过解析和截断,防止上下文窗口过载。 2. **自校正分类编排器** — 通过幻觉检测、差距分析和迭代自校正,驱动 Claude Code 完成自主 DFIR 分析循环,并设有硬性的 `--max-iterations` 上限以防止无限循环。 ## 架构 ``` ┌─────────────────────────────────────────────────────────────────────┐ │ SIFT Sentinel │ │ │ │ ┌─────────────────┐ stdio/MCP ┌──────────────────────────────┐ │ │ │ Claude Code │ ◄──────────── │ SIFT Sentinel MCP Server │ │ │ │ (AI backbone) │ │ mcp_server/server.py │ │ │ └────────┬────────┘ │ │ │ │ │ │ 23 typed forensic functions │ │ │ ┌────────▼────────┐ │ Path validation │ │ │ │ Orchestrator │ │ Output parsing + truncation │ │ │ │ orchestrator.py│ └──────────┬───────────────────┘ │ │ │ │ │ read-only subprocess │ │ │ • HalluciDet │ ┌──────────▼───────────────────┐ │ │ │ • GapAnalyzer │ │ SIFT Tool Suite │ │ │ │ • ExecLogger │ │ Vol3 / EZ Tools / TSK │ │ │ └─────────────────┘ │ Plaso / YARA / bulk_extractor│ │ │ └──────────┬───────────────────┘ │ │ ╔══════════════════╗ │ │ │ ║ ARCHITECTURAL ║ ┌──────────▼───────────────────┐ │ │ ║ BOUNDARY: ║ │ Evidence (READ-ONLY) │ │ │ ║ No rm/dd/wget/ ║ │ /cases/ /mnt/ /media/ │ │ │ ║ curl/ssh in MCP ║ └───────────────────────────────┘ │ │ ╚══════════════════╝ │ │ ╔══════════════════╗ ┌───────────────────────────────┐ │ │ ║ OS BOUNDARY: ║ │ Analysis Output (WRITE) │ │ │ ║ -o ro,noatime ║ │ ./analysis/ ./exports/ │ │ │ ║ mounts ║ │ ./reports/ │ │ │ ╚══════════════════╝ └───────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ ``` **安全边界**(完整细节见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)): | 防护措施 | 类型 | 机制 | |----------|------|------| | 禁止破坏性命令 | **架构级** | MCP 服务器未暴露 `rm`、`dd`、`wget`、`curl`、`ssh` | | 证据只读 | **架构级** | 路径验证器拒绝写入 `/cases/`、`/mnt/`、`/media/` | | 证据只读 | **操作系统级** | 所有证据挂载使用 `mount -o ro,noatime` | | 输出路径作用域 | **架构级** | 输出验证器仅允许 `./analysis/`、`./exports/`、`./reports/` | | 上下文窗口保护 | **架构级** | 所有工具输出在 LLM 处理前截断至 8,000 字符 | | 迭代上限 | **架构级** | 硬性 `--max-iterations` 标志;达到上限后编排器退出 | ## 安装 ### 先决条件 - [SANS SIFT 工作站 OVA](https://www.sans.org/tools/sift-workstation/)(Ubuntu x86-64) - [Claude Code CLI](https://claude.ai/code):`npm install -g @anthropic-ai/claude-code` - Anthropic API 密钥 - Python 3.10+ ### 安装 ``` # 在 SIFT VM 中克隆此仓库 git clone https://github.com/marez8505/sift-sentinel.git cd sift-sentinel # 安装(如果 protocol-sift 在旁,也会安装协议 SIFT 基线技能) bash install.sh # 在首次运行 Claude Code 时设置 API 密钥 claude # follow the interactive setup ``` ### 可选:与 Protocol SIFT 一起安装 ``` # 优先安装 Protocol SIFT 基线 curl -fsSL https://raw.githubusercontent.com/teamdfir/protocol-sift/main/install.sh | bash # 然后在之上安装 SIFT Sentinel bash install.sh ``` ## 使用 ### 自主分类(推荐) ``` # 仅磁盘镜像 python3 ~/.claude/agent/orchestrator.py \ --case-dir /cases/srl \ --evidence disk:/cases/srl/base-rd01-cdrive.E01 \ --max-iterations 3 # 磁盘 + 内存(启用跨来源关联) python3 ~/.claude/agent/orchestrator.py \ --case-dir /cases/srl \ --evidence disk:/cases/srl/base-rd01-cdrive.E01 \ memory:/cases/memory/rd01-memory.img \ --max-iterations 3 # PCAP + 日志 python3 ~/.claude/agent/orchestrator.py \ --case-dir /cases/incident \ --evidence pcap:/cases/incident/capture.pcap logs:/cases/incident/auth.log \ --max-iterations 2 ``` **其执行流程:** 1. **第一轮** — 针对每种证据类型使用资深分析师剧本进行完整初始分类 2. **第二轮** — 差距分析:识别未检查的工件并重新分析 3. **第三轮** — 综合:交叉引用所有发现、标记幻觉、生成最终报告 输出文件: ``` ./analysis/ ├── findings_1.json # Iteration 1 structured findings ├── findings_2.json # Iteration 2 gap-fill findings ├── findings_final.json # Synthesized, deduplicated final findings ├── execution_log.jsonl # Full JSONL audit trail (timestamps, tool calls, token usage) └── forensic_audit.log # Human-readable session log ./reports/ └── final_report.html # Full HTML report with evidence chain ``` ### 交互模式(Claude Code) ``` # 复制并自定义案例模板 cp ~/.claude/case-templates/CLAUDE.md /cases/mycase/CLAUDE.md # 编辑 /cases/mycase/CLAUDE.md 并填写您的案例详情 # 启动 Claude Code — 它会自动读取 CLAUDE.md cd /cases/mycase claude ``` Claude Code 将通过 SIFT Sentinel MCP 服务器访问全部 23 个 MCP 工具。 ### MCP 服务器独立运行 ``` # 直接启动 MCP 服务器(适用于任何兼容 MCP 的客户端) python3 ~/.claude/mcp_server/server.py # stdio transport ``` ## MCP 工具参考 | 工具 | 描述 | |------|------| | `get_image_info` | 磁盘镜像格式 + EWF 元数据 | | `list_partitions` | 分区表(含偏移) | | `list_files` | 文件系统枚举(fls) | | `extract_file` | 按 inode 提取文件(icat) | | `get_file_info` | 文件元数据(istat) | | `analyze_memory_processes` | psscan + pslist 差异 → 隐藏进程检测 | | `analyze_memory_network` | netscan + netstat → 唯一外部 IP | | `analyze_memory_cmdlines` | 所有进程命令行(PID 键字典) | | `analyze_memory_malfind` | 代码注入检测(RWX 区域扫描) | | `analyze_memory_services` | 服务异常检测 | | `parse_mft` | MFT 解析(含最近文件摘要) | | `parse_event_logs` | EVTX 解析(带日期/事件 ID 过滤) | | `parse_registry` | 注册表批量或靶向键查询 | | `parse_amcache` | 执行证据(含 SHA1 哈希) | | `parse_shimcache` | 文件存在/执行证据 | | `parse_prefetch` | 执行时间戳(最近 8 次运行) | | `generate_timeline` | Plaso 超级时间线 | | `run_yara_scan` | YARA 规则扫描 | | `hash_file` | 证据完整性(MD5/SHA1/SHA256) | | `run_bulk_extractor` | 特征提取(URL、邮箱、域名) | | `get_strings` | 字符串提取(带 IOC 模式匹配) | | `parse_network_capture` | PCAP 分析(tshark) | | `baseline_memory` | 内存基线比对(与已知良好 JSON 差异) | ## 提交文档 | 文档 | 路径 | |------|------| | 项目描述 | [docs/PROJECT_DESCRIPTION.md](docs/PROJECT_DESCRIPTION.md) | | 架构图 | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | | 准确度报告 | [docs/ACCURACY_REPORT.md](docs/ACCURACY_REPORT.md) | | 数据集文档 | [docs/DATASET_DOCUMENTATION.md](docs/DATASET_DOCUMENTATION.md) | | 快速上手指南 | [docs/TRY_IT_OUT.md](docs/TRY_IT_OUT.md) | ## 运行测试 ``` cd sift-sentinel python3 -m pytest tests/ -v # 仅安全测试 python3 -m pytest tests/test_mcp_security.py -v ``` ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE) 文件。 ## 作者 Edward Marez — [@marez8505](https://github.com/marez8505) 网络安全学生,Austin Community College BAS 项目 aspiring digital forensics analyst *为 2026 年 SANS Find Evil! 黑客马拉松构建*
标签:Clair, Claude Code, Cybersecurity, Find Evil Hackathon, MCP Server, Python, SANS, SIFT Workstation, 开源取证, 数字取证, 无后门, 模型上下文协议, 自主代理, 自动化取证, 自动化脚本, 自纠正, 迭代校正, 逆向工具