search feed

Password Cracking e Privilege escalation

COLONIAL PIPELINE ATTACK

Il 29 Aprile 2021 vi ricorderete tra i tanti,  l’attacco informatico alla rete del gasdotto Pipeline co nel New Jersey (USA). Gli investigatori sospettarono che gli hacker avessero ottenuto gli accessi agli account di sistema da una fuga di notizie nel dark web.
Secondo un consulente per la sicurezza informatica che ha gestito le fasi dell’incident response, l’hack che ha danneggiato i sistemi del più grande gasdotto degli Stati Uniti e ha portato a carenze in tutta la costa orientale è stato il risultato di una singola password compromessa.

Gli hacker sono entrati nelle reti di Pipeline Co. il 29 aprile attraverso un account VPN, che consentiva ai dipendenti di accedere in remoto alla rete di computer dell’azienda, ha affermato Charles Carmakal, vicepresidente senior della società di sicurezza informatica. L’account non era più in uso al momento dell’attacco, ma poteva ancora essere utilizzato per accedere alla rete di Colonial, ha affermato. Tuttavia, Carmakal dichiarava anche di non essere sicuro che le cose furono andate così e che gli hacker abbiano ottenuto la password illegalmente con altre modalità sconosciute.

PASSWORD CRACKING
La ricerca di credenziali di accesso ai sistemi Windows tramite LSASS o l’acquisizione del database SAM (Security Account Manager) ha un valore notevole per le organizzazioni criminali. Un hacker spesso non sarà soddisfatto del semplice accesso ad una macchina se potrà fare molto di più con credenziali valide a sua disposizione, coperte da policy privilegiate in più fasi della “Kill Chain. Il dumping delle credenziali viene spesso utilizzato dagli hacker durante la fase del pivoting (movimento laterale). Una volta tutti ottenuti gli username e le password di accesso degli account di sistema, chiavi crittografiche, database e registri, possono infiltrarsi ulteriormente nella rete di un’organizzazione aziendale, al fine di accedere a dati riservati ed eseguire comandi e programmi con privilegi più elevati, grazie al Privilege escalation appena menzionato.

Esistono diverse tecniche di cracking (decifratura) da attuare dopo aver acquisito illegalmente queste informazioni che spesso i sistemi le oscurano e le cifrano tramite qualche algoritmo di hash, le modalità variano anche in base alla tipologia di sistema operativo, applicativo in uso e all’algoritmo utilizzato dalla funzione di hash. Sul panorama hacking ma nel nostro caso Pentesting, vedremo alcune di queste tecniche.

RAINBOW TABLE

Le Rainbow table sono strumenti per decifrare password con origini che risalgono alla metà dei primi anni ’80, nella pratica è una grande tabella precalcolata progettata per memorizzare l’output delle funzioni di hash sulla base di un gran numero di password date in input, con lo scopo di poterle attraverso combinazioni a riduzione e confronto decifrarle in testo normale. “Arcobaleno” si riferisce ai colori utilizzati all’interno di una tabella per rappresentare le diverse funzioni e le fasi a riduzione, queste creano una sorta di arcobaleno colorato e ad ogni colore corrisponde un numero di iterazioni.

Come funzionano le tabelle Rainbow?

Per motivi di sicurezza gli applicativi come database, ATM, sistemi operativi, Mail, Cloud, Server, ecc.. da diversi anni in genere memorizzano le password degli utenti utilizzando le funzioni di hash come: DES, 3DES, MD5, NTLM2, SHA256, SHA512. Gli algoritmi di hash criptano le password rendendole indecifrabili a chiunque senza dare possibilità in teoria permettere di invertire la funzione utilizzata in modo da recupere il testo in chiaro da quello cifrato. Questa è una delle caratteristiche che le differenziano proprio dalle funzioni crittografiche ovvero la caratteristica di essere unidirezionali. La loro violazione può essere tecnicamente ottenuta tramite attacchi di forza bruta, man mano che l’insieme dei possibili risultati delle password cresce, diventa sempre più complesso (se non utilizzata un’adeguata potenza di calcolo).
Le tabelle Rainbow riducono notevolmente la complessità nel decifrare un gran numero di password attraverso un set di dati pregenerato di hash di password più comuni. Dopo diverse fasi di riduzione mediante il quale gli hash vengono suddivisi in componenti più piccoli e collegati a parole e lettere in modo da rivelare man mano intere password in chiaro.

 Le moderne minacce alle password vanno ben oltre le tabelle Rainbow, questo vuol dire che stanno ormai diventando obsolete e ciò non è solo dovuto agli “algoritmi di salting” che le rende inefficaci. Da tempo sono state sostituite da pratiche più avanzate basate sullo sfruttamento della potenza di calcolo che le rendono meno ostacolate da limitazioni. Le Rainbow table raramente forniscono valore aggiunto rispetto al cracking ottimizzato basato su GPU, perché sono molto specifiche per una determinata tipologia di password, si può dire che sono tecniche ridondanti e divengono più efficaci solo per casi molto specifici. Quando la GPU è diventata un modo alternativo per decifrare le password, questo ha enormemente aumentato la velocità con cui è possibile decifrare gli hash. Il moderno cracking di password è altamente dinamico e richiede flessibilità e scalabilità, le Rainbow T. sono statiche, rigide e per nulla scalabili, sono l’antitesi del moderno cracking offline di password. Anche se non si dispone della potenza di GPU all’avanguardia, l’impiego di tecniche moderne farà comunque ottenere una resa di hash molto più elevata rispetto alle Rainbow.
Noi di RHC per sensibilizzare sulle tre tipologie di cracking procederemo comunque nello svolgere diversi attacchi utilizzando il Brutalforce, Password guessing con dictionary e Rainbow table.

SAM, LSA e SYSKEY (SECURITY ACCOUNT MANAGER)

Come accennato in precedenza ci sono diverse tecniche per recuperare password di accesso, crackarle e svolgere la tecnica del Privilege escalation sul sistema. Il metodo più fluido è usare il framework metasploit abbinato a tool tipo: mimikatz, smbclient, smbmap o enum4linux, alcune si basano maggiormente sullo sfruttamento delle share di rete e vulnerabilità di tipologia “null session” che gravano sul protocollo Netbios. A grandi linee, un potenziale Black-hat vorrà:
‌Ottenere gli hash NTLM per il cracking e la manipolazione di questi dati in maniera offline, potrebbe farlo violando:
⦁ HKLM\SAM: contiene gli hash NTLMv2 delle password degli utenti
⦁ HKLM\security: contiene secret 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 secret LSA e il database SAM
‌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 esamineremo nel dettaglio i diversi componenti sopra citati.

SAM: HKLM\SAM

Il database Security Account Manager (SAM) è l’archivio dove Windows memorizza le informazioni relative agli account degli utenti. Qui vengono memorizzati i nomi utente e gli hash delle password e viene utilizzato per autenticare i client quando cercano di effettuare l’accesso, fornendo il maching dell’hash da confrontare.

La lunghezza e la complessità degli hash variano a seconda dell’algoritmo utilizzato per cifrare 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, 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], in modo da lavorarci in maniera offline in fase successiva, utilizzando altri tool per estrarre e crackare i dati. Solo una volta ottenuto l’hash LM o NTLM sarà possibile eseguire un attacco di bruteforce sugli hash.

SECRET LSA: HKLM\SECURITY

Secret LSA è un archivio utilizzato dall’autorità di protezione locale (LSA) in Windows.
Lo scopo è gestire il criterio di sicurezza di un sistema, il che, per definizione significa archiviare dati privati riguardanti ad esempio: login e autenticazione con chiavi LSA degli utenti. L’accesso all’archivio LSA è concesso solo all’account principale SYSTEM. LSA svolge una funzione di archiviazione di dati sensibili del sistema, riassunte qui di seguito:
⦁ ‌Password degli utenti
⦁ ‌Password di Internet Explorer
⦁ ‌Password degli account dei servizi sulla macchina che richiedono l’autenticazione con secret LSA
⦁ ‌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 secret LSA sono state decifrate rapidamente e strumenti come Mimikatz, sono anche in grado di scaricare l’archivio LSA (questo solo su alcune versioni di Windows).

SYSKEY: HKLM\SYSTEM

Syskey, noto anche come strumento di blocco SAM, era già presente nelle versioni meno recenti di Windows. Lo scopo di questa funzionalità è quella di cifrare il database SAM, in modo da 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 decifrare il db SAM. HKLM\SAM è collegato alla sottochiave SECURITY nel percorso 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.

ESTRAZIONE DEL DB SAM

Fino al rilascio di Windows 8, era possibile utilizzare Mimikatz su Windows per ottenere le credenziali in chiaro 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 le password hash. In Windows 10 Enterprise, inoltre, è presente il controllo delle credenziali che consente di isolare il processo LSASS anche da utenti con privilegi SYSTEM.

Su Windows 10 le password non le vedremo in chiaro, dovremo acquisire direttamente l’hash NTLMv1, ma questo a noi non importa perché svolgeremo altre tecniche per decifrarle. Ci sono molti modi per ottenere l’hash NTLM se non si ha accesso direttamente alla macchina locale presa di mira.
il tool Responder su linux potrebbe andare bene per questo caso, questo strumento offre numerose funzionalità, una pertinente è 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.
Nei tutorial che seguiranno utilizzeremo il framework Metasploit, poiché violeremo direttamente la macchina Windows 10 su cui gira Apache Tomcat 9, installeremo una backdoor e avvieremo una sessione di Meterpreter sulla quale chiameremo il modulo Mimikatz, questo tool integrato ci garantirà una certa resa più professionale per il nostro scopo finalizzato all’estrapolazione degli hash di sistema. Prima di arrivare alla vera session lab, vediamo qui di seguito alcune semplici nozioni base sulle procedure di cracking con Kali Linux.

Tutorial:

Avviamo Kali Linux e apriamo la cartella dove i sistemi Linux conservano in maniera cifrata e oscurate le credenziali di accesso.

L’hash della password la troviamo all’interno del riquadro rosso, mentre nei due riquadri verdi abbiamo username “kali” e l’oscuramento. “$y” “$j9T” “$h”, queste sono tre informazioni che indicano rispettivamente la funzione di hash utilizzata, l’algoritmo di salt e altre informazioni sulla scadenza della password.

Con questo comando $grep -A stiamo dicendo a kali di recuperare le ultime righe del file e fornirci l’algoritmo utilizzato per l’hash delle password. L’output è il seguente:

 

 

Come possiamo notare kali cifra le password con SHA512, copiamo e incolliamo l’hash recuperato (quello nel rettangolo rosso) in un nuovo file, lo chiameremo “admin.hash”, quindi diamo il comando con l’editor $nano admin.hash

salviamo il file con i tasti ctrl+x e poi Y.
Con il comando $wget scarichiamo da github un semplice file dictionary, la risorsa Seclists contiene un archivio di dictionary divisi per categorie, io ne ho preso uno “milw0rm-dictionary.txt”;
Con il comando chmod 777 o chmod +x diamo i permessi di scrittura e lettura al file admin.hash e al file dictionary appena scaricato,

Con il tool Hashcat svolgiamo un’attacco di password cracking sull’hash SHA512, diamo come input i parametri “–m 1800” e “–a 0” per aggiungere il file “admin.hash”, infine aggiungiamo il percorso del file dictionary, hashcat proverà tutte le password contenute nel file dictionary sul file hash e non appena avverà il maching (confronto) ci notificherà l’avvenuto cracking mostrandoci la password root in chiaro. Ovviamente questo è solo un esempio per scopi didattici utile per dare un’idea generale sulla tipologia di tecnica che si utilizza per svolgere brutalforce, non posso garantire a tutti che con questo metodo venga crackata la propria password, soprattutto quando stiamo parlando di SHA512, ci sono tecniche più avanzate che vedremo nella seconda parte del tutorial.

Nel prossimo articolo alzeremo l’asticella di difficoltà, vedremo un vero attacco di password cracking su diversi fronti.

Ing. Curzi Fernando L. (Cybersecurity analyst e Web Developer)

Lascia un commento