Windows工具MCP
 
使用知识丰富的响应信封执行目录门控的Windows取证工具。
重要提示 --经过广泛测试,这是一个新平台。 始终核实结果并指导调查过程。如果你只是 告诉瓦尔亨蒂尔“寻找邪恶”,它很可能会产生幻觉 而不是提供有意义的结果。人工智能可以加速,但 人类必须引导它并审查所有决定。
建筑
wintools mcp在Windows取证工作站上独立运行,在端口4624上公开一个可流式传输的HTTP端点。LLM客户端和vhir CLI是两个面向人类的工具。vhir CLI始终在SIFT工作站上运行——它需要直接访问case目录的文件系统。当LLM客户端在单独的机器上运行时,检查者必须对SIFT具有SSH访问权限,才能进行所有CLI操作。LLM客户端通过网络连接到wintools mcp。
graph LR
subgraph sift ["SIFT Workstation"]
CC["LLM Client
(human interface)"]
CLI["vhir CLI
(human interface)"]
CASE["Case Directory"]
CLI --> CASE
end
subgraph winbox ["Windows Forensic Workstation"]
WAPI["wintools-mcp API
:4624"]
WM["wintools-mcp
Windows tool execution"]
FK["forensic-knowledge"]
WAPI --> WM
WM --> FK
end
CC -->|"streamable-http"| WAPI
WM -->|"SMB"| CASE执行流水线
每个工具执行都通过相同的安全和丰富管道。
graph LR
REQ["MCP tool call"] --> DENY{"Hardcoded
Denylist"}
DENY -->|"blocked binary"| BLOCK["BLOCKED"]
DENY -->|"pass"| CAT{"YAML Catalog
Allowlist"}
CAT -->|"not cataloged"| REJECT["REJECTED"]
CAT -->|"cataloged"| SANITIZE{"Argument
Sanitization"}
SANITIZE -->|"dangerous flag
or metachar"| REJECT
SANITIZE -->|"clean"| RESOLVE["Resolve
Binary Path"]
RESOLVE --> EXEC["subprocess.run
shell=False"]
EXEC --> PARSE["Parse Output
CSV / JSON / text"]
PARSE --> ENRICH["FK Enrichment
caveats, corroboration,
field notes, discipline"]
ENRICH --> RESP["Response Envelope"]安全模型
此MCP打开攻击向量,连接的LLM客户端可以在该系统上执行工具。 它只能安装在受信任网段防火墙后隔离的专用取证工作站上。切勿在个人笔记本电脑、生产系统或包含调查范围外数据的机器上安装。
安装程序需要键入 security_hole 或通过 -AcknowledgeSecurityHole 在继续之前。这是一个有意的摩擦点。
额外的控制措施到位(目录分配列表、危险二进制文件的denylist、参数净化、, shell=False 执行)是纵深防御措施,而不是预防性控制。MCP没有加固,永远不应该面向互联网或其他不受信任的系统部署。
graph TB
INPUT["Tool Execution Request"] --> D{"Hardcoded Denylist
20 binaries + .exe variants"}
D -->|"cmd, powershell, pwsh,
wscript, cscript, mshta,
rundll32, regsvr32, certutil,
bitsadmin, msiexec, bash,
wsl, sh, msbuild, installutil,
regasm, regsvcs, cmstp, control"| BLOCKED["BLOCKED"]
D -->|"pass"| A{"YAML Catalog
Allowlist"}
A -->|"unknown binary"| REJECTED["REJECTED"]
A -->|"cataloged"| S{"Argument
Sanitization"}
S -->|"shell metacharacters,
execution flags, or
@file response-file"| REJECTED
S -->|"clean"| E["EXECUTE
subprocess.run(shell=False)"]所有执行用途 subprocess.run(shell=False)。只有YAML目录文件中定义的工具才能运行。危险的二进制文件(cmd、powershell、wscript等)被硬编码的denylist无条件阻止。检查参数中的shell元字符、危险标志(与执行相关: -e, --exec, --command, -enc),以及响应文件语法(@filename).
快速开始
在Windows取证工作站上,克隆仓库:
git clone https://github.com/AppliedIR/wintools-mcp.git; cd wintools-mcp或者,如果未安装git,请下载并解压缩ZIP:
Invoke-WebRequest https://github.com/AppliedIR/wintools-mcp/archive/refs/heads/main.zip -OutFile wintools.zip
Expand-Archive wintools.zip -DestinationPath . -Force; cd wintools-mcp-main然后运行安装程序:
.\scripts\setup-windows.ps1看 设置.md 有关详细的部署选项和SMB配置。
MCP工具(共10个)
发现(6个工具)
| 工具 | 说明 |
|---|---|
scan_tools | 扫描所有编目的取证工具,报告可用性和安装指南 |
list_windows_tools | 列出所有已编目的工具及其安装状态,可按类别进行筛选 |
list_missing_windows_tools | 列出未安装的工具,并附上安装指南和替代方案 |
check_windows_tools | 按名称检查特定工具的可用性 |
get_windows_tool_help | 获取特定于工具的帮助、标志、警告和解释指南 |
suggest_windows_tools | 给定工件类型,建议相关工具并检查可用性 |
证据访问(1个工具)
| 工具 | 说明 |
|---|---|
get_share_info | 获取SMB共享路径以进行证据访问(share_root、case_dir、evidence_dir、extractions_dir) |
KAPE发现(1个工具)
| 工具 | 说明 |
|---|---|
list_kape_targets | 按结构化类别列出可用的KAPE目标或模块。KAPE用于解析已收集的证据,而不是实时收集。 |
批量执行(1个工具)
| 工具 | 说明 |
|---|---|
batch_scan | 对目录中具有安全界限的所有文件运行工具(max_files上限、超时、每个工具的限制,如capa的100) |
通用执行(1个工具)
| 工具 | 说明 |
|---|---|
run_windows_command | 执行任何带有参数的编目工具(编目门控) |
所有工具包装器(Zimmerman套件、Hayabusa、mactime)都合并到 run_windows_command工具目录定义了每个二进制的输入标志、输出格式和FK知识映射。 batch_scan 将其扩展到具有安全帽的目录级操作。
工具目录
工具在YAML目录文件中定义 data/catalog/。目录当前包含 31个工具条目 跨越7个文件:
| 文件 | 计数 | 工具 |
|---|---|---|
zimmerman.yaml | 14 | AmcacheParser、AppCompatCacheParser、SetPxECmd、JLECmd、LECmd、MFTECmd、PECmd、RBCmd、RECmd、SBECmd、SQLECmd、SrumECmd、WxTCmd、bstring |
sysinternals.yaml | 5 | autorunsc、sigcheck、字符串、句柄、procdump |
memory.yaml | 4 | winpmem、dumpit、moneta、hollows_hunter |
timeline.yaml | 3 | 隼鸟、链锯、mactime |
analysis.yaml | 3 | capa,yara,密度cout |
collection.yaml | 1 | 咖啡 |
scripts.yaml | 1 | 获取InjectedThreadEx |
每个条目都定义了二进制名称、输入样式、输出格式、超时、FK知识名称、安装方法和搜索路径:
# data/catalog/zimmerman.yaml (excerpt)
category: zimmerman
tools:
- name: AmcacheParser
binary: AmcacheParser.exe
description: "Parse Amcache.hve for program execution evidence"
input_flag: "-f"
output_format: csv
timeout_seconds: 300
fk_tool_name: AmcacheParser
install_methods:
- method: direct
url: "https://ericzimmerman.github.io/#!index.md"
- method: dotnet
command: "dotnet tool install --global AmcacheParser"
install_paths:
- "C:\\Tools\\ZimmermanTools"响应信封
每个工具响应都被包裹在一个结构化的信封中,其中包含丰富的取证知识:
{
"success": true,
"tool": "run_windows_command",
"data": {"output": {"rows": ["..."], "total_rows": 42}},
"data_provenance": "tool_output_may_contain_untrusted_evidence",
"output_format": "parsed_csv",
"audit_id": "wintools-steve-20260220-001",
"examiner": "steve",
"caveats": [
"Amcache entries indicate installation, not necessarily execution",
"Timestamps reflect installation time, not last run"
],
"advisories": ["Cross-reference with Prefetch for execution confirmation"],
"corroboration": {
"artifacts": ["prefetch", "shimcache"],
"tools": ["PECmd", "AppCompatCacheParser"]
},
"field_notes": {"KeyLastWriteTimestamp": "Last time the registry key was modified"},
"discipline_reminder": "Evidence is sovereign -- if results conflict with your hypothesis, revise the hypothesis, never reinterpret evidence to fit"
}| 字段 | 来源 | 描述 |
|---|---|---|
audit_id | 审核 | 唯一标识符(wintools-{examiner}-{YYYYMMDD}-{NNN}) |
caveats | 法医知识 | 文物特定限制和解释警告 |
advisories | 法医知识 | 使用指南和常见误解纠正 |
corroboration | 法医知识 | 建议的交叉参考工件和工具 |
field_notes | 取证知识 | 来自工件定义的时间戳字段含义 |
discipline_reminder | 内置 | 旋转取证方法提醒(共14个,每次调用循环) |
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
WINTOOLS_TIMEOUT | 600 | 默认命令超时时间(秒) |
WINTOOLS_HOST | 127.0.0.1 | HTTP服务器绑定地址 |
WINTOOLS_PORT | 4624 | HTTP服务器端口 |
WINTOOLS_TOOL_PATHS | (无) | 其他二分查找目录(路径分隔) |
WINTOOLS_CATALOG_DIR | (自动) | 覆盖目录YAML目录的路径 |
VHIR_CASE_DIR | (无) | 活动案例目录;启用每个案例的审计跟踪 |
VHIR_AUDIT_DIR | (无) | 本地审核目录(覆盖VHIR_CASE_DIR/audit/) |
VHIR_SHARE_ROOT | (无) | SMB挂载根用于证据读取和提取写入(例如。, E:\cases\SRL2\) |
VHIR_ACTIVE_CASE | (无) | 审计条目中记录的案例标识符 |
VHIR_EXAMINER | 操作系统用户 | 审查员身份(小写slug) |
YAML配置文件
通过 --config path/to/config.yaml。环境变量覆盖YAML值。
| 密钥 | 默认值 | 描述 |
|---|---|---|
default_timeout | 600 | 子进程超时(秒) |
max_output_bytes | 52428800 | 子进程捕获限制(50MB) |
response_byte_budget | 10240 | MCP响应包络中的最大字节数(10KB) |
http_host | 127.0.0.1 | HTTP绑定地址 |
http_port | 4624 | HTTP端口 |
hayabusa_dir | C:\Tools\Hayabusa | 隼鸟安装目录 |
tool_paths | [] | 其他二分查找目录 |
api_keys | {} | 用于承载令牌身份验证的API密钥 |
承载令牌身份验证
所有API请求都需要一个有效的承载令牌。令牌是在安装过程中生成的 vhir_wt_ 前缀(24个十六进制字符,96位熵)。令牌存储在 config.yaml 在...之下 api_keys 并显示安装后,供检查者复制到他们的SIFT网关配置。
# config.yaml (on Windows)
api_keys:
vhir_wt_a1b2c3d4e5f6a1b2c3d4e5f6:
examiner: "default"
role: "examiner"每个请求都必须包括 Authorization: Bearer 头球没有有效令牌的请求将收到401响应。使用 --no-auth 仅在开发过程中。
从SIFT网关连接
要通过SIFT网关路由工具调用,请将wintools后端条目添加到 gateway.yaml 在SIFT工作站上:
backends:
wintools-mcp:
type: http
url: "http://WIN_IP:4624/mcp"
bearer_token: "vhir_wt_..."或者, vhir setup 在交互式配置期间提示输入Windows VM地址和令牌。
LLM客户端还可以直接连接到wintools mcp,而无需通过网关,在其mcp客户端配置中使用相同的承载令牌。
通过SMB访问证据
wintools mcp通过经过身份验证的SMB共享访问SIFT工作站上的案例目录。Valhuntir安装工(vhir join --wintools)自动配置。SMB共享为wintools提供了mcp:
- 读取权限 到证据文件(磁盘映像、注册表配置单元、事件日志、预回迁等)
- 写入权限 到提取目录(解析输出:CSV、时间线、JSON)
- 写入权限 到审核目录(每个工具执行日志)
集 VHIR_SHARE_ROOT 到Windows上的SMB装载点:
$env:VHIR_SHARE_ROOT = "E:\cases\SRL2\"共享必须使用经过身份验证的连接。限制对需要它的Valhuntir组件的访问。请参阅 设置.md 详细的SMB配置,包括共享创建、用户凭据和防火墙规则。
网络要求: SIFT网关通过HTTPS连接到wintools mcp,并使用承载令牌身份验证(端口4624)。Windows工作站通过SMB(端口445)连接到SIFT。隔离取证网络上的防火墙必须允许这两个连接。不应允许来自取证环境外部的连接。
审计跟踪
每次工具执行都会记录到审核目录中。解析顺序:明确 audit_dir 构造函数参数> VHIR_AUDIT_DIR 谁是 > VHIR_CASE_DIR/audit/.证据ID遵循以下格式 wintools-{examiner}-{YYYYMMDD}-{NNN} 并在进程重新启动时恢复序列编号。
安全考虑
假设所有Valhuntir组件都在隔离的取证网络上运行,受防火墙保护,不暴露于互联网或不受信任的系统。wintools mcp接受来自此网络中SIFT网关和LLM客户端的传入连接。这些组件间连接是预期的和有意的。该系统绝不能暴露在取证环境之外的网络中。
所有API请求都需要有效的承载令牌(vhir_wt_ 前缀)。令牌在安装过程中生成,必须安全地传输到SIFT网关配置或LLM客户端设置。这 --no-auth 该标志仅用于开发,不得在任何有真实证据的环境中使用。
加载到系统中的任何数据都有暴露于底层人工智能的风险。只将您愿意发送给人工智能提供商的数据放在这些系统上。
wintools mcp解析可能包含攻击者精心制作的恶意内容的取证工件(注册表配置单元、事件日志、预取文件、内存转储)。工具作为子流程运行 shell=False 以及目录门控执行以限制攻击面。硬编码的denylist、编目allowlist和参数净化是深度防御措施,而不是预防性控制。
通过SMB共享访问案例目录应使用经过身份验证的连接。份额应仅限于需要访问的Valhuntir组件。只读权限足以访问证据文件;提取和审核条目需要写访问权限。
证据处理
切勿将原始证据放在任何Valhuntir系统上。仅使用存在经过验证的原件或备份的工作副本。Valhuntir工作站通过人工智能连接的工具处理证据,加载到这些系统中的任何数据都可以传输到配置的人工智能提供商。将所有Valhuntir系统视为分析环境,而不是证据存储。
证据完整性由注册时记录的SHA-256哈希值验证。审查员可以选择通过以下方式将证据锁定为只读 vhir evidence lock。适当的证据完整性取决于此平台之外存在的经过验证的哈希、写阻断器和监管链程序。
案例目录可以位于外部或可移动介质上。ext4是完全权限支持的首选。NTFS和exFAT是可以接受的,但文件权限控制(只读保护)将无效。由于文件大小限制为4 GB,不建议使用FAT32。
负责任的使用和法律
虽然已经采取措施加强人在环控制,但最终每个审查员都有责任确保他们的调查结果准确完整。AI就像一个十六进制编辑器,是一个经过适当培训的事件响应专业人员使用的工具。用户有责任确保其使用符合适用的法律、法规和组织政策。仅在您有权分析的系统和数据上使用。
本软件按“原样”提供,不提供任何形式的保修。看 许可证 完整条款。
MITRE ATT&CK是MITRE公司的注册商标。SIFT工作站是SANS研究所的产品。
致谢
史蒂夫·安森的建筑和指导。克劳德代码(Anthropic)的实施。设计灵感来自Lenny Zeltser REMnux MCP.
明确披露
我做DFIR。我不是开发者。如果没有Claude Code处理实现,这个项目就不会存在。虽然在设计、测试和审查方面付出了巨大的努力,但我完全承认,我可能一直在努力工作,在某些方面并不聪明。我的目的是围绕如何利用这项技术提高事件响应的效率展开讨论,同时确保准确性的最终责任仍由人类检查员承担。
许可证
MIT许可证-请参阅 许可证
