项目简介

BloodHound MCP (Model Context Protocol) 是 BloodHound 工具的创新扩展,旨在使大型语言模型 (LLM) 能够通过自然语言查询与 Active Directory (AD) 和 Azure Active Directory (AAD) 环境进行交互和分析。通过利用 LLM 的强大功能,BloodHound MCP 允许用户使用简单的对话命令对其 AD/AAD 环境执行复杂查询并检索见解。

主要功能点

  • 自然语言查询: 使用对话式语言查询您的 AD/AAD 环境,无需手动编写 Cypher 查询。
  • LLM 驱动的分析: 利用大型语言模型的功能来解释和执行查询。
  • 无缝集成: 与存储在 Neo4j 中的现有 BloodHound 数据配合使用,为复杂分析提供用户友好的界面。
  • 可定制: 轻松配置系统以适应您的特定环境和工具。
  • 提供丰富的工具: 内置大量预定义的工具,用于执行各种 BloodHound 查询,涵盖域、用户、计算机、权限、会话、高价值目标、证书服务、Azure AD 等多个方面的数据分析。
  • 支持自定义查询: 允许通过 'tool://run_query' 工具执行自定义 Cypher 查询,以应对更复杂或特定的分析需求。

安装步骤

由于 BloodHound MCP 是 BloodHound 工具的扩展,因此它可能需要与 BloodHound 和 Neo4j 数据库一起部署。具体的安装步骤可能需要参考 BloodHound 及其扩展的官方文档。通常,您需要:

  1. 安装 Neo4j 数据库: BloodHound MCP 依赖 Neo4j 存储和查询 AD/AAD 数据。确保您已安装并配置 Neo4j 数据库。
  2. 导入 BloodHound 数据: 使用 BloodHound 收集 AD/AAD 环境数据,并将其导入到 Neo4j 数据库中。
  3. 部署 BloodHound MCP 服务器: 将 'server.py' 文件部署到服务器环境中。可能需要安装必要的 Python 依赖,例如 'mcp' 和 'neo4j' Python 库。
  4. 配置环境变量: 根据您的 Neo4j 数据库配置,设置以下环境变量:
    • 'BLOODHOUND_URI': Neo4j 数据库的 URI (例如 'bolt://localhost:7687')
    • 'BLOODHOUND_USERNAME': Neo4j 用户名 (例如 'neo4j')
    • 'BLOODHOUND_PASSWORD': Neo4j 密码 (例如 'bloodhound')

服务器配置

以下 JSON 配置信息可用于 MCP 客户端配置 BloodHound MCP 服务器。请根据您的实际部署环境调整 '<PATH_TO_THE_PROJECT>' 为 'server.py' 文件所在的实际路径。

{
  "mcpServers": {
    "BloodHound": {
      "name": "BloodHound",  // 服务器名称,客户端用于标识和引用
      "isActive": true,     // 是否激活此服务器配置
      "command": "uv",      // 启动服务器的命令,这里假设使用 uv 运行器
      "args": [             // 命令参数列表
        "run",              // uv run 命令
        "--with",           // 附加依赖
        "mcp[cli],neo4j", // 指定需要安装的依赖,包括 mcp 命令行工具和 neo4j 驱动
        "mcp",              // 运行 mcp 命令
        "run",              // mcp run 子命令,用于运行服务器
        "<PATH_TO_THE_PROJECT>server.py" // 服务器 Python 脚本的路径,需要替换为实际路径
      ],
      "env": {              // 环境变量
        "BLOODHOUND_URI": "bolt://localhost:7687",    // Neo4j 数据库 URI
        "BLOODHOUND_USERNAME": "neo4j",              // Neo4j 用户名
        "BLOODHOUND_PASSWORD": "bloodhound"           // Neo4j 密码
      }
    }
  }
}

注意:

  • '<PATH_TO_THE_PROJECT>' 需要替换为 'server.py' 脚本在服务器上的实际文件路径。
  • 'command' 和 'args' 中的命令和参数可能需要根据您的服务器环境和 Python 运行方式进行调整。例如,如果您直接使用 'python' 命令运行脚本,可以将 'command' 设置为 'python',并将 'args' 调整为 '["<PATH_TO_THE_PROJECT>server.py"]'。
  • 确保 MCP 客户端能够通过配置的命令和参数成功启动 BloodHound MCP 服务器。

基本使用方法

  1. 启动 MCP 服务器: 根据上述服务器配置,使用 MCP 客户端启动 BloodHound MCP 服务器。服务器将监听在配置的端口 (默认为 3000) 或通过 stdio 进行通信。
  2. 与 LLM 客户端交互: 使用支持 MCP 协议的 LLM 客户端(例如实现了 MCP 客户端的应用程序或工具),连接到 BloodHound MCP 服务器。
  3. 自然语言查询: 通过 LLM 客户端,使用自然语言向 BloodHound MCP 服务器提出关于 AD/AAD 环境的查询。
  4. 利用预定义工具: LLM 客户端可以调用 BloodHound MCP 服务器提供的各种预定义工具 (例如 'tool://list_users', 'tool://find_privileged_users') 来执行特定的数据检索和分析任务。
  5. 自定义查询: 对于更复杂的需求,可以使用 'tool://run_query' 工具,结合 Cypher 查询语句,执行自定义的 Neo4j 数据库查询。
  6. 接收结果: 服务器会将查询结果以 JSON-RPC 响应的形式返回给 LLM 客户端,客户端可以解析并展示这些结果。

通过 BloodHound MCP 服务器,LLM 应用可以方便地访问和分析 BloodHound 收集的 AD/AAD 环境数据,从而实现基于自然语言的安全态势感知和渗透测试辅助功能。

信息

分类

AI与计算