Windows内存取证MCP
警告:概念验证 这是为研究和CTF目的开发的概念验证实现。 使用风险自负。 不建议在没有彻底测试和验证的情况下进行生产法医调查。
用于Windows内存取证的模型上下文协议(MCP)服务器。为AI代理提供33个工具,用于使用Volatility 3、MemProcFS和CLR分析后端分析内存转储。
作者 雅各布·克雷尔
先决条件
在运行安装程序之前,请确保您已经:
- Python 3.10+ - 从python.org下载
- Visual C++构建工具 -编译yara-python时需要
- 下载Visual C++构建工具 - 在安装过程中,选择 “用C++进行桌面开发” 工作量 - 这是YARA扫描功能所必需的
快速设置(一个命令)
# Clone and setup
git clone https://github.com/0xhackerfren/windows-memory-forensics-mcp.git
cd windows-memory-forensics-mcp
.\setup.ps1安装脚本将:
- 创建Python虚拟环境
- 安装所有依赖项(Volatility 3、MemProcFS、pefile、yara-python)
- 验证安装
- 打印Cursor/Claude的配置说明
设置后,使用内存转储进行验证:
python verify_setup.py C:\path\to\memory.rawAI代理使用
有关AI代理指南,请参阅 AGENT_RULES.md -此文件包含:
- 完整的工具参考
- 调查工作流程模式
- 常见分析模式
- 示例命令
您可以将AGENT_RULES.md用作:
- 游标规则(复制到
.cursor/rules/) - 克劳德桌面系统提示
- 参考文件
免责声明
该软件“按原样”提供,用于研究、教育和CTF目的。
- 无任何保证或担保 准确性或完整性
- 彻底测试 在用于真实的法医证据之前
- 不用于生产用途 -独立验证所有结果
- 作者是 不负责任 对于由此工具得出的任何损坏、数据丢失或错误结论
- 始终遵循适当的监管链程序进行真正的法医调查
特性
- 可插拔后端:波动率3、MemProcFS、cdb.exe、dotnet转储
- 过程分析:列出进程、命令行、DLL、句柄
- 恶意软件检测:故障、隐藏模块检测、注射检测
- 内存提取:VAD转储(原始和重建),任意内存读取
- CLR/。网络分析:深。通过迷你转储上的SOS命令进行NET检查
- 分阶段有效载荷重建:从环境变量中提取和解码有效载荷(PASTALOADER、GrimResource模式)
- 网络取证:网络连接枚举
MCP客户端配置
光标IDE
添加到 .cursor/mcp.json (如果文件不存在,请创建该文件):
{
"mcpServers": {
"memory-forensics-mcp": {
"command": "C:/path/to/windows-memory-forensics-mcp/venv/Scripts/python.exe",
"args": ["C:/path/to/windows-memory-forensics-mcp/src/memory_forensics_mcp.py"]
}
}
}重要:使用虚拟环境Python(venv/Scripts/python.exe)以确保依赖关系可用。
重新启动Cursor以加载MCP。
克劳德桌面/克劳德代码
添加到 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"memory-forensics-mcp": {
"command": "C:/path/to/windows-memory-forensics-mcp/venv/Scripts/python.exe",
"args": ["C:/path/to/windows-memory-forensics-mcp/src/memory_forensics_mcp.py"]
}
}
}重新启动Claude Desktop以加载MCP。
可用工具(33)
过程分析
| 工具 | 说明 |
|---|---|
list_processes | 列出所有带有PID、名称和时间戳的进程 |
get_cmdline | 获取进程的命令行参数 |
list_dlls | 列出进程加载的DLL |
ldrmodules | 比较模块列表以检测隐藏的模块 |
handles | 列表进程句柄 |
handles_enriched | 处理过滤、摘要和交叉引用 |
内存提取
| 工具 | 说明 |
|---|---|
vadinfo | 列出进程的虚拟地址描述符 |
dump_vad | 将VAD区域转储到文件(带PE重建) |
dump_vad_raw | 转储原始VAD字节而不进行重建 |
read_virtual_memory | 从进程中读取任意虚拟内存 |
read_physical_memory | 读取给定地址的物理内存 |
memprocfs_get_minidump | 提取Winchest兼容的迷你转储 |
VFS浏览(MemProcFS)
| 工具 | 说明 |
|---|---|
vfs_list | 列出MemProcFS虚拟文件系统中的目录条目 |
vfs_read | 从MemProcFS VFS中的文件读取字节 |
vfs_export | 将文件从MemProcFS VFS导出到磁盘 |
恶意软件检测
| 工具 | 说明 |
|---|---|
malfind | 查找注入或可疑代码 |
find_hidden_modules | 查找不在PEB加载器列表中的模块 |
yara_scan | 使用自定义YARA规则扫描内存 |
网络取证
| 工具 | 说明 |
|---|---|
netscan | 扫描网络连接 |
filescan | 扫描内存中的文件对象 |
注册分析
| 工具 | 说明 |
|---|---|
list_registry_hives | 列出内存中找到的注册表配置单元 |
registry_printkey | 从内存中打印注册表键值 |
CLR/。网络分析
| 工具 | 说明 |
|---|---|
list_clr_modules | 列出带地址的CLR程序集(通过SOS) |
分阶段有效载荷分析
| 工具 | 说明 |
|---|---|
get_process_environment | 从PEB中提取环境变量 |
reconstruct_staged_payload | 从分段环境变量重建有效载荷 |
标记和时间线(AI工作流)
| 工具 | 说明 |
|---|---|
add_tag | 添加标签以跨工具调用跟踪发现 |
list_tags | 列出会话中的所有标签 |
clear_tags | 清除所有标签 |
add_timeline_event | 将事件添加到调查时间表中 |
list_timeline | 列出时间线事件 |
clear_timeline | 清除时间线事件 |
效用
| 工具 | 说明 |
|---|---|
check_installation | 检查后端安装状态 |
list_capabilities | 列出所有可用工具 |
get_documentation | 获取使用文档 |
用法示例
基本过程分析
# List all processes
result = list_processes(memory_file="C:/evidence/memory.raw")
for proc in result["results"]:
print(f"PID {proc['PID']}: {proc['ImageFileName']}")
# Get command line for suspicious process
cmdline = get_cmdline(memory_file="C:/evidence/memory.raw", pid=1234)
print(cmdline["results"])检测隐藏/注入模块
# Use ldrmodules to find modules with suspicious flags
ldr = ldrmodules(memory_file="memory.raw", pid=3120)
for mod in ldr["results"]:
if not mod["InLoad"] and not mod["InInit"] and not mod["InMem"]:
print(f"Hidden module: {mod['Base']} - {mod['MappedPath']}")
# Or use the automated detection
hidden = find_hidden_modules(memory_file="memory.raw", pid=3120)
print(f"Found {hidden['count']} hidden modules")检测分段有效载荷(PASTALOADER/GrimResource模式)
# Extract environment variables with a specific prefix
env = get_process_environment(
memory_file="memory.raw",
pid=3120,
filter_prefix="B_" # PASTALOADER uses B_1, B_2, ... B_N
)
print(f"Found {env['filtered_count']} staged payload chunks")
# Reconstruct the payload
payload = reconstruct_staged_payload(
memory_file="memory.raw",
pid=3120,
var_prefix="B_",
decode_algorithm="pastaloader",
output_path="./output/reconstructed_payload.bin"
)
print(f"Payload MD5: {payload['md5']}")后端
安装脚本会自动安装所有后端:
| 后端 | 目的 | 状态 |
|---|---|---|
| 波动性3 | 经典内存取证 | 由setup.py安装 |
| MemProcFS | VFS访问、迷你转储、可靠的VA读取 | 由setup.py安装 |
| Pefile | PE文件解析 | 由setup.py安装 |
| yara-python | YARA规则扫描 | 由setup.py安装(可能需要Visual C++) |
可选外部工具
| 工具 | 目的 | 安装命令 |
|---|---|---|
| cdb.exe | 深度CLR/SOS分析 | 安装Windows SDK调试工具 |
| .net转储 | .NET核心转储分析 | dotnet tool install -g dotnet-dump |
后端选择
大多数工具支持 engine 参数:
# Auto-select best available backend (default)
list_processes(memory_file="memory.raw", engine="auto")
# Force Volatility 3
list_processes(memory_file="memory.raw", engine="volatility")
# Force MemProcFS
list_processes(memory_file="memory.raw", engine="memprocfs")故障排除
常见问题
| 问题 | 解决方案 |
|---|---|
| “没有可用后端” | 运行 .\setup.ps1 安装依赖项 |
| “找不到mcp模块” | 使用venv Python: venv/Scripts/python.exe |
| “找不到内存文件” | 使用内存文件的绝对路径 |
| “yara-python安装失败” | 安装Visual C++生成工具,然后重试 |
| “找不到内核符号” | 从Microsoft自动下载波动性-确保互联网接入 |
验证安装
# Check backends only
python verify_setup.py --check-only
# Full test with memory file
python verify_setup.py C:\path\to\memory.raw手动安装
如果 setup.ps1 失败,请手动安装:
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install mcp volatility3 pefile memprocfs项目结构
windows-memory-forensics-mcp/
+-- src/
| +-- memory_forensics_mcp.py # Main MCP server
+-- examples/
| +-- basic_analysis.py # Basic usage examples
| +-- malware_detection.py # Malware detection workflow
| +-- staged_payload.py # Staged payload reconstruction
| +-- quickstart.py # Quick verification script
+-- .cursor/
| +-- mcp.json.example # Cursor configuration example
+-- setup.ps1 # One-command setup script
+-- verify_setup.py # Installation verification
+-- AGENT_RULES.md # AI agent usage guide
+-- requirements.txt # Python dependencies
+-- pyproject.toml # Package metadata
+-- LICENSE # MIT License
+-- README.md # This file需求
- Windows 10/11
- Python 3.10+
- PowerShell 5.1+(用于setup.ps1)
所有Python依赖项都由自动安装 setup.ps1.
贡献
欢迎投稿!拜托:
- 克隆该仓库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
作者
雅各布·克雷尔 -创建者和维护者
致谢
相关项目
______________________________________________________________________
概念验证 -根据真实世界的DFIR调查创建。战斗测试了HTB夏洛克挑战,包括Novitas(疯狂难度)。
*使用风险自负。始终通过多种方法验证法医调查结果。*
