返回 MCP 目录
public公开dns本地运行

winforensics-mcp

Windows取证MCP服务器是一个专为Linux环境设计的全面数字取证工具包,使用纯Python库原生解析Windows系统痕迹,无需Windows工具依赖。提供EVTX日志、注册表、执行痕迹、文件系统、用户活动、网络取证、恶意软件检测和API监控捕获分析等功能,支持远程收集和高层调查协调器。

article

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许可证。感谢以下项目的贡献:

本项目为数字取证与事件响应(DFIR)社区而构建,无需Windows环境。

🔍 相关项目

  • mem_forensics-mcp - 统一内存取证MCP服务器 - 结合Rust速度和Vol3覆盖范围的多层引擎
  • mac_forensics-mcp - macOS数字取证 - 统一日志、FSEvents、Spotlight、Plists、SQLite数据库、扩展属性
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端