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, 协议分析, 权限提升, 模拟器