b5null/Invoke-BadSuccessor.ps1
GitHub: b5null/Invoke-BadSuccessor.ps1
自动化利用 BadSuccessor 漏洞(CVE-2025-53779)在 Windows Server 2025 Active Directory 中实现 dMSA 权限提升的 PowerShell 脚本。
Stars: 46 | Forks: 5
# Invoke-BadSuccessor
滥用易受攻击的组织单位 (OU) 上的 **委托托管服务账户 (dMSA)** 创建权限,以在 Active Directory 环境中提升权限 (BadSuccessor 漏洞 – CVE-2025-53779)。
## 概述
`Invoke-BadSuccessor` 通过利用 Windows Server 2025 Active Directory 中的 dMSA 配置错误和委派,自动化了权限提升攻击链:
- 识别当前用户(或其所属组)具有 **CreateChild** 权限的 OU。
- 创建或重用 **机器账户**。
- 创建或重用 **委托托管服务账户 (dMSA)**。
- 授予用户对该 dMSA 的 **GenericAll** 权限。
- 配置属性:
- `msDS-DelegatedMSAState = 2`
- `msDS-ManagedAccountPrecededByLink = `(将 dMSA 链接到特权账户)
- 生成可直接与 **Rubeus** 配合使用的后续利用步骤(除非指定了 `-Quiet`)。
此技术滥用 dMSA 行为,通过使用机器账户凭据伪造 Kerberos 票据,并请求具有已链接的高权限账户权限的服务账户的 TGS 票据,从而实现权限提升。
## 功能
- 完全自动化的 dMSA 权限提升链。
- 安静模式 (`-Quiet`) 会隐藏后续利用指令。
- `-PrecededByIdentity` 选项的智能身份解析(接受用户、计算机或其他 AD 对象)。
- 处理常见的边缘情况,例如已存在的账户、错误的可分辨名称以及缺少 RID 500(默认管理员)。
- 纯粹使用 ActiveDirectory PowerShell 模块——无需外部二进制文件。
## 函数
### Get-ADObjectACL
用于 Active Directory 对象的底层 ACL 枚举器。封装了 `AD:` 驱动器上的 `Get-Acl`,并返回干净、可过滤的 ACE 列表,包含:
- `ObjectDN`
- `IdentityReference`
- `SecurityIdentifier`
- `ActiveDirectoryRights`
- `AccessControlType`
- 继承标志
支持:
- `-SearchBase` – 将枚举限制为特定的 DN(例如,目标 OU)
- `-ExcludeDefaultSIDs` – 过滤掉冗余的内置项(Everyone、Authenticated Users、SELF 等)
- `-ExcludeAdmins` – 过滤掉基于 RID 的域管理/基础架构组(Domain Admins、Enterprise Admins 等)
### Find-VulnerableOU
高级枚举助手,使用 `Get-ADObjectACL` 来查找用户(或其所属组)具有 **CreateChild** 权限的 OU。
它会解析:
- 指定的用户(或默认情况下的当前用户)
- 他们的传递组成员身份
- 所有 `SecurityIdentifier` 位于该 token 中 **且** `ActiveDirectoryRights` 包含 `CreateChild` 的 ACE
### Add-ADObjectACL
相当于 PowerView 的 `Add-DomainObjectAcl`,但仅使用 ActiveDirectory 模块。使用 `AD:` 上的 `Get-Acl` / `Set-Acl` 来添加 ACE。
支持的权限包括:
- `All`、`GenericAll`、`GenericRead`、`GenericWrite`
- `CreateChild`、`DeleteChild`
- `ReadProperty`、`WriteProperty`
- `Delete`、`WriteDacl`、`WriteOwner`
### Invoke-BadSuccessor
主攻击链函数,它会:
1. 查找用户具有 **CreateChild** 权限的第一个易受攻击的 OU。
2. 在该 OU 中创建或重用计算机账户。
3. 在该 OU 中创建或重用委托 MSA。
4. 授予用户对该 dMSA 的 **GenericAll** 权限。
5. 配置:
- 特权对象的 `msDS-DelegatedMSAState = 2`
- `msDS-ManagedAccountPrecededByLink = `。
6. 除非设置了 `-Quiet`,否则可选择打印用于后续利用的 Rubeus 命令。
## 用法
### 基础用法
```
Invoke-BadSuccessor
```
### 安静模式(无后续利用提示)
```
Invoke-BadSuccessor -Quiet
```
### 自定义名称和 DNS
```
Invoke-BadSuccessor -ComputerName "WEB01" -ServiceAccountName "webpool_dMSA" -ServiceDnsHostName "web01.internal"
```
### 自定义前置对象
```
Invoke-BadSuccessor -PrecededByIdentity "svc_app"
```
该脚本会自动在 Users、Computers 或域对象中解析此身份。
## 后续利用
## Rubeus
为票据伪造生成的示例命令:
```
Rubeus.exe hash /password:'Password123!' /user:Pwn$ /domain:
Rubeus.exe asktgt /user:Pwn$ /aes256: /domain:
Rubeus.exe asktgs /targetuser:attacker_dMSA$ /service:krbtgt/ /dmsa /opsec /ptt /nowrap /outfile:ticket.kirbi /ticket:
```
将 `` 和 `` 等占位符替换为先前步骤中的实际值。
## Impacket
为票据伪造生成的示例命令:
```
getST.py '/Pwn$:Password123!' -k -no-pass -dmsa -self -impersonate 'attacker_dMSA$'
```
## 要求
- 已安装 RSAT Active Directory PowerShell 模块(在 Evil-WinRM 或标准 PowerShell 中运行)。
## 安装说明
1. 克隆或下载此代码库。
2. 导入脚本:
```
. .\Invoke-BadSuccessor.ps1
```
3. 枚举易受攻击的 OU:
```
Find-VulnerableOU
```
4. 运行攻击链:
```
Invoke-BadSuccessor
```
## ⚠️ 免责声明
仅供教育和授权测试使用。仅在获得明确许可的情况下使用。作者对任何滥用行为不承担任何责任。
## 作者
- :skull: **B5null**
标签:Active Directory, AI合规, IPv6, Libemu, Plaso, PowerShell, Web报告查看器, Windows Server, 协议分析, 权限提升, 模拟器