项目简介

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 客户端。

安装步骤

  1. 安装 Python 3.7+: 确保系统安装了 Python 3.7 或更高版本。
  2. 克隆仓库:
    git clone https://github.com/JameZUK/PeMCP/
    cd PeMCP
  3. 安装依赖: 项目使用 'requirements.txt' 管理依赖。在仓库根目录执行:
    pip install -r requirements.txt
    这会安装所有核心和可选依赖,包括运行 MCP 服务器模式所需的 'mcp[cli]'。脚本首次运行时也会尝试检测并提示安装缺失的依赖。
  4. 数据文件: 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' 指定的文件。

基本使用方法

  1. 启动服务器: 按照上述配置,通过您的 MCP 客户端启动 PeMCP 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
    服务器启动后会先对 '--input-file' 进行分析,期间可能会有日志输出。分析完成后,服务器会监听 MCP 客户端的连接(stdio 模式下通过标准输入/输出通信)。
  2. 连接客户端: 配置并运行您的 MCP 客户端,使其连接到 PeMCP 服务器。
  3. 调用工具: 使用您的 MCP 客户端发现和调用服务器提供的工具。例如,您可以通过调用 'get_analyzed_file_summary' 获取文件概览,调用 'get_sections_info' 获取节表信息,调用 'search_floss_strings' 搜索特定字符串等。具体的工具列表和参数可以通过客户端的工具发现功能获取。
  4. 重新分析: 使用 'reanalyze_loaded_pe_file' 工具可以在不重启服务器的情况下,使用不同的分析选项(例如启用之前跳过的分析,或调整 FLOSS 参数)重新分析同一个预加载的文件。

信息

分类

AI与计算