关于 Winforensics Mcp
Winforensics Mcp 是面向 Linux 环境的 Windows 数字取证 MCP 服务,供 DFIR 调查人员分析离线证据,无需 Windows 运行时。它提供多类工件解析、跨来源关联、IOC 搜索和时间线构建。
主要功能
- 01解析 Windows 日志、注册表和文件系统工件
- 02分析执行痕迹与用户活动
- 03关联工件并构建统一时间线
- 04扫描 YARA 规则并搜索行为型 IOC
- 05分析 PCAP 与 API Monitor 捕获
适用场景
- 01调查二进制文件是否执行及相关活动
- 02在多个证据来源中搜寻 IOC
- 03从日志和文件系统工件重建事件时间线
MCP 相关
作为本地 stdio MCP 服务,向 MCP 客户端提供 Windows 数字取证工具。可在客户端设置中注册 winforensics-mcp。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Windows 取证 MCP 服务
在 Linux 上进行 Windows DFIR - 专为 Linux 环境设计的综合取证工具包,无需依赖 Windows 运行时。原生解析 Windows 取证痕迹,并可选配用于 Windows Search 的 Rust SIDR 侧车程序。
相关项目
- mem_forensics-mcp - 统一内存取证 MCP 服务 - 多层引擎,兼具 Rust 的速度与 Vol3 的覆盖范围
- mac_forensics-mcp - macOS DFIR - 统一日志、FSEvents、Spotlight、Plist、SQLite 数据库、扩展属性
功能
核心取证
| 类别 | 功能 |
|---|---|
| EVTX 日志 | 精简的结构化查询、字段筛选、登录关联、NTLM 摘要和 JSONL 导出 |
| 离线 NTDS | 查询确切的 SAM 帐户、域 SID 和信任元数据,无需解密凭据 |
| 注册表 | 分析 SAM、SYSTEM、SOFTWARE、SECURITY 和 NTUSER.DAT;支持分页查询、规范化 FILETIME,以及 USBSTOR/WPD 关联 |
| 远程采集 | 通过 WinRM 采集取证痕迹(密码或哈希传递) |
执行痕迹
| 类别 | 功能 |
|---|---|
| PE 分析 | 静态分析,包含哈希(MD5/SHA1/SHA256/imphash)、导入、导出和加壳器检测 |
| Prefetch | 执行证据,包含运行次数、时间戳和已加载文件 |
| Amcache | 从 Amcache.hve 提取 SHA1 哈希和首次出现时间戳 |
| SRUM | 精确筛选应用和时间、原始资源计数器、网络 MB/MiB 总量,以及从 SRUDB.dat 可选汇总 |
文件系统痕迹
| 类别 | 功能 |
|---|---|
| MFT | 解析主文件表,包含 ADS 元数据和时间戳伪造检测 |
| USN 日志 | 文件操作变更日志和已删除文件恢复 |
| 时间线 | 汇总 MFT、USN、Prefetch、Amcache 和 EVTX 的统一时间线 |
用户活动
| 类别 | 功能 |
|---|---|
| 浏览器 | Edge、Chrome、Firefox 历史记录和下载记录 |
| LNK 文件 | 分析 Windows 快捷方式,查找最近访问的文件 |
| ShellBags | 从 UsrClass.dat 和 NTUSER.DAT 获取文件夹导航历史记录,包括 UNC 共享和浏览过的压缩包内容(libfwsi) |
| RecentDocs | 基于注册表跟踪最近使用的文档 |
| Windows Search | 基于 SIDR 恢复 Windows.edb 文件、互联网历史记录、活动历史记录和 System.Search.AutoSummary |
网络取证
| 类别 | 功能 |
|---|---|
| PCAP 分析 | 解析 PCAP/PCAPNG 文件,涵盖通信会话、DNS 查询、HTTP 请求和可疑连接 |
API Monitor 捕获分析
| 类别 | 功能 |
|---|---|
| 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、黑客工具 |
| IoC 规则包 | 用于在导出的日志、文件名和 PCAP 载荷中搜寻的行为型 IoC 规则包;包含可选的 GPL-2.0 impacket-iocs 规则包,其中有 65 条规则 |
| VirusTotal | 哈希/IP/域名信誉查询,支持缓存和速率限制(支持免费套餐) |
| DiE 集成 | 通过 Detect It Easy 检测加壳程序(UPX、Themida、VMProtect)、编译器、.NET 和安装程序 |
编排器
| 工具 | 功能 |
|---|---|
investigate_execution | 关联 Prefetch、Amcache 和 SRUM,以回答“此二进制文件是否曾执行?” |
investigate_user_activity | 关联 Browser、ShellBags、LNK 和 RecentDocs,生成用户活动时间线 |
hunt_ioc | 在所有工件来源中搜索 IOC(哈希/文件名/IP/域名),并可选择进行 YARA 扫描 |
hunt_ioc_pack | 从捆绑或外部元数据规则包(如 impacket-iocs)中搜寻行为型 IoC |
build_timeline | 根据多个来源构建统一的取证时间线 |
实用工具
| 工具 | 功能 |
|---|---|
ingest_parsed_csv | 导入 Eric Zimmerman 工具生成的 CSV 输出(MFTECmd、PECmd、AmcacheParser) |
安装
先决条件
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# Ensure Python 3.10+
python3 --version
从 PyPI 安装
uv tool install winforensics-mcp
从源代码安装
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
# Install with uv (recommended)
uv sync
# Or install with all optional extras
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
Windows Search 解析使用 SIDR 0.9.2。源代码仓库包含精简版 Linux 发布文件,适用于 ARM64(.tools/sidr)和 x86_64(.tools/sidr_x86),这些文件由相邻清单中记录的固定提交构建而成。任一架构都可以通过以下命令重新构建该确切版本:
bash scripts/build_sidr.sh
服务按以下顺序查找 SIDR:显式工具参数、WINFORENSICS_SIDR_PATH、与架构匹配的捆绑二进制文件,或 PATH。运行时不会下载或构建可执行文件。在不受支持的平台上,请单独构建或提供 SIDR 0.9.2。没有 SIDR 时,windows_search_parse 会使用明确标记的 pyesedb 部分回退方案,该方案无法恢复所有压缩的长值。
验证
uv run python -m winforensics_mcp.server
# Should start without errors (Ctrl+C to exit)
添加到 MCP 客户端
在 MCP 客户端的设置中,将 winforensics-mcp 注册为本地 stdio 服务。配置格式和位置取决于客户端。对于接受 mcpServers JSON 的客户端,PyPI 安装(uv tool install winforensics-mcp)的配置如下:
{
"mcpServers": {
"winforensics-mcp": {
"command": "winforensics-mcp"
}
}
}
对于源代码检出(uv sync),使用:
{
"mcpServers": {
"winforensics-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/winforensics-mcp", "python", "-m", "winforensics_mcp.server"]
}
}
}
将示例路径替换为检出目录的绝对路径。如果客户端使用不同的配置格式,请通过其 MCP 服务设置输入相同的命令和参数。确保 winforensics-mcp 或 uv(视情况而定)位于客户端的 PATH 中,然后使用客户端的 MCP 服务列表确认连接成功。
快速入门示例
此二进制文件是否曾执行?
Investigate if mimikatz.exe was executed on the system at /mnt/evidence
investigate_execution 编排器会检查 Prefetch、Amcache 和 SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "Executed 3 times, last at 2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., First seen: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "Network: 15.2 MB sent; Foreground: 47 seconds"}
]
}
在所有工件中搜寻 IOC
Hunt for the hash 204bc44c651e17f65c95314e0b6dfee586b72089 in /mnt/evidence
hunt_ioc 工具会搜索 Prefetch、Amcache、SRUM、MFT、USN、Browser、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 和离线 AD 查询
使用 compact、fields、where 和 max_chars,让 EVTX 结果更聚焦:
{
"evtx_path": "/evidence/Security.evtx",
"event_ids": [4724],
"where": {"EventData.SubjectUserName": {"neq": "Administrator"}},
"compact": true,
"fields": ["EventID", "TimeCreated", "EventData.TargetUserName"],
"max_chars": 12000
}
使用相同的查询继续获取 next_cursor;evtx_get_event 可打开完整记录。
使用以下辅助工具进行登录关联、优先显示罕见项的 NTLM 摘要,以及 JSONL
导出。描述符工具会解码明确提供的十六进制/base64 值,并如实报告不可用的
值。NTDS 工具可查询账户、域和信任元数据,不涉及 SYSTEM 或凭据解密。
参见查询参考,了解示例、限制和完整性语义。
工具参考
编排器(高层调查)
| 工具 | 描述 |
|---|---|
investigate_execution | 关联 Prefetch/Amcache/SRUM,证明二进制文件执行情况 |
investigate_user_activity | 关联 Browser/ShellBags/LNK/RecentDocs,调查用户活动 |
hunt_ioc | 在所有工件中搜寻 IOC(哈希/文件名/IP/域名);yara_scan=True 会增加 YARA 威胁情报 |
build_timeline | 根据多个工件来源构建统一时间线 |
执行工件
| 工具 | 描述 |
|---|---|
file_analyze_pe | PE 静态分析——哈希、导入项、导出项、Authenticode 程序名称、加壳器检测 |
disk_parse_prefetch | 解析 Prefetch,获取执行证据 |
disk_parse_amcache | 解析 Amcache.hve,获取 SHA1 哈希和时间戳 |
disk_parse_srum | 解析 SRUDB.dat,支持精确/正则表达式应用筛选、UTC 时间范围、派生网络单位和可选聚合 |
恶意软件检测(YARA)
| 工具 | 描述 |
|---|---|
yara_scan_file | 使用 718 条 YARA 规则扫描文件(Mimikatz、CobaltStrike、WebShell、APT、勒索软件) |
yara_scan_directory | 批量扫描目录中的恶意软件 |
yara_list_rules | 列出可用/捆绑的 YARA 规则 |
行为 IoC 包
| 工具 | 描述 |
|---|---|
ioc_pack_list | 列出捆绑和外部 IoC 包及其许可证元数据 |
hunt_ioc_pack | 在文本导出内容、文件名和 PCAP 载荷中搜寻行为 IoC |
威胁情报(VirusTotal)
| 工具 | 描述 |
|---|---|
vt_lookup_hash | 在 VirusTotal 上查询文件哈希(MD5/SHA1/SHA256) |
vt_lookup_behavior | 有范围限制地获取沙箱域名、URL、命令、注册表/文件写入;可选持久化完整结果 |
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,包括 ADS 元数据和时间戳篡改检测 |
disk_parse_usn_journal | 解析 $J,获取文件操作和已删除文件 |
用户活动
| 工具 | 描述 |
|---|---|
browser_get_history | 解析 Edge/Chrome/Firefox 历史记录和下载记录 |
user_parse_lnk_files | 解析 Windows 快捷方式,获取目标路径 |
user_parse_shellbags | 解析 ShellBags(UsrClass.dat + NTUSER.DAT),获取文件夹导航、网络共享和存档浏览记录 |
windows_search_parse | 使用 SIDR 解析指定的 Windows.edb;筛选并分页返回文件、互联网、活动和索引内容记录 |
离线 Active Directory
| 工具 | 描述 |
|---|---|
ntds_get_object_by_sam | 读取与指定离线 SAM 账户选择器完全匹配的允许列表元数据 |
ntds_get_object_sid | 返回 SID 元数据,并明确标注歧义/完整性状态 |
ntds_get_domain_info | 读取域元数据和有证据支持的林根归属信息 |
ntds_get_trusts | 分页读取信任元数据,不包含身份验证机密 |
事件日志
| 工具 | 描述 |
|---|---|
evtx_list_files | 列出目录中的 EVTX 文件 |
evtx_get_stats | 获取事件计数、时间范围和事件 ID 分布 |
evtx_search | 使用筛选器、紧凑字段投影、响应预算和稳定续传进行搜索 |
evtx_get_event | 使用源绑定引用检索完整的标准化事件 |
evtx_correlate_logon_id | 在指定时间窗口内关联主体/目标 LUID 出现记录 |
evtx_export | 导出筛选后的 JSONL 文件,包含哈希、完成诊断信息和有界预览 |
evtx_ntlm_operational_summary | 汇总 NTLM 4021/4022/4023 事件,并突出显示罕见的进程/用户组合 |
security_descriptor_decode | 解码明确指定的十六进制/Base64 格式的有界自相对描述符字节 |
evtx_describe_security_descriptor | 描述 EVTX 属性描述符,或报告其源占位符 |
evtx_security_search | 预置的安全事件搜索(登录、进程创建等) |
evtx_attack_summary | 用于快速分流的紧凑 TSV 摘要——每个事件一行,仅包含与攻击相关的列 |
evtx_explain_event_id | 获取事件 ID 描述 |
注册表
| 工具 | 描述 |
|---|---|
registry_get_key | 获取指定键及其值 |
registry_search | 按模式搜索值 |
registry_query | 分页执行精确/子字符串/正则表达式注册表查询,支持子树范围、字段投影和诊断信息 |
registry_get_persistence | 获取 Run 键和服务 |
registry_get_users | 从 SAM 获取用户账户 |
registry_get_usb_history | 关联 USBSTOR 标识、物理序列号、WPD 设备名称和辅助卷标 |
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 密钥
# Option 1: Environment variable
export VIRUSTOTAL_API_KEY="your-api-key-here"
# Option 2: Config file
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
# Or download from https://github.com/horsicq/DIE-engine/releases
未找到 SIDR
源代码检出中包含精简版 SIDR,适用于 Linux ARM64 和 x86_64。若要为当前 Rust 目标重新构建固定版本,请运行:
bash scripts/build_sidr.sh
若要使用其他安装版本,请将 WINFORENSICS_SIDR_PATH 设置为 SIDR 0.9.2 可执行文件的路径。解析器会在每个响应中报告可执行文件路径、版本、SHA-256、数据库状态、提取完整性和证据哈希。捆绑的旁置组件采用 Apache-2.0 许可证,详见 .tools/SIDR-LICENSE。
移除 MCP 服务
从 MCP 客户端的服务设置中移除 winforensics-mcp 条目。
许可证
鸣谢:omerbenamram/evtx(Rust EVTX 解析器)、strozfriedberg/sidr(Windows Search)、Rohitab Batra(API Monitor)、Neo23x0/signature-base(YARA 规则)、horsicq/DIE-engine(Detect It Easy)
核心 winforensics-mcp 代码采用 MIT 许可证。详见 LICENSE。
可选捆绑的 IoC 包可能采用不同的许可证:
winforensics_mcp/ioc_packs/impacket-iocs包含源自 ThatTotallyRealMyth/Impacket-IoCs 的材料,并采用 GPL-2.0 许可证。详见winforensics_mcp/ioc_packs/impacket-iocs/LICENSE。
为 DFIR 社区打造。无需 Windows >)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。