🚀 Windows取证MCP服务器
专为Linux环境设计的全面取证工具包,无需依赖任何Windows工具,可使用纯Python库原生解析Windows工件。
🚀 快速开始
本项目是一个专为Linux环境打造的Windows取证工具包,无需依赖Windows工具,使用纯Python库即可解析Windows工件。以下是快速上手的步骤:
安装
前提条件
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
python3 --version
从PyPI安装
uv tool install winforensics-mcp
从源代码安装
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
uv sync
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
验证安装
uv run python -m winforensics_mcp.server
添加到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
LLM集成(CLAUDE.md)
为了实现AI辅助取证分析,需将文件包含在案例目录中。它具有以下优点:
- 以编排器为先的指导:确保大语言模型(LLM)在使用低级解析器之前先使用高级工具。
- 令牌效率:通过合理选择工具,将API成本降低50%以上。
- 调查工作流程:提供逐步的方法,以实现一致的分析。
使用方法
将CLAUDE.md复制到案例目录:
cp /path/to/winforensics-mcp/CLAUDE.md /your/case/directory/
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) |
📦 安装指南
前提条件
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
python3 --version
从PyPI安装
uv tool install winforensics-mcp
从源代码安装
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
uv sync
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
验证安装
uv run python -m winforensics_mcp.server
💻 使用示例
此二进制文件是否被执行?
调查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密钥
export VIRUSTOTAL_API_KEY="your-api-key-here"
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)未找到
sudo apt install detect-it-easy
移除MCP服务器
claude mcp remove winforensics-mcp --scope user
📄 许可证
本项目使用MIT许可证。感谢以下项目的贡献:
本项目为数字取证与事件响应(DFIR)社区而构建,无需Windows环境。
🔍 相关项目