Nel nostro recente articolo Esplorare un attacco brute force NTLM con Bloodhound abbiamo illustrato il modo in cui gli hacker continuano ad abusare del protocollo di autenticazione NTLM. In questo post, parleremo più in generale degli attacchi di base che interessano SAM, segreti LSA, SYSKEY e LSASS. Spiegheremo in che modo gli hacker utilizzano questi metodi per sottrarre credenziali da macchine Windows e sottolineeremo l’importanza che questi metodi siano monitorati dai team di sicurezza. Sebbene si tratti di attacchi di furto di credenziali noti e relativamente semplici, il fatto che siano ancora in circolazione suggerisce che vengano trascurati da alcuni team di sicurezza.
La ricerca di credenziali non crittografate tramite LSASS o l’acquisizione di SAM per NTLM o delle chiavi LSA per i suoi segreti ha un valore notevole per gli hacker. Un hacker non sarà soddisfatto del semplice accesso a una macchina se potrà fare molto di più con credenziali valide a sua disposizione in più fasi della “Kill Chain”.
Pertanto, il dumping delle credenziali viene spesso utilizzato dagli hacker durante il movimento laterale. Una volta ottenuti i nomi e le password di accesso degli account, gli hacker possono infiltrarsi ulteriormente nella rete di un’organizzazione, accedere a dati riservati ed eseguire comandi e programmi con privilegi più elevati.
Panoramica dell’estrazione di credenziali
A grandi linee, un potenziale hacker vorrà:
1. Ottenere gli hash NTLM per il cracking e la manipolazione offline.
- HKLM\SAM: contiene gli hash NTLMv2 delle password degli utenti
- HKLM\security: contiene segreti LSA e/o chiavi LSA con record di dominio memorizzati nella cache
- HKLM\system, detto anche SYSKEY: contiene chiavi che potrebbero essere utilizzate per crittografare segreti LSA e database SAM
2. Eseguire il dumping di LSASS per ottenere password non crittografate o hash NTLM (a seconda della versione di Windows presa di mira).
Nota: la funzionalità e le informazioni memorizzate possono variare. Ad esempio, vi sono differenze tra le macchine che si trovano in un dominio Active Directory e quelle che non lo sono.
Ora esaminiamo nel dettaglio i diversi componenti sopra citati.
1. SAM: HKLM\SAM
Il database Security Account Manager (SAM) è dove Windows memorizza le informazioni relative agli account degli utenti. Memorizza i nomi utente e gli hash delle password degli utenti e viene utilizzato per autenticare gli utenti quando cercano di effettuare l’accesso e fornire la password.
La lunghezza e la complessità degli hash variano a seconda dell’algoritmo utilizzato per crittografare la password. Potrebbe trattarsi di un semplice algoritmo di crittografia LM (Lan Manager) basato su DES o di una delle due versioni dell’algoritmo NTHash, NTLMv1 o NTLMv2, che generano 32 cifre esadecimali e sono derivate dal digest MD4.
Uno dei metodi più comuni per ottenere le password degli utenti è quello di eseguire il dumping del database SAM utilizzando uno strumento in grado di estrarre gli hash delle password o copiando direttamente il registro su un file [reg.exe save hklmSAM
] e lavorandoci offline con un’utilità software per estrarre gli hash delle password degli account utente memorizzati.
Una volta ottenuto l’hash LM o NTLM, è possibile eseguire un attacco brute force offline sull’hash della password, come spiegato in maggiore dettaglio più avanti in questo post.
2. Segreti LSA: HKLM\Security
Segreti LSA è un archivio utilizzato dall’autorità di protezione locale (LSA) in Windows.
Lo scopo dell’autorità di protezione locale è gestire il criterio di sicurezza locale di un sistema, il che, per definizione, significa che archivierà dati privati riguardanti, ad esempio, login, autenticazione e segreti LSA degli utenti. L’accesso all’archivio segreti LSA è concesso solo ai processi dell’account SYSTEM.
Segreti LSA archivia dati sensibili del sistema, come ad esempio:
- Password degli utenti
- Password di Internet Explorer
- Password degli account dei servizi sulla macchina che richiedono l’autenticazione con segreto
- Chiave di crittografia delle password di dominio memorizzate nella cache
- Password SQL
- Password dell’account SYSTEM
- Password dell’account per attività pianificate configurate
- Tempo rimanente fino alla scadenza di una copia non attivata di Windows
e molti altri. Le prime implementazioni di segreti LSA sono state decifrate rapidamente e strumenti come mimikatz sono anche in grado di scaricare segreti LSA da hive della memoria e del registro su alcune versioni di Windows.
3. SYSKEY: HKLM\System
Syskey, noto anche come strumento di blocco SAM, era presente nelle versioni meno recenti di Windows. Lo scopo di questa funzionalità è crittografare il database Security Account Manager (SAM) per offrire un ulteriore livello di protezione durante l’avvio della macchina.
Syskey protegge i dati di sicurezza solo quando il sistema operativo non è in esecuzione. Quando il sistema operativo è attivo, il valore di Syskey viene caricato in memoria, in modo che in seguito possa decrittografare il SAM. HKLM\SAM è collegato alla sottochiave SECURITY in HKLM\SECURITY\SAM.
La funzionalità Syskey non è più disponibile dal 2017, ma è presente in hklm\system nelle versioni di Windows in cui è attivata e configurata.
4. Eseguire il dumping di credenziali con LSASS
Fino al rilascio di Windows 8, era possibile utilizzare mimikatz su Windows per ottenere credenziali non crittografate da Local Security Authority Subsystem Service (LSASS).
Nel corso del tempo sono state suggerite diverse correzioni, ognuna delle quali ha migliorato la protezione di LSASS rendendo più difficile ottenere anche la password con hash. In Windows 10 Enterprise, inoltre, è presente il Controllo credenziali, che consente di isolare il processo LSASS anche da utenti con privilegi SYSTEM.
Estrazione di password con mimikatz su Windows 7:
Sono evidenti i cambiamenti quando si esegue lo strumento su Windows 10. Non vediamo la password non crittografata, ma acquisiamo l’hash NTLMv1.
Estrazione di password dall’hash NTLMv2
Ci sono molti modi per ottenere l’hash NTLM se non si ha accesso locale alla macchina presa di mira.
Lo strumento Responder è uno dei più utilizzati per questo scopo.
Esempio di hash NTLMv2 che è possibile generare con lo strumento Responder:
admin::M57oDBrlht:08ca45b7d6da58ee:88dcbe4346168966a153a0064958dae6:5b6740315c7830310000000000000b45c67103d07d7b95acd12dea11230e0000000052920b85f78d013c31cdb3b92f5d765c783030
Questo strumento offre numerose funzionalità, ma una pertinente a questo caso è la possibilità di richiedere le credenziali agli utenti per determinati servizi di rete. Ciò può consentire di ottenere password non crittografate o hash di password.
Per questo attacco lo strumento viene utilizzato per l’acquisizione di pacchetti LLMNR e l’estrazione dell’hash dalla combinazione di richiesta di verifica e risposta. Impostiamo lo strumento in modo che osservi i pacchetti giusti sulla rete, quindi, dalla macchina della vittima proviamo ad accedere a una risorsa di rete che in realtà non esiste. In questo modo, saremmo in grado di acquisire il traffico e da lì otterremmo l’hash NTLM.
Da una macchina Windows abbiamo provato ad accedere a una condivisione non esistente con il nome “MadeUpNetworkShare”; lo strumento era in esecuzione su una macchina sulla stessa rete e ha registrato la combinazione di richiesta di verifica e risposta, che a sua volta ha rivelato gli hash NTLM.
Come possiamo utilizzare gli hash delle password?
Ora che siamo in possesso dell’hash, abbiamo un paio di opzioni per cercare di estrarre la password non crittografata.
Attacco a dizionario/attacco brute force: questo metodo prevede l’uso di una lista di parole da confrontare con le password. Per questa operazione possiamo utilizzare strumenti disponibili pubblicamente, come John the Ripper, hashcat, Cain & Abel, Ophcrack e altri.
Attacco a rainbow table: questo metodo è più adatto quando si cerca di eseguire il cracking di un hash, ma richiede un database di possibili password e dei relativi hash precalcolati.
Esempio di cracking di password NTLMv1 con rainbow table (tratto da https://crackstation.net/):
È importante notare che in questo modo solo gli hash noti e senza salt possono essere riconvertiti da hash a password.
Se il cracking non è possibile per via della complessità della password, abbiamo a disposizione altre opzioni, ad esempio un attacco Pass-the-Hash (PtH). Richiede l’utilizzo di qualsiasi servizio sulla rete che effettua l’autenticazione mediante un hash della password piuttosto che la password stessa. Validi esempi sono servizi come psexec che comunicano tramite SMB.
Suggerimenti per prevenire l’estrazione di credenziali
Al fine di prevenire il dumping e l’estrazione di credenziali, le organizzazioni dovrebbero assicurarsi che i sistemi meno recenti sulla rete non utilizzino ancora password crittografate con LM nel database SAM e che LM (disabilitato per impostazione predefinita) non sia stato abilitato sui sistemi più recenti. Le password LM utilizzano solo un set di caratteri limitato, il che rende il cracking estremamente semplice.
Si consiglia inoltre di disabilitare NTLMv1. È infatti relativamente semplice estrarre la password da un hash NTLMv1 e, a meno che non venga utilizzata una configurazione diversa, la maggior parte dei servizi compatibili con NTLMv1 dovrebbe funzionare anche con NTLMv2.
Un modo per garantire che sia LM che NTLMv1 siano disabilitati è accedendo alla pagina GPO:
Apportate le seguenti modifiche di configurazione nel GPO per evitare l’utilizzo di NTLMv1:
Non è semplice eseguire il cracking dell’hash NTLMv2 se la password è lunga e univoca. Inoltre, essere in possesso dell’hash non rappresenta necessariamente un vantaggio per un hacker se non sono disponibili servizi che effettuano l’autenticazione tramite hash NTLM.
Si consiglia anche di abilitare il Controllo credenziali sulle macchine Windows 10 che lo supportano, in modo da ottenere una protezione maggiore per le credenziali NTLM e Kerberos.
Il modo più efficace che le organizzazioni hanno a disposizione per ridurre la superficie di attacco e proteggersi contro l’estrazione delle credenziali è utilizzare una soluzione di sicurezza di nuova generazione come SentinelOne, che sfrutta il machine learning e ActiveEDR.
Considerazioni finali
Potete evitare questi attacchi di base prestando attenzione alla vostra architettura di rete e ai servizi utilizzati nel vostro ambiente. Più in particolare, questi attacchi sono efficaci soprattutto contro bersagli che eseguono Windows 7 (e versioni precedenti), che, sebbene siano giunti alla fine del loro ciclo di vita, sono ancora prevalenti in numerose reti aziendali. Attualmente, molte organizzazioni utilizzano implementazioni più sicure come Kerberos in un dominio di gruppo, per evitare il tipo di vulnerabilità discusse in precedenza, oltre a implementare una piattaforma per la sicurezza degli endpoint affidabile e di nuova generazione per proteggere i dispositivi e la rete.
Riferimenti per MITRE ATT&CK
Dumping di credenziali – T1003
Pass-the-Hash (PtH) – T1075
Brute force – T1110