BloodHound MCP Server

使用说明

项目简介

BloodHound MCP Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,它将 BloodHound 这款强大的 Active Directory 安全分析工具与 MCP 协议结合,使得用户可以通过自然语言查询 BloodHound 数据库,进行深入的安全态势分析。该项目旨在为安全专业人员提供更便捷、高效的 Active Directory 安全评估手段,并可通过 LLM 客户端以自然语言交互方式调用 BloodHound 的分析能力。

主要功能点

  • 自然语言查询接口: 允许用户使用自然语言向 BloodHound 数据库提出安全分析问题。
  • 全面的安全分析工具: 内置超过 75 个基于 BloodHound Cypher 查询的专业工具,涵盖域结构映射、权限提升路径、Kerberos 安全问题、证书服务漏洞、AD 健康状况评估、NTLM 中继攻击向量、委派滥用等多个安全分析类别。
  • 集成 BloodHound 和 Neo4j: 利用 BloodHound 存储的 Active Directory 关系数据,通过 Neo4j 数据库执行查询和分析。
  • MCP 服务器: 作为一个 MCP 服务器实现,可以与兼容 MCP 协议的 LLM 客户端进行交互,提供结构化的安全上下文信息和分析能力。

安装步骤

  1. 克隆仓库

    git clone https://github.com/MorDavid/BloodHound-MCP-AI.git
    cd BloodHound-MCP-AI
  2. 安装依赖

    pip install -r requirements.txt
  3. 配置环境变量 创建 '.env' 文件,或直接设置系统环境变量,配置 Neo4j 数据库连接信息:

    BLOODHOUND_URI=bolt://localhost:7687  # Neo4j URI,默认为 bolt://localhost:7687
    BLOODHOUND_USERNAME=neo4j           # Neo4j 用户名,默认为 neo4j
    BLOODHOUND_PASSWORD=bloodhoundcommunityedition # Neo4j 密码,默认为 bloodhoundcommunityedition

    注意: 请确保 Neo4j 数据库已启动,并且 BloodHound 数据已加载到数据库中。

服务器配置

为了让 MCP 客户端能够连接到 BloodHound MCP Server,需要在客户端的 MCP 服务器配置中添加以下信息。以下为 JSON 格式的配置示例,请根据实际情况进行调整。

{
  "serverName": "BloodHound-MCP",  // 自定义服务器名称,用于在客户端中标识
  "command": "python",             // 启动服务器的命令,这里使用 python 解释器
  "args": [                        // 启动命令的参数
    "<Your_Path>/BloodHound-MCP.py" // BloodHound-MCP.py 脚本的绝对或相对路径,请替换为实际路径
  ],
  "env": {                         // 环境变量配置(可选,如果已设置系统环境变量则无需在此配置)
    "BLOODHOUND_URI": "bolt://localhost:7687",       // Neo4j URI,与 .env 文件或系统环境变量保持一致
    "BLOODHOUND_USERNAME": "neo4j",                // Neo4j 用户名,与 .env 文件或系统环境变量保持一致
    "BLOODHOUND_PASSWORD": "bloodhoundcommunityedition" // Neo4j 密码,与 .env 文件或系统环境变量保持一致
  }
}

注意:

  • '<Your_Path>' 需要替换为 'BloodHound-MCP.py' 脚本所在的实际文件路径。
  • 如果已经在系统环境变量或 '.env' 文件中配置了 'BLOODHOUND_URI', 'BLOODHOUND_USERNAME', 'BLOODHOUND_PASSWORD',则 'env' 部分可以省略。
  • 'serverName' 可以自定义,用于在 MCP 客户端中引用该服务器配置。

基本使用方法

  1. 启动 MCP 服务器: 在 'BloodHound-MCP-AI' 仓库目录下,运行以下命令启动服务器:

    python BloodHound-MCP.py

    服务器默认使用 'stdio' 传输协议,启动后会监听标准输入输出。

  2. 配置 MCP 客户端: 在兼容 MCP 协议的 LLM 客户端中,配置上一步生成的服务器配置信息,确保客户端能够连接到 BloodHound MCP Server。

  3. 通过客户端发送自然语言查询: 使用 LLM 客户端,向 BloodHound MCP Server 发送自然语言的安全分析问题。例如:

    • "Show me all paths from kerberoastable users to Domain Admins" (显示从可 Kerberoast 用户到域管理员的所有路径)
    • "Find computers where Domain Users have local admin rights" (查找域用户拥有本地管理员权限的计算机)
    • "Identify Domain Controllers vulnerable to NTLM relay attacks" (识别易受 NTLM 中继攻击的域控制器)

    服务器会将自然语言查询转换为相应的 BloodHound Cypher 查询,并在 Neo4j 数据库中执行,最后将结果返回给客户端。

注意: 请确保 BloodHound 数据已正确采集并加载到 Neo4j 数据库中,并且 Neo4j 数据库服务正在运行。

服务器信息