calebevans/mulder
GitHub: calebevans/mulder
一个基于 MCP 的数字取证服务器,让 AI 代理可在安全工作站上调用多种取证工具并生成带审计追踪的调查报告。
Stars: 0 | Forks: 0
# mulder
[](https://pypi.org/project/mulder-mcp/)
Mulder 是一个 [MCP](https://modelcontextprotocol.io/) 服务器,用于在 [SANS SIFT](https://www.sans.org/tools/sift-workstation/) 工作站上执行数字取证。它赋予 AI 代理创建调查案件、运行取证工具(Volatility 3、Sleuthkit、Plaso、Hayabusa、YARA 等)、将证据索引到可搜索的 SQLite 数据库、提交具有来源追踪的发现以及生成调查报告的能力。
## 功能
- **MCP 协议**,用于连接任何兼容的 AI 客户端(Claude Desktop、Cursor、Claude Code 等)
- **40 多种取证工具** 以 MCP 工具调用的形式暴露,涵盖内存、磁盘、时间线、Windows 事件日志、YARA、网络捕获、移动设备等领域
- **每个案件独立的 SQLite 数据库**,支持对所有已索引证据的全文搜索(FTS5)
- **仅追加的审计日志**,记录每一次工具调用;发现必须引用真实的工具调用 ID 以防止虚构证据
- **跨来源关联**,可在时间范围内关联不同类型证据
- **报告生成**,同时输出 Markdown 和带样式的 HTML 报告,包含 IOC 表格、MITRE ATT&CK 覆盖范围和完整的审计追踪
- **资源节流**,通过可配置的内存和 CPU 限制防止提取过程压垮主机
- **并行提取**,支持可配置的工作线程池以及用于批量调度的 `run_parallel` 元工具
### 示例输出
在 [NIST 内部威胁调查](examples/nist-data-leakage/) 期间的代理实时终端中:
```
● BOMBSHELL: Informant's Downloads folder contains:
- googledrivesync.exe + Zone.Identifier (downloaded from internet!)
- icloudsetup.exe + Zone.Identifier (also downloaded from internet!)
Multi-vector exfiltration: USB drives (×2), CD-R burn, Google Drive cloud
sync, and possibly iCloud!
● SMOKING GUN — Browser Search Queries Show Premeditation:
search?q=anti-forensic+tools (n=85)
search?q=ccleaner (n=65)
search?q=cd+burning+method (n=64)
search?q=external+device+forensics (n=65)
search?q=DLP+DRM (n=90)
search?q=e-mail+investigation (n=88)
The informant researched how to cover their tracks AND how forensic
investigations work. This is deliberate, premeditated data theft.
● EXPLOSIVE FIND: LNK shows network share accessed:
\\10.11.11.128\secured_drive\Secret Project Data\final
on 2015-03-22T14:52:21Z (drive V:).
This is the server where the secret project files were stored!
```
14 个发现,其中 9 个关键,34 分钟。自动生成包含叙述、IOC 和 MITRE ATT&CK 映射的完整报告。
参见 [examples/](examples/) 获取针对多个取证数据集的报告,包括与真实数据的对比,以及在 Opus 和 Sonnet 上的运行结果。
## 快速开始
### Docker(推荐)
Docker 镜像已预装所有取证工具、依赖项以及 [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview)。Mulder 已在容器中注册为 MCP 服务器,因此 Claude Code 可以立即使用它。
```
docker pull ghcr.io/calebevans/mulder:1.0
```
#### 运行容器
该容器需要挂载三个卷:
| 挂载点 | 用途 |
|--------|------|
| `/evidence` | 您的证据目录(只读挂载 `:ro`) |
| `/root/.mulder/cases` | 案件数据库、审计日志和生成的报告(持久化到主机) |
| `/root/.claude` | Claude Code 配置和会话数据 |
**使用 Anthropic API 密钥:**
```
mkdir -p ~/mulder-cases
docker run -it --privileged \
-v /path/to/evidence:/evidence:ro `# evidence directory (read-only)` \
-v ~/mulder-cases:/root/.mulder/cases `# case DBs, audit logs, reports` \
-v ~/.claude:/root/.claude `# Claude Code config and sessions` \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
ghcr.io/calebevans/mulder:1.0
```
**使用 Google Cloud Vertex AI:**
```
mkdir -p ~/mulder-cases
docker run -it --privileged \
-v /path/to/evidence:/evidence:ro `# evidence directory (read-only)` \
-v ~/mulder-cases:/root/.mulder/cases `# case DBs, audit logs, reports` \
-v ~/.claude:/root/.claude `# Claude Code config and sessions` \
-e CLAUDE_CODE_USE_VERTEX=1 \
-e CLOUD_ML_REGION=us-east5 \
-e ANTHROPIC_VERTEX_PROJECT_ID=your-gcp-project-id \
-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/gcloud-creds.json \
-v ~/.config/gcloud/application_default_credentials.json:/tmp/gcloud-creds.json:ro `# GCP credentials` \
ghcr.io/calebevans/mulder:1.0
```
**使用 Amazon Bedrock:**
```
mkdir -p ~/mulder-cases
docker run -it --privileged \
-v /path/to/evidence:/evidence:ro `# evidence directory (read-only)` \
-v ~/mulder-cases:/root/.mulder/cases `# case DBs, audit logs, reports` \
-v ~/.claude:/root/.claude `# Claude Code config and sessions` \
-e CLAUDE_CODE_USE_BEDROCK=1 \
-e AWS_REGION=us-east-1 \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
ghcr.io/calebevans/mulder:1.0
```
容器启动后会直接运行 Claude Code。进入后请告知其扫描您的证据并开始调查。案件数据库和报告将写入主机上的 `~/mulder-cases` 目录。
### 裸机安装
`install.sh` 脚本可在 Debian/Ubuntu 上完成完整安装:Python 3.12、所有取证工具依赖项、`mulder` Python 包以及 Claude Code 的 MCP 客户端配置。它会检测现有的 SIFT 安装并跳过已存在的软件包。
```
sudo ./install.sh
```
### 仅 Python 包
如果您的系统上已安装取证工具(例如在现有的 SIFT 工作站上),可以仅安装 Python 包:
```
uv pip install mulder-mcp
# 或使用 pip 安装
pip install mulder-mcp
```
## CLI 参考
### `mulder serve`
启动 MCP 服务器。通常无需手动运行;MCP 客户端配置会自动处理。
| 选项 | 默认值 | 描述 |
|------|--------|------|
| `--case-id` | None | 启动时预加载现有案件 |
| `--db-dir` | `~/.mulder/cases` | 每个案件数据库和审计日志的目录 |
| `--transport` | `stdio` | MCP 传输方式(`stdio` 或 `streamable-http`) |
| `--workers` | `8` | 并行提取工作线程数量 |
| `--mem-limit` | `90` | 内存使用率阈值;超过时工具等待(0 表示禁用) |
| `--cpu-limit` | `90` | CPU 使用率阈值;超过时工具等待(0 表示禁用) |
### `mulder report
`
在不启动 MCP 服务器的情况下离线生成报告。
| 选项 | 默认值 | 描述 |
|------|--------|------|
| `--db-dir` | `~/.mulder/cases` | 包含案件数据库的目录 |
从数据库目录读取 `{case_id}.db` 和 `{case_id}.audit.jsonl`,并写入 `{case_id}.report.md` 和 `{case_id}.report.html`。
## 支持的取证工具
| 工具 | 描述 |
|------|------|
| [Volatility 3](https://github.com/volatilityfoundation/volatility3) | 用于分析内存转储的内存取证框架 |
| [Sleuthkit](https://www.sleuthkit.org/) | 磁盘镜像分析、文件系统列表、文件提取和 MAC 时间线 |
| [Plaso](https://github.com/log2timeline/plaso) | 从磁盘镜像和日志工件生成超级时间线 |
| [Hayabusa](https://github.com/Yamato-Security/hayabusa) | 基于 Sigma 规则的 Windows 事件日志威胁狩猎 |
| [YARA](https://virustotal.github.io/yara/) | 在文件、内存转储和 Volatility 输出中进行模式匹配 |
| [bulk_extractor](https://github.com/simsong/bulk_extractor) | 从原始数据中提取电子邮件、URL、信用卡号码等 IOC |
| [Eric Zimmerman tools](https://ericzimmerman.github.io/) | Windows 工件解析器(Prefetch、Amcache、ShimCache、Jump Lists、LNK、Shellbags、SRUM、MFT、USN Journal) |
| [RegRipper](https://github.com/keydet89/RegRipper3.0) | Windows 注册表 hive 解析 |
| [python-evtx](https://github.com/williballenthin/python-evtx) | Windows EVTX 事件日志解析与索引 |
| [foremost](https://foremost.sourceforge.net/) | 从磁盘镜像进行文件 carving |
| [Scalpel](https://github.com/sleuthkit/scalpel) | 文件 carving 与恢复 |
| [PhotoRec](https://www.cgsecurity.org/wiki/PhotoRec) | 从磁盘镜像恢复文件 |
| [Binwalk](https://github.com/ReFirmLabs/binwalk) | 固件和嵌入式文件分析 |
| [ClamAV](https://www.clamav.net/) | 恶意软件扫描 |
| [ExifTool](https://exiftool.org/) | 文件元数据提取 |
| [ssdeep](https://ssdeep-project.github.io/ssdeep/) | 文件相似度的模糊哈希 |
| [hashdeep](https://github.com/jessek/hashdeep) | 递归加密哈希 |
| [tshark](https://www.wireshark.org/docs/man-pages/tshark.html) | 网络捕获(PCAP)分析 |
| [chkrootkit](http://www.chkrootkit.org/) | Rootkit 检测 |
| [steghide](https://steghide.sourceforge.net/) / stegdetect | 隐写术检测与提取 |
| [strings](https://man7.org/linux/man-pages/man1/strings.1.html) | 从二进制文件中提取可打印字符串 |
| [pasco](https://www.mcafee.com/enterprise/en-us/downloads/free-tools.html) | Internet Explorer 历史记录解析 |
| [Hindsight](https://github.com/obsidianforensics/hindsight) | Chrome/Chromium 浏览器取证(历史记录、Cookie、下载、缓存) |
| [MVT](https://github.com/mvt-project/mvt) | 移动验证工具包,用于间谍软件检测(Pegasus、Predator) |
| [radare2](https://github.com/radareorg/radare2) | 二进制分析与逆向工程,用于恶意软件分类 |
| [dislocker](https://github.com/Aorimn/dislocker) / [libbde](https://github.com/libyal/libbde) | BitLocker 卷解密与元数据提取 |
| [libfvde](https://github.com/libyal/libfvde) | Apple FileVault 加密元数据提取 |
| [tcpflow](https://github.com/simsong/tcpflow) / [tcpxtract](https://tcpxtract.sourceforge.net/) | TCP 流重建与从 PCAP 中提取文件 |
## 报告生成
Mulder 从案件数据库和日志中生成两种报告格式:
- **Markdown**(`{case_id}.report.md`)用于纯文本审查和版本控制
- **HTML**(`{case_id}.report.html`)一个自包含的带样式页面,包含深色/浅色主题、侧边栏导航和交互式布局
两种格式均包含执行摘要、严重性概述、证据完整性哈希、攻击时间线、详细发现(附带 MITRE ATT&CK 映射)、IOC 表格(网络、文件、邮件)、审计指标和来源附录。
报告可通过两种方式生成:
1. **MCP 工具**:在服务器加载案件时调用 `finalize_report`
2. **CLI**:运行 `mulder report ` 在不启动服务器的情况下离线生成
## 架构
参见 [docs/architecture.md](docs/architecture.md) 获取服务器内部、数据模型、工具执行模型和证据管道的详细技术概述。标签:Active Directory, AI代理, Cloudflare, Hayabusa, HTML报告, IOC, Markdown报告, MCP协议, MCP服务器, MITRE ATT&CK, Plaso, SANS SIFT, Sleuthkit, SQLite, Volatility 3, YARA, 云资产可视化, 全文搜索, 取证调查, 审计日志, 工作池, 并行提取, 数字取证, 法医工具, 索引证据, 自动化脚本, 请求拦截, 资源节流, 跨来源关联, 逆向工具