README
🚀 Windows取证MCP服务器
专为Linux环境设计的全面取证工具包,无需依赖任何Windows工具,可使用纯Python库原生解析Windows工件。
🚀 快速开始
本项目是一个专为Linux环境打造的Windows取证工具包,无需依赖Windows工具,使用纯Python库即可解析Windows工件。以下是快速上手的步骤:
安装
前提条件
# 安装uv(快速Python包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# 确保Python版本为3.10及以上
python3 --version
从PyPI安装
uv tool install winforensics-mcp
从源代码安装
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
# 使用uv安装(推荐)
uv sync
# 或者安装所有可选扩展
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
验证安装
uv run python -m winforensics_mcp.server
# 应能无错误启动(按Ctrl+C退出)
添加到Claude CLI
从PyPI安装
claude mcp add winforensics-mcp --scope user -- uv run winforensics-mcp
从源代码安装
claude mcp add winforensics-mcp \
--scope user \
-- uv run --directory /path/to/winforensics-mcp python -m winforensics_mcp.server
验证添加
claude mcp list
# 应显示winforensics-mcp
LLM集成(CLAUDE.md)
为了实现AI辅助取证分析,需将CLAUDE.md文件包含在案例目录中。它具有以下优点:
- 以编排器为先的指导:确保大语言模型(LLM)在使用低级解析器之前先使用高级工具。
- 令牌效率:通过合理选择工具,将API成本降低50%以上。
- 调查工作流程:提供逐步的方法,以实现一致的分析。
使用方法
将CLAUDE.md复制到案例目录:
cp /path/to/winforensics-mcp/CLAUDE.md /your/case/directory/
# 编辑CLAUDE.md中的路径以匹配你的案例
LLM将自动遵循以编排器为先的方法:
| 问题 | 使用的编排器 |
|------|--------------|
| "malware.exe是否被执行?" | investigate_execution |
| "用户做了什么?" | investigate_user_activity |
| "在所有地方查找此哈希值" | hunt_ioc |
| "构建事件时间线" | build_timeline |
快速开始示例
此二进制文件是否被执行?
调查mimikatz.exe是否在/mnt/evidence系统上被执行
investigate_execution编排器会检查预取、Amcache和SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "执行3次,最后一次在2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., 首次出现时间: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "网络: 发送15.2 MB; 前台运行: 47秒"}
]
}
在所有工件中查找IOC
在/mnt/evidence中查找哈希值204bc44c651e17f65c95314e0b6dfee586b72089
hunt_ioc工具会搜索预取、Amcache、SRUM、MFT、USN、浏览器、EVTX,并可选择进行YARA扫描:
{
"ioc": "204bc44c651e17f65c95314e0b6dfee586b72089",
"ioc_type": "sha1",
"found": true,
"sources_with_hits": ["Amcache", "MFT"],
"findings": [
{"source": "Amcache", "matches": 1, "details": "bloodhound.exe"},
{"source": "MFT", "matches": 1, "details": "Users\\Admin\\Downloads\\bloodhound.exe"}
]
}
✨ 主要特性
核心取证功能
| 类别 | 功能 | |------|------| | EVTX日志 | 解析Windows事件日志,支持过滤、搜索和预定义的安全查询 | | 注册表 | 分析SAM、SYSTEM、SOFTWARE、SECURITY、NTUSER.DAT等注册表项 | | 远程收集 | 通过WinRM(密码或哈希传递)收集工件 |
执行工件分析
| 类别 | 功能 | |------|------| | PE分析 | 静态分析,包括哈希(MD5/SHA1/SHA256/导入哈希)、导入、导出和加壳检测 | | 预取 | 提供执行证据,包括运行次数、时间戳和加载的文件 | | Amcache | 从Amcache.hve获取SHA1哈希和首次出现时间戳 | | SRUM | 从SRUDB.dat获取应用程序资源使用情况、CPU时间和网络活动信息 |
文件系统工件分析
| 类别 | 功能 | |------|------| | MFT | 解析主文件表,支持时间戳篡改检测 | | USN日志 | 用于文件操作的更改日志和已删除文件的恢复 | | 时间线 | 从MFT、USN、预取、Amcache、EVTX生成统一的时间线 |
用户活动分析
| 类别 | 功能 | |------|------| | 浏览器 | 分析Edge、Chrome、Firefox的历史记录和下载记录 | | LNK文件 | 分析Windows快捷方式,获取最近访问的文件信息 | | ShellBags | 分析文件夹导航历史,支持可疑路径检测 | | RecentDocs | 基于注册表的最近文档跟踪 |
网络取证
| 类别 | 功能 | |------|------| | PCAP分析 | 解析PCAP/PCAPNG文件,包括会话、DNS查询、HTTP请求和可疑连接 |
API监控捕获分析
| 类别 | 功能 | |------|------| | APMX解析 | 解析API Monitor捕获文件(.apmx64/.apmx86),包括进程元数据、API调用提取和参数值 | | 模式检测 | 从捕获的API调用序列中检测注入、空心化、凭证转储等攻击模式,并与MITRE ATT&CK映射 | | 句柄关联 | 跨调用跟踪句柄值,重建攻击链(OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread) | | 注入分析 | 提取丰富的注入链详细信息:目标PID/进程、shellcode大小、分配地址、技术分类 | | API知识库 | 26,944个Windows API定义,包括参数签名、DLL映射和类别浏览 |
恶意软件检测
| 类别 | 功能 | |------|------| | YARA扫描 | 使用来自signature-base的718条规则,检测APT、勒索软件、Webshell、黑客工具等 | | VirusTotal | 进行哈希/IP/域名声誉查询,支持缓存和速率限制(支持免费层级) | | DiE集成 | 通过Detect It Easy检测加壳程序(UPX、Themida、VMProtect)、编译器、.NET和安装程序 |
编排器
| 工具 | 功能 |
|------|------|
| investigate_execution | 关联预取、Amcache和SRUM,回答“此二进制文件是否被执行?” |
| investigate_user_activity | 关联浏览器、ShellBags、LNK和RecentDocs,生成用户活动时间线 |
| hunt_ioc | 在所有工件源中搜索IOC(哈希/文件名/IP/域名),可选进行YARA扫描 |
| build_timeline | 从多个源构建统一的取证时间线 |
实用工具
| 工具 | 功能 |
|------|------|
| ingest_parsed_csv | 导入Eric Zimmerman工具的CSV输出(MFTECmd、PECmd、AmcacheParser) |
📦 安装指南
前提条件
# 安装uv(快速Python包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# 确保Python版本为3.10及以上
python3 --version
从PyPI安装
uv tool install winforensics-mcp
从源代码安装
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
# 使用uv安装(推荐)
uv sync
# 或者安装所有可选扩展
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
验证安装
uv run python -m winforensics_mcp.server
# 应能无错误启动(按Ctrl+C退出)
💻 使用示例
此二进制文件是否被执行?
调查mimikatz.exe是否在/mnt/evidence系统上被执行
investigate_execution编排器会检查预取、Amcache和SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "执行3次,最后一次在2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., 首次出现时间: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "网络: 发送15.2 MB; 前台运行: 47秒"}
]
}
在所有工件中查找IOC
在/mnt/evidence中查找哈希值204bc44c651e17f65c95314e0b6dfee586b72089
hunt_ioc工具会搜索预取、Amcache、SRUM、MFT、USN、浏览器、EVTX,并可选择进行YARA扫描:
{
"ioc": "204bc44c651e17f65c95314e0b6dfee586b72089",
"ioc_type": "sha1",
"found": true,
"sources_with_hits": ["Amcache", "MFT"],
"findings": [
{"source": "Amcache", "matches": 1, "details": "bloodhound.exe"},
{"source": "MFT", "matches": 1, "details": "Users\\Admin\\Downloads\\bloodhound.exe"}
]
}
📚 详细文档
工具参考
编排器(高级调查)
| 工具 | 描述 |
|------|------|
| investigate_execution | 关联预取、Amcache和SRUM,证明二进制文件的执行情况 |
| investigate_user_activity | 关联浏览器、ShellBags、LNK和RecentDocs,分析用户活动 |
| hunt_ioc | 在所有工件中搜索IOC(哈希/文件名/IP/域名);yara_scan=True可添加YARA威胁情报 |
| build_timeline | 从多个工件源构建统一的时间线 |
执行工件分析
| 工具 | 描述 |
|------|------|
| file_analyze_pe | 静态PE分析,包括哈希、导入、导出和加壳检测 |
| disk_parse_prefetch | 解析预取文件,获取执行证据 |
| disk_parse_amcache | 解析Amcache.hve,获取SHA1哈希和时间戳 |
| disk_parse_srum | 解析SRUDB.dat,获取应用程序资源和网络使用情况 |
恶意软件检测(YARA)
| 工具 | 描述 |
|------|------|
| yara_scan_file | 使用718条YARA规则扫描文件(Mimikatz、CobaltStrike、Webshell、APT、勒索软件) |
| yara_scan_directory | 批量扫描目录中的恶意软件 |
| yara_list_rules | 列出可用的/捆绑的YARA规则 |
威胁情报(VirusTotal)
| 工具 | 描述 |
|------|------|
| vt_lookup_hash | 在VirusTotal上查找文件哈希(MD5/SHA1/SHA256) |
| vt_lookup_ip | 获取IP地址的声誉和地理位置 |
| vt_lookup_domain | 获取域名的声誉和分类 |
| vt_lookup_file | 计算文件哈希并在VirusTotal上查找 |
网络取证(PCAP)
| 工具 | 描述 |
|------|------|
| pcap_get_stats | 获取PCAP统计信息,包括数据包计数、协议、主要通信方 |
| pcap_get_conversations | 提取TCP/UDP会话,并统计字节数 |
| pcap_get_dns | 提取DNS查询和响应 |
| pcap_get_http | 提取HTTP请求,包括URL、方法、用户代理 |
| pcap_search | 在数据包负载中搜索字符串或正则表达式模式 |
| pcap_find_suspicious | 检测C2指示器、信标、DNS隧道 |
API监控捕获分析(APMX)
| 工具 | 描述 |
|------|------|
| apmx_parse | 解析.apmx64/.apmx86捕获文件,包括进程信息、模块、调用计数 |
| apmx_get_calls | 提取API调用,支持过滤、分页和时间范围 |
| apmx_get_call_details | 获取详细的记录,包括参数值、返回值、时间戳 |
| apmx_detect_patterns | 检测攻击模式(注入、空心化、凭证转储),并与MITRE ATT&CK ID关联 |
| apmx_correlate_handles | 跨API调用跟踪句柄的生产者/消费者链 |
| apmx_get_injection_info | 提取丰富的注入链信息(目标PID、shellcode大小、技术) |
| apmx_get_calls_around | 获取特定记录周围的调用上下文窗口 |
| apmx_search_params | 在所有记录中搜索特定的参数值 |
| api_analyze_imports | 全面的PE导入分析,包括模式检测和MITRE ATT&CK映射 |
| api_detect_patterns | 从PE导入表中检测攻击模式 |
| api_lookup | 查找Windows API签名(26,944个API,包括参数、DLL、类别) |
| api_search_category | 按类别浏览API(例如,“进程注入”、“文件管理”) |
加壳检测(DiE)
| 工具 | 描述 |
|------|------|
| die_analyze_file | 分析文件的加壳程序、编译器、保护器、.NET情况 |
| die_scan_directory | 批量扫描目录中的加壳可执行文件 |
| die_get_packer_info | 获取加壳程序的信息(难度、解包工具) |
文件系统
| 工具 | 描述 |
|------|------|
| disk_parse_mft | 解析$MFT,支持时间戳篡改检测 |
| disk_parse_usn_journal | 解析$J,获取文件操作和已删除文件信息 |
用户活动
| 工具 | 描述 |
|------|------|
| browser_get_history | 解析Edge/Chrome/Firefox的历史记录和下载记录 |
| user_parse_lnk_files | 解析Windows快捷方式,获取目标路径 |
| user_parse_shellbags | 解析ShellBags,获取文件夹导航历史 |
事件日志
| 工具 | 描述 |
|------|------|
| evtx_list_files | 列出目录中的EVTX文件 |
| evtx_get_stats | 获取事件计数、时间范围、事件ID分布 |
| evtx_search | 使用过滤器(时间、事件ID、关键字)进行搜索 |
| evtx_security_search | 预定义的安全事件搜索(登录、进程创建等) |
| evtx_attack_summary | 紧凑的TSV摘要,用于快速分类 - 每行一个事件,仅包含与攻击相关的列 |
| evtx_explain_event_id | 获取事件ID的描述 |
注册表
| 工具 | 描述 |
|------|------|
| registry_get_key | 获取特定的注册表项和值 |
| registry_search | 按模式搜索注册表值 |
| registry_get_persistence | 获取启动项和服务 |
| registry_get_users | 从SAM中获取用户账户信息 |
| registry_get_usb_history | 获取USB设备历史记录 |
| registry_get_system_info | 获取操作系统版本、主机名、时区 |
| registry_get_network | 获取网络配置信息 |
实用工具
| 工具 | 描述 |
|------|------|
| ingest_parsed_csv | 导入Eric Zimmerman的CSV输出(MFTECmd、PECmd、AmcacheParser、SrumECmd) |
| forensics_list_important_events | 按通道列出重要的事件ID |
| forensics_list_registry_keys | 按类别列出取证相关的注册表项 |
远程收集
| 工具 | 描述 |
|------|------|
| remote_collect_artifacts | 通过WinRM(密码或哈希传递)收集工件 |
| remote_get_system_info | 获取远程系统信息 |
配置
VirusTotal API密钥
# 选项1:环境变量
export VIRUSTOTAL_API_KEY="your-api-key-here"
# 选项2:配置文件
mkdir -p ~/.config/winforensics-mcp
echo "your-api-key-here" > ~/.config/winforensics-mcp/vt_api_key
你可以在virustotal.com获取免费的API密钥。免费层级的速率限制为每分钟4次请求;客户端会处理速率限制并将结果缓存24小时。
故障排除
DiE(Detect It Easy)未找到
# Debian/Ubuntu
sudo apt install detect-it-easy
# 或者从https://github.com/horsicq/DIE-engine/releases下载
移除MCP服务器
claude mcp remove winforensics-mcp --scope user
📄 许可证
本项目使用MIT许可证。感谢以下项目的贡献:
- Rohitab Batra(API Monitor)
- Neo23x0/signature-base(YARA规则)
- horsicq/DIE-engine(Detect It Easy)
本项目为数字取证与事件响应(DFIR)社区而构建,无需Windows环境。
🔍 相关项目
- mem_forensics-mcp - 统一内存取证MCP服务器 - 结合Rust速度和Vol3覆盖范围的多层引擎
- mac_forensics-mcp - macOS数字取证 - 统一日志、FSEvents、Spotlight、Plists、SQLite数据库、扩展属性
微信扫一扫