返回 MCP 目录
public公开dns本地运行

bloodyad_mcp

bloodyAD工具的MCP包装器,提供Active Directory枚举和权限提升的自动化操作

article

README

🚀 bloodyad-mcp

bloodyad-mcp 是优秀工具 bloodyAD 的包装器。它是一个模型上下文协议(MCP)服务器,作为 bloodyAD 的包装器,允许从 Claude Desktop、Gemini-CLI 或其他 MCP 前端灵活自动地进行 Active Directory 枚举和利用。

README (English) | 中文文档 (Chinese) | README en Español

🚀 快速开始

项目目的

此服务器通过简单的 Python 函数公开 bloodyAD 命令,便于直接从 AI 助手或 MCP 环境中对 Active Directory 对象进行枚举、提取和利用,无需手动执行 bloodyAD 命令行界面。

✨ 主要特性

获取操作

  • bloodyad_raw — 以字符串形式执行任何 bloodyAD 命令(最大灵活性,高级模式)。
  • bloodyad_get_object — 检索 LDAP 对象属性,可选择解析 SD。
  • bloodyad_get_children — 列出对象的子项(用户、组、计算机、组织单位)。
  • bloodyad_get_dnsdump — 提取与 AD 集成的 DNS 区域。
  • bloodyad_get_membership — 获取目标所属的组。
  • bloodyad_get_writable — 列出经过身份验证的用户具有写入权限的对象。
  • bloodyad_get_search — 在 LDAP 数据库中执行高级搜索。
  • bloodyad_get_trusts — 以 ASCII 树形式显示域信任关系。

设置操作

  • bloodyad_set_object — 添加/替换/删除对象的属性。
  • bloodyad_set_owner — 更改对象的所有者。
  • bloodyad_set_password — 更改用户/计算机的密码。
  • bloodyad_set_restore — 恢复已删除的对象。

添加操作

  • bloodyad_add_computer — 添加新计算机。
  • bloodyad_add_dcsync — 为域中的受托人添加 DCSync 权限。
  • bloodyad_add_dnsRecord — 添加新的 DNS 记录。
  • bloodyad_add_genericAll — 授予受托人对对象的完全控制权(GenericAll)。
  • bloodyad_add_groupMember — 将成员(用户、组、计算机)添加到组中。
  • bloodyad_add_rbcd — 为对象上的服务添加基于资源的约束委派(RBCD)。
  • bloodyad_add_shadowCredentials — 为对象添加密钥凭证(Shadow Credentials)。
  • bloodyad_add_uac — 为对象添加用户账户控制(UAC)标志。
  • bloodyad_add_user — 添加新用户。

删除操作

  • bloodyad_remove_dcsync — 移除受托人对 DCSync 的权限。
  • bloodyad_remove_dnsRecord — 从 AD 环境中移除 DNS 记录。
  • bloodyad_remove_genericAll — 移除受托人对对象的完全控制权(GenericAll)。
  • bloodyad_remove_groupMember — 从组中移除成员。
  • bloodyad_remove_object — 移除对象(用户、组、计算机、组织单位等)。
  • bloodyad_remove_rbcd — 移除服务的基于资源的约束委派(RBCD)。
  • bloodyad_remove_shadowCredentials — 从对象中移除密钥凭证(Shadow Credentials)。
  • bloodyad_remove_uac — 从对象中移除用户账户控制(UAC)标志。

📦 安装指南

前提条件

在开始之前,请确保具备以下条件:

  • Docker Desktop:已安装并在系统上运行。
  • MCP 工具包:在 Docker Desktop 中启用。
  • AI 助手:支持 MCP 的 AI 助手,如 Gemini-CLI 或 Claude Desktop。
  • 互联网访问:在 Docker 镜像构建过程中需要访问互联网以克隆 bloodyAD。
  • VPN/网络访问:能够访问目标 Active Directory 域控制器(DC)。
  • jq(适用于 Linux 用户):轻量级且灵活的命令行 JSON 处理器。如果使用 Linux,可能需要安装它:
    • Debian/Ubuntusudo apt-get install jq
    • Fedorasudo dnf install jq
    • Arch Linuxsudo pacman -S jq

安装步骤


点击图片观看安装教程视频。

按照以下步骤设置并运行 bloodyad-mcp 服务器:

  1. 克隆仓库
git clone https://github.com/dcollaoa/bloodyad_mcp.git
cd bloodyad-mcp
  1. 运行设置脚本: 执行适合你操作系统的脚本。这些脚本将构建 Docker 镜像、配置 MCP 目录并更新你的 Gemini 设置。
    • Windows 用户
.\run.ps1

此脚本将指导你完成 Docker 镜像构建、MCP 配置和 Gemini settings.json 更新。 - Linux(或 WSL)用户

chmod +x run.sh
./run.sh

此脚本将执行与 PowerShell 脚本相同的设置步骤。请先使其可执行。 - macOS 用户

chmod +x run_macos.sh
./run_macos.sh

此脚本将执行与 PowerShell 脚本相同的设置步骤,适用于 macOS。请先使其可执行。

💻 使用示例

基础用法

你可以在 Claude Desktop、Gemini-CLI 等中启动以下操作:

# 获取 bloodyAD 帮助
print(default_api.bloodyad_raw(cli_args="-h"))

# 获取对象属性(例如,域的 objectSid)
print(default_api.bloodyad_get_object(target='DC=fluffy,DC=htb', attr='objectSid', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 列出域的子对象
print(default_api.bloodyad_get_children(target='DC=fluffy,DC=htb', otype='domain', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 转储区域的 DNS 记录
print(default_api.bloodyad_get_dnsdump(zone='fluffy.htb', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 获取用户的组成员身份
print(default_api.bloodyad_get_membership(target='svc_mssql', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 列出经过身份验证的用户可写入的对象
print(default_api.bloodyad_get_writable(user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 执行高级 LDAP 搜索
print(default_api.bloodyad_get_search(base='DC=fluffy,DC=htb', filter='(objectClass=user)', attr='sAMAccountName', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 更改用户密码
print(default_api.bloodyad_set_password(target='CN=TestUser,CN=Users,DC=fluffy,DC=htb', newpass='NewSecurePassword123!', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

# 添加新用户
print(default_api.bloodyad_add_user(samAccountName='NewUser', newpass='NewUserPass123!', user='fluffy.htb\svc_mssql', password='MssqlService01!', host='dc01.fluffy.htb'))

📚 详细文档

架构

AI 助手 (Gemini-CLI/Claude Desktop) → MCP 网关 → bloodyad-mcp → bloodyAD 命令行界面 (Kali)

故障排除

  • 如果工具未显示:检查构建、日志、YAML 文件(custom.yamlregistry.yaml),并重启 AI 助手。
  • 如果 bloodyAD 命令失败:检查参数(主机、域、用户、密码)、VPN、目标机器的可达性以及 bloodyAD 版本。

安全注意事项

  • 每个命令都会传递凭据,但不会存储或记录。
  • 服务器在 Docker 中以非根用户身份运行。
  • 输出为纯文本,与 bloodyAD 的输出相同,无表情符号或额外的 Markdown 格式。

📄 许可证

本项目采用 MIT 许可证。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端