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)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/)
[](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, 开源取证, 数字取证, 无后门, 模型上下文协议, 自主代理, 自动化取证, 自动化脚本, 自纠正, 迭代校正, 逆向工具