使用说明
项目简介
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 客户端进行交互,提供结构化的安全上下文信息和分析能力。
安装步骤
-
克隆仓库
git clone https://github.com/MorDavid/BloodHound-MCP-AI.git cd BloodHound-MCP-AI -
安装依赖
pip install -r requirements.txt -
配置环境变量 创建 '.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 客户端中引用该服务器配置。
基本使用方法
-
启动 MCP 服务器: 在 'BloodHound-MCP-AI' 仓库目录下,运行以下命令启动服务器:
python BloodHound-MCP.py服务器默认使用 'stdio' 传输协议,启动后会监听标准输入输出。
-
配置 MCP 客户端: 在兼容 MCP 协议的 LLM 客户端中,配置上一步生成的服务器配置信息,确保客户端能够连接到 BloodHound MCP Server。
-
通过客户端发送自然语言查询: 使用 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 数据库服务正在运行。
信息
分类
AI与计算