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/Ubuntu:
sudo apt-get install jq - Fedora:
sudo dnf install jq - Arch Linux:
sudo pacman -S jq
- Debian/Ubuntu:
安装步骤
按照以下步骤设置并运行 bloodyad-mcp 服务器:
- 克隆仓库:
git clone https://github.com/dcollaoa/bloodyad_mcp.git
cd bloodyad-mcp
- 运行设置脚本:
执行适合你操作系统的脚本。这些脚本将构建 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.yaml、registry.yaml),并重启 AI 助手。 - 如果 bloodyAD 命令失败:检查参数(主机、域、用户、密码)、VPN、目标机器的可达性以及 bloodyAD 版本。
安全注意事项
- 每个命令都会传递凭据,但不会存储或记录。
- 服务器在 Docker 中以非根用户身份运行。
- 输出为纯文本,与 bloodyAD 的输出相同,无表情符号或额外的 Markdown 格式。
📄 许可证
本项目采用 MIT 许可证。
Scan to join WeChat group