返回市场
吉德拉MCP

吉德拉MCP

作者:13bm78 星标更新:2025-03-27

项目介绍

GhidraMCP

一个实现模型上下文协议(MCP)的Ghidra插件,用于AI辅助的二进制分析。

概述

GhidraMCP通过模型上下文协议(MCP)弥合了Ghidra强大的逆向工程能力和AI助手之间的差距。此插件使AI模型能够连接到Ghidra并协助进行二进制分析任务,从而使得逆向工程更加高效和易于访问。

特性

  • AI驱动的二进制分析:通过模型上下文协议连接AI助手到Ghidra
  • 自然语言接口:用普通英语询问关于二进制的问题
  • 深入代码洞察:获取详细的函数信息和反编译代码
  • 二进制结构分析:探索导入、导出和内存布局
  • 自动化安全分析:获得有关潜在安全漏洞的AI辅助见解
  • 基于套接字的架构:Ghidra与AI助手之间高性能通信
  • 跨平台兼容性:支持所有Ghidra支持的平台

安装

先决条件

  • Ghidra 11.2.1+
  • Java 17或更新版本
  • Python 3.8+(用于桥接脚本)

步骤

  1. 发布页面下载最新发布的ZIP文件
  2. 打开Ghidra
  3. 导航至文件 > 安装扩展
  4. 点击"+"按钮并选择下载的ZIP文件
  5. 重启Ghidra以完成安装
  6. 通过导航至文件 > 配置 > 杂项并勾选"MCPServerPlugin"旁边的框来启用扩展

使用

启动MCP服务器

在启用插件后打开Ghidra项目时,服务器会自动启动。默认情况下,它运行于:

  • 主机:localhost
  • 端口:8765

您可以通过检查Ghidra控制台中的消息来验证服务器是否正在运行:

MCP服务器已在端口8765上启动

连接AI助手

连接Claude

要将Claude连接到GhidraMCP插件:

  1. 安装MCP桥接脚本:

    pip install FastMCP
    
  2. 在您的Claude MCP设置中添加以下配置:

    {
      "mcpServers": {
        "ghidra": {
          "command": "python",
          "args": ["PATH-TO-REPO/GhidraMCP/ghidra_server.py"]
        }
      }
    }
    

桥接脚本创建了Ghidra和Claude之间的连接,使实时二进制分析通过自然语言成为可能。

可用工具

该插件通过MCP接口暴露了多个强大功能:

工具描述
get_function(address, decompile=False)获取特定地址处函数的详细信息
analyze_binary(question)就加载的二进制提出自然语言问题
get_imports()列出二进制中的所有导入函数
get_exports()列出二进制中的所有导出函数
get_memory_map()获取二进制的内存布局
connect_to_ghidra(host, port)连接到特定的Ghidra实例
rename_function(current_name, new_name)根据当前名称重命名函数
rename_data(address, new_name)根据特定地址重命名数据标签
extract_api_call_sequences(address)从函数中提取API调用以进行安全分析
identify_user_input_sources()查找二进制中的潜在用户输入源
generate_call_graph(address, max_depth=3)生成函数调用的分层表示
identify_crypto_patterns()检测二进制中的加密实现
find_obfuscated_strings()查找潜在的混淆字符串

示例查询

这里是一些您可以通过MCP兼容的AI客户端提出的示例问题:

  • "这个二进制使用了哪些加密算法?"
  • "能否显示位于0x401000处函数的反编译代码?"
  • "这种恶意软件做了哪些可疑的API调用?"
  • "根据其导入和导出,解释这个二进制的目的。"
  • "这个程序的身份验证机制是如何工作的?"
  • "这段代码中有任何潜在的缓冲区溢出漏洞吗?"
  • "这个二进制建立了哪些网络连接?"
  • "能否将这个函数重命名为更具描述性的名称?"
  • "展示所有可能被利用的用户输入源。"
  • "为主函数生成调用图。"

高级用法

安全分析能力

GhidraMCP提供了专门的安全分析工具:

API调用序列分析

从函数中提取并分类外部API调用,以进行安全分析。这有助于识别潜在危险的函数并理解它们的交互。

用户输入源

识别外部数据进入程序的入口点,这对于漏洞评估和理解攻击面至关重要。

调用图生成

创建结构化的调用图以理解执行流程,跟踪数据传播,并识别潜在的攻击路径。

加密模式检测

识别包括标准算法(如AES、RSA等)和基于代码模式的自定义实现在内的加密实现。

混淆字符串检测

查找可能通过XOR编码或逐字符构造等技术混淆的字符串。

自定义配置

您可以通过编辑MCPServerPlugin.java文件来修改服务器端口:

server.setPort(YOUR_CUSTOM_PORT);

分析工作流集成

GhidraMCP可以集成到现有的分析工作流中:

  1. 使用Ghidra的标准分析功能来识别感兴趣的区域
  2. 利用GhidraMCP的AI辅助功能进行更深层次的理解
  3. 结合AI见解与手动分析
  4. 根据AI见解重命名函数和数据以提高可读性

从源代码构建

要从源代码构建插件:

  1. 克隆此仓库

    git clone https://github.com/yourusername/GhidraMCP.git
    
  2. 按照Ghidra开发者指南设置Ghidra开发环境

  3. 设置GHIDRA_INSTALL_DIR环境变量:

    export GHIDRA_INSTALL_DIR=/path/to/ghidra
    
  4. 使用Gradle构建:

    ./gradlew buildExtension
    
  5. 扩展ZIP文件将在dist目录中创建

故障排除

常见问题

  • 连接问题:确保Ghidra实例正在运行且插件已启用
  • 端口冲突:如果端口8765已被占用,请在插件配置中修改端口
  • 桥接脚本错误:检查是否已通过pip install FastMCP安装了所有必需的Python包
  • 分析函数返回空结果:某些安全分析函数可能会返回空结果,如果二进制不包含相关模式

日志

检查以下日志以进行故障排除:

  • Ghidra控制台中的服务器端消息
  • ghidra_mcp_bridge.log中的桥接脚本问题

贡献

欢迎贡献!请随时提交问题或拉取请求。

  1. 分叉仓库
  2. 创建您的功能分支:git checkout -b feature/amazing-feature
  3. 提交更改:git commit -m '添加一些令人惊叹的功能'
  4. 推送到分支:git push origin feature/amazing-feature
  5. 打开拉取请求

致谢


GhidraMCP与NSA或Ghidra项目无关,也未得到它们的认可。