恶意软件分析工具

一款基于模型上下文协议(MCP)的自主恶意软件分析工具,结合Claude(LLMs)和Ghidra的无头分析器,支持通过自然语言进行复杂的逆向工程任务。

  • by QuiteArpit
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 QuiteArpit/HeadlessGhidraMCP

使用说明

Ghidra MCP分析师🕵️‍♂️

自主的 恶意软件分析代理 由 模型上下文协议(MCP).

这个工具弥合了两者之间的差距 克劳德(法学硕士) 和 Ghidra无头分析仪它允许您将二进制文件拖放到Claude Desktop中,并使用自然语言执行复杂的逆向工程任务——列出函数、反编译代码和提取字符串——所有这些都不需要打开Ghidra GUI。

🚀 特性

  • 自动反编译: 按需从函数中提取C代码。
  • 智能缓存: 分析二进制文件一次,并缓存结果以供即时后续查询。
  • 便携式日志记录: 自动将分析工件(JSON)保存到内部 analysis_output 文件夹。
  • 无需GUI: 使用Ghidra的自动化脚本完全无头运行。

🛠️ 先决条件

在运行此服务器之前,请确保已安装以下内容:

  1. Python 3.10+
  2. 吉德拉 (版本10.x或11.x)
    • 注意:确保您可以手动运行Ghidra至少一次以验证JDK设置。
  3. Claude桌面应用程序 (或任何其他符合MCP的客户端)

📦 安装

1.克隆存储库

git clone https://github.com/QuiteArpit/HeadlessGhidraMCP.git
cd HeadlessGhidraMCP

2.安装依赖项

pip install mcp

3.配置Ghidra路径(关键步骤!)

您需要告诉脚本Ghidra安装的位置。

选项A: 使用环境变量(推荐)

设置GHIDRA_HEADLESS_PATH变量以指向您的analyzeHeadless可执行文件。

  • Windows(PowerShell):
$env:GHIDRA_HEADLESS_PATH = "C:\Path\To\Ghidra\support\analyzeHeadless.bat"
  • Mac/Linux:
export GHIDRA_HEADLESS_PATH="/Path/To/Ghidra/support/analyzeHeadless"

选项B: 快速编辑

或者,您可以在文本编辑器中打开ghidra_mcp.py,并在第28行手动设置回退路径:

# ghidra_mcp.py
GHIDRA_HEADLESS_PATH = os.getenv("GHIDRA_HEADLESS_PATH", r"C:\Your\Actual\Path\support\analyzeHeadless.bat")

🔌 连接到克劳德桌面

要在Claude中使用此工具,您必须将其添加到Claude Desktop配置文件中。

1.找到配置文件:

  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • 雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json

2.添加服务器配置:

打开文件并添加以下JSON。 确保更新克隆此仓库的绝对路径。

{
  "mcpServers": {
    "ghidra-analyst": {
      "command": "python",
      "args": [
        "C:\\Users\\YOUR_USER\\Documents\\GitHub\\ghidra-mcp-analyst\\ghidra_mcp.py"
      ]
    }
  }
}

(注意:在Windows上,记得在路径中使用双反斜杠\。)

3.重新启动克劳德桌面:

你应该看到一个🔌 插头图标或活动连接器出现在输入栏中,表示该工具处于活动状态。


🧪 如何测试

  1. 找到 样品 此存储库中的文件夹(或使用您拥有的任何二进制文件)。
  2. 我们将使用 program.exe 作为测试对象。
  3. 打开Claude并键入以下提示:
I have a binary located at C:\Users\YOUR_USER\...\Sample\program.exe. Please analyze it. List the functions found, identify the main entry point, and then decompile the main function to explain what it does.

接下来会发生什么:

  1. 克劳德将请求允许逃跑 analyze_binary。单击“允许”。
  2. 等待10-20秒,让Ghidra在后台运行。
  3. 克劳德将收到分析数据并回答您的问题。
  4. JSON日志文件将在 analysis_output/ 此项目的文件夹供您参考。

📂 项目结构

  • ghidra_mcp.py:主MCP服务器脚本。
  • GhidraScripts/:包含在Ghidra内部运行的Java脚本(GhidraDataDump.Java)。
  • analysis_output/:(在运行时创建)存储JSON分析结果。
  • Sample/:包含用于测试的虚拟二进制文件。

⚠️ 故障排除

  • 错误: The system cannot find the file specified:

    • 你的 GHIDRA_HEADLESS_PATH 不正确。确保它指向 .bat Windows上的文件。
  • 错误: JAVA_HOME not found:

    • 确保Ghidra正常工作。您可能需要将JDK安装添加到系统PATH中。