项目简介
PeMCP 工具包是一个 Python 脚本,用于对 Portable Executable (PE) 文件进行深度静态分析。它能够解析 PE 结构、检查文件内容、提取嵌入信息,并执行包括 PEiD 签名扫描、YARA 扫描、Capa 能力检测和 FLOSS 字符串提取在内的多种高级分析。除了命令行模式外,PeMCP 也可以作为 MCP 服务器运行,通过标准化的协议将分析结果和功能提供给 LLM 客户端。
主要功能点
- PE 结构解析: 全面解析 DOS 头、NT 头(文件头、可选头)、数据目录、节表等。
- 文件及节哈希: 计算文件和各节的 MD5、SHA1、SHA256,并集成纯 Python SSDeep 模糊哈希。
- 导入/导出分析: 详细列出导入的 DLL 和函数、延迟加载导入以及导出的函数。
- 资源与版本信息: 提取资源摘要和版本信息。
- 签名与能力检测: 支持加载 PEiD 签名进行打包/编译器检测,集成 YARA 规则扫描、Capa 程序能力分析。
- 字符串提取: 利用 FLOSS 进行高级字符串分析(静态、栈、紧密、解码字符串),也支持基本字符串提取和搜索。
- 其他元数据: 解析 Rich Header、调试信息、TLS 回调、加载配置、.NET COM 描述符等。
- 数字签名验证: 利用 'cryptography' 和 'signify' 库解析和验证 Authenticode 数字签名(如果依赖可用)。
- 文件操作工具: 提供对加载文件进行基本字符串提取、特定字符串搜索和 Hex Dump 的工具。
- 混淆处理辅助: 提供简单的 Base64/Base32/Hex 解码和单字节 XOR 解码工具。
- VirusTotal 查询: 提供工具查询加载文件在 VirusTotal 上的报告(需要配置 API 密钥)。
在 MCP 服务器模式下,上述分析能力通过工具形式暴露给 LLM 客户端。
安装步骤
- 安装 Python 3.7+: 确保系统安装了 Python 3.7 或更高版本。
- 克隆仓库:
git clone https://github.com/JameZUK/PeMCP/ cd PeMCP - 安装依赖: 项目使用 'requirements.txt' 管理依赖。在仓库根目录执行:
这会安装所有核心和可选依赖,包括运行 MCP 服务器模式所需的 'mcp[cli]'。脚本首次运行时也会尝试检测并提示安装缺失的依赖。pip install -r requirements.txt - 数据文件: PEiD 数据库 ('userdb.txt') 和 Capa 规则通常在运行时自动下载到脚本所在目录的子文件夹中,无需手动处理。
服务器配置 (供 MCP 客户端使用)
PeMCP MCP 服务器是一个外部进程,MCP 客户端需要知道如何启动它才能与之通信。您需要在您的 MCP 客户端配置中指定启动此服务器进程的命令和参数。
基本的启动命令和参数结构如下:
- Command: 'python'
- Arguments:
- 'PeMCP.py' (脚本路径,通常需要是绝对路径或相对于客户端启动目录的路径)
- '--mcp-server' (启用 MCP 服务器模式)
- '--input-file <文件路径>' (必填:指定服务器加载并分析的 PE 文件路径。此文件必须在服务器所在环境中可访问)
- 其他可选参数,例如:
- '--mcp-host <主机>' (服务器绑定地址,默认 '127.0.0.1')
- '--mcp-port <端口>' (服务器监听端口,默认 '8082')
- '--mcp-transport <传输协议>' (传输协议,'stdio' 或 'sse',默认 'stdio')
- '-v' 或 '--verbose' (启用详细日志,会影响 Capa/FLOSS 等库的日志输出)
- '--skip-capa', '--skip-floss', '--skip-peid', '--skip-yara' (跳过特定分析以加快启动速度)
- '--peid-db', '--yara-rules', '--capa-rules-dir', '--capa-sigs-dir' (指定分析所需数据文件的路径)
- '--floss-*' (FLOSS 分析的详细配置参数)
- '--skip-full-peid-scan', '--peid-scan-all-sigs-heuristically' (PEiD 扫描相关参数)
示例 MCP 客户端配置片段 (概念性,具体格式取决于客户端):
您的 MCP 客户端配置文件中,对应此服务器的条目可能看起来类似于这样 (JSON 格式,但不应直接将此示例块视为完整配置代码):
{ "name": "PEFileAnalyzerMCP", "description": "PE File Analysis Server", "command": ["/path/to/your/python", "/path/to/PeMCP/PeMCP.py"], "args": [ "--mcp-server", "--input-file", "/path/to/pe_samples/malware.exe", "--mcp-transport", "stdio", "--skip-capa", "--skip-floss" ], "transport": "stdio", // 其他客户端配置... }
请根据您的 MCP 客户端文档和实际脚本路径、PE 文件路径来配置 'command' 和 'args'。确保 MCP 服务器进程有权限访问 '--input-file' 指定的文件。
基本使用方法
- 启动服务器: 按照上述配置,通过您的 MCP 客户端启动 PeMCP MCP 服务器进程。例如,如果使用 'stdio' 传输协议,您可以在终端手动启动 (通常由客户端自动完成):
服务器启动后会先对 '--input-file' 进行分析,期间可能会有日志输出。分析完成后,服务器会监听 MCP 客户端的连接(stdio 模式下通过标准输入/输出通信)。cd /path/to/PeMCP /path/to/your/python PeMCP.py --mcp-server --input-file /path/to/pe_samples/sample.dll --mcp-transport stdio -v - 连接客户端: 配置并运行您的 MCP 客户端,使其连接到 PeMCP 服务器。
- 调用工具: 使用您的 MCP 客户端发现和调用服务器提供的工具。例如,您可以通过调用 'get_analyzed_file_summary' 获取文件概览,调用 'get_sections_info' 获取节表信息,调用 'search_floss_strings' 搜索特定字符串等。具体的工具列表和参数可以通过客户端的工具发现功能获取。
- 重新分析: 使用 'reanalyze_loaded_pe_file' 工具可以在不重启服务器的情况下,使用不同的分析选项(例如启用之前跳过的分析,或调整 FLOSS 参数)重新分析同一个预加载的文件。
信息
分类
AI与计算