Tecniche di Password Cracking
1. Come ci rubano le Password?
Come fanno i Cybercriminali a rubarci le password?
Le modalità sono diverse, ma nella maggior parte dei casi fanno leva sull’errore umano.
Segnaliamo le due tecniche più frequentemente utilizzate per ottenere – con minimo sforzo – una password non adeguatamente custodita.
» Ingegneria Sociale (social engineering): con email o messaggi di phishing si convince l’utente a comunicare la propria password.
» Credential Stuffing: si viola il database di un servizio contenente un gran numero di password utente e poi si provano su altri siti. Famoso è il caso di LinkedIn: furono rubate circa 164 milioni di credenziali (accadde nel 2012, ma le password furono messe in vendita nel 2016), tra queste anche quella di Mark Zuckerberg che usava la stessa password di LinkedIn (che era “dadada”) anche sui suoi account Twitter e Pinterest.
La tecnica usata è appunto il credential stuffing, una pratica che sfrutta l’enorme quantità di data breaches che si sono verificati negli anni e che hanno generato molti database di credenziali rubate, facilmente reperibili nel dark web. Questa miniera di informazioni viene utilizzata dai cybercriminali per attaccare altri servizi web dove gli utenti hanno riutilizzato le stesse password.
E tutto questo viene fatto in modo completamente automatizzato, utilizzando software come SHARD (opensource e reperibile su GitHub.
In questo modo si riescono a provare le stesse combinazioni di username e password su siti e servizi che non hanno subito intrusioni. Sono attacchi cosiddetti “a bassa intensità”, che non fanno rumore, cioè non generano allarme nel sistema attaccato (perché non ripetitivi, come sarebbe invece un attacco “brute force”).
Ma essendo così diffusa la pessima abitudine di riutilizzare le stesse password su servizi diversi (come precedentemente raccontato per Zuckerberg e non solo…), questo attacco ha ottime probabilità di successo.
Non dovrebbe essere necessario ribadire quanto sia oggi diventato importante proteggere le proprie password: dovrebbe trattarsi ormai – per qualunque utilizzatore di computer e del web – di una norma elementare di “cyber igiene”.
Le password sono le “chiavi” della nostra vita digitale: secondo il Verizon Data Breach Investigations Report 2017 (VDBIR 10a edizione) “l’81% delle violazioni degli account sono realizzate con password rubate e/o password deboli.”
Il problema di conservare in modo sicuro le proprie credenziali sta diventando piuttosto complicato: è ormai noto che ogni utente deve gestire mediamente circa 100 password. E se devono essere tutte differenti, questo non può essere fatto con sole regole mnemoniche.
Per questo oggi ci vengono in aiuto i Password manager, applicazioni dedicate a conservare tutte le nostre password in modo sicuro e – ovviamente – crittografato!
>> FlashStart ti protegge da una vasta gamma di minacce, inclusi malware e tentativi di phishing ? Richiedi ora un’offerta e Inizia subito la tua prova gratuita
2. Hash e Password
Esaminiamo ora come vengono gestite le password, allo scopo di capire le modalità con le quali operano le tecniche di password cracking.
Per fare questo, è importante conoscere cosa sono gli Hash ed in che modo vengono utilizzati nella gestione delle password.
Gli HASH sono algoritmi crittografici che trasformano un dato di lunghezza arbitraria (messaggio) in una stringa binaria (fingerprint) di lunghezza fissa (lunghezza che varia a seconda dell’algoritmo utilizzato).
La stringa binaria viene convertita e rappresentata in esadecimale (quindi la sua lunghezza si riduce di quattro volte).
La peculiarità degli Hash è quello di essere non invertibile (one-way): dall’hash non è mai possibili risalire al valore iniziale.
Questa è una differenza sostanziale rispetto agli algoritmi di crittografia (AES, RSA, ecc.) che invece sono reversibili, a condizione di conoscere la chiave (password).
Gli algoritmi di Hash più usati sono:
» MD5 (“Message Digest” -1991): genera una fingerprint da 128 bit (32 caratteri esadecimali). Sviluppato da Ronald Rivest, è ormai considerato non più sicuro.
» SHA-1 (“Secure Hash Algorithm 1” – 1995): genera una fingerprint da 160 bit (40 esadecimali). Considerato non più sicuro, dopo che Google ne ha dimostrato la possibilità di collisione.
» SHA-2 (“Secure Hash Algorithm 2” – 2001): è la varianti più sicura di SHA-1, con dimensioni dell’hash maggiori, da 256 (64 esadecimali) a 512 bit (128 esadecimali).
» SHA-3: è stato definito dal NIST con la FIPS PUB 202 (agosto 2015) ed è destinato a diventare il nuovo standard.
Le altre caratteristiche peculiari che deve avere l’hash sono:
» coerente: deve generare un risultato univoco. Quindi l’input A produrrà sempre lo stesso hash B, che rappresenta la fingerprint (impronta digitale) di A.
» casuale: impossibile da interpretare. Dall’hash è impossibile capire qual è il messaggio originale, si ha solo la certezza che – se l’hash è lo stesso – anche l’originale deve essere lo stesso. Questa funzione è utile per fare il “checksum” di un file: se il file che viene trasferito o copiato mantiene lo stesso hash (prima e dopo), significa che non è stato alterato o corrotto.
» univoco: la probabilità che due messaggi diversi generino lo stesso hash deve essere nulla. Questa caratteristica si definisce “resistenza alle collisioni”.
In crittografia si parla di collisione quando un algoritmo di hashing produce lo stesso hash a partire da due input diversi.
Ma poiché qualunque algoritmo di hashing può generare un numero finito di risultati, la resistenza alla collisione è direttamente proporzionale alla sua complessità.
Per esempio, MD5 produce sempre una stringa di 128 bit. Dunque, i possibili hash di MD5 sono pari a 2128, un valore enorme, ma comunque un numero finito.
Per aumentare la resistenza alle collisioni – essendo aumentate le potenze di calcolo – si rende necessario utilizzare algoritmi di hashing più potenti, cioè con un maggior numero di bit: SHA-2 genera una stringa a 256 o 512 bit; quindi, le combinazioni possibili sono rispettivamente 2256 e 2512 (corrisponde a 1,3×10154), numeri esponenzialmente molto più grandi di quelli generati da MD5 e SHA-1.
Perché gli hash sono utili: per le loro peculiarità, gli hash vengono utilizzati per molti scopi. Uno dei più importanti è legato all’autenticazione ed alla sicurezza delle password.
Oggi in tutti i siti “seri”, le password degli utenti vengono salvate nel database sotto forma di hash e non in chiaro. Questo è il motivo per cui, in caso di “password dimenticata”, il sito non ci potrà restituirci la nostra password (perché non l’ha) ma ci invierà un link per impostarne una nuova.
Purtroppo esiste ancora una minoranza di siti che salvano le password in chiaro, ma sono sempre meno frequenti.
Quindi, quando ci si registra in un sito, questo calcola l’hash della password che abbiamo impostato e salva quell’hash all’interno del suo database.
Al login successivo, la password che inseriamo verrà convertita nell’hash (con uno degli algoritmi disponibili) e sarà confrontata con quella presente nel database.
Se i due hash coincidono, il login viene permesso, altrimenti significa che la password digitata è errata.
Il vantaggio di usare gli hash è evidente: se un attaccante riesce a violare il database delle password, troverà solo gli hash e non le password in chiaro. Poiché gli hash, non sono invertibili, dovrebbe essere impossibile risalire alle password.
Dovrebbe essere impossibile… in realtà non lo è del tutto. Con l’hashing delle password abbiamo sicuramente reso più difficile il lavoro dell’attaccante, ma questi – con gli strumenti che andiamo ora ad illustrare – potrebbe riuscire ugualmente a ottenere le password.
3. Tipologie di attacchi alle password con il password cracking
Quando l’attaccante non riesce a rubare la password grazie all’errore umano, come abbiamo spiegato in premessa, può ricorrere a tecniche più sofisticate, come il “password cracking”.
Il cracking di una password è complesso, richiede conoscenze informatiche e strumenti idonei, quali computer potenti e software appositi. Ma in certe condizioni può risultare efficace.
Può essere realizzato in due differenti modalità:
» Attacco ONLINE: è ovviamente lento ed inefficiente, perché richiede la risposta online del sito “interrogato”. inoltre è abbastanza frequente che il sito imponga dei limiti ai tentativi di login errati. Può essere utile quindi negli attacchi a bassa intensità, come il citato “credential stuffing”. Viene utilizzato anche negli attacchi all’RDP (Remote Desktop Protocol): in molti casi, infatti, chi utilizza RDP non si preoccupa di limitare il numero di tentativi di accesso ed imposta password inadeguate. Per l’attaccante diventa solo una questione di tempo il riuscire ad accedere alla porta RDP. E frequentemente questo accesso mira ad introdurre un ransomware, che blocca il sistema violato.
» Attacco OFFLINE: questo è il vero attacco di password cracking.
Presuppone che l’attaccante sia già riuscito ad entrare in possesso del Database degli Hash delle Password. Questo può essere ottenuto in diversi modi:
» Compromissione del sistema: nei moderni sistemi UNIX, le password sono memorizzate in modo crittografato nel file /etc/shadow, che è accessibile solo a chi ha privilegi amministrativi (permessi di root).
» Compromissione del DB di un applicativo.
» Con il tool Mimikatz: è uno strumento progettato per recuperare tutte le password gestite da Windows. Il tool è stato realizzato da Benjamin Delpy quando lavorava per un’agenzia governativa francese ed è disponibile come software opensource.
» Intercettazione attraverso la rete Wi-Fi.
Impossessatosi degli hash delle password l’attaccante avrà a disposizione tutto il tempo per cercare di risalire dagli hash alle relative password, perché il password cracking diventa un processo offline, che non richiede un collegamento in rete.
Dovrà – ovviamente – farlo per tentativi, dato che l’hash – come spiegato – non è invertibile.
Una prima modalità è la creazione delle “Rainbow Table” (tabelle arcobaleno): sono tabelle dove vengono inseriti tutti gli input possibili e ne vengono calcolati i rispettivi hash. Sono state inventate da Martin Hellman, il creatore (assieme a Whitfield Diffie) dell’algoritmo Diffie-Hellman per lo scambio delle chiavi, che ha permesso lo sviluppo della crittografia a chiave pubblica.
Le rainbow table sono file di enormi dimensioni, anche oltre i 100 GB, che si possono trovare in rete.
Per contrastare le rainbow table e renderne più difficile l’utilizzo, è buona regola aumentare la lunghezza della password: in questo modo aumenteranno esponenzialmente anche le dimensioni delle tabelle arcobaleno necessarie.
Un’altra contromisura usata oggigiorno è il cosiddetto salt (sale): quando un utente imposta una password, il sistema crea un valore casuale aggiuntivo, il salt. Questo valore si aggiunge alla password nella funzione di hash e produce così un altro valore, differente da quello generato dalla sola password.
Questa misura aggiuntiva risulta efficace proprio contro le rainbow table, ma potrebbe non bastare per difenderci da altri tipi di attacchi quali il “brute force” e l’attacco “a dizionario”.
>> FlashStart controlla tutto il tuo traffico Internet e blocca l’accesso a siti malevoli o pericolosi ? Richiedi ora un’offerta e Inizia subito la tua prova gratuita
4. Le tecniche di password cracking
4.1 Il Brute Force
È l’attacco classico che si realizza offline, senza dover mantenere una connessione con il sistema della vittima, a condizione di aver già ottenuto il database degli hash delle password (con le modalità precedentemente illustrate). Consiste nel provare tutte le possibili password, in successione partendo dalle combinazioni più semplici o più plausibili, per poi crescere fino ad una lunghezza massima stabilita.
Per portare questi attacchi si usano software di password cracking, facilmente reperibili in rete e che automatizzano l’attacco.
I più noti sono: John the Ripper (letteralmente: “John lo squartatore”) e Hashcat. Ne esistono molti altri, tra i quali: Elzapop, Cain&Abel, ecc.
Si trovano inoltre servizi gratuiti di cracking online (in rete non manca nulla!), quali crackstation.net.
Pur essendo un attacco rudimentale, perché opera “a forza bruta”, può risultare efficace grazie all’accresciuta potenza dei computer attuali: oggi, sfruttando la potenza computazionale delle schede grafiche (GPU) messe in parallelo, è possibile realizzare a costi ragionevoli computer in grado di eseguire fino a 100 GH/s, cioè 100 miliardi di Hash al secondo.
Si può anzi affermare che l’attacco brute force è “a successo garantito”, a condizione di avere a disposizione un tempo illimitato.
Ma poiché il tempo non è – nella pratica – un aspetto trascurabile (a nessuno interessa impiegare anni o secoli per violare un sistema…), vediamo quali sono le variabili che influiscono sul tempo necessario perché l’attacco abbia successo:
» la lunghezza della password
» la complessità delle password ed i tipi di caratteri utilizzati.
Un esempio chiarirà meglio questi aspetti:
» una password di 8 caratteri composta di soli numeri avrà un numero di combinazioni pari a 108 = 100.000.000. Con una potenza di analisi di 100 GH/s verrà scoperta in molto meno di un secondo!
» se la password è lunga invece 14 caratteri ed utilizza tutti i tipi di caratteri disponibili sulla tastiera (quindi numeri, lettere minuscole e maiuscole, caratteri speciali, in totale 95) avrà un numero di combinazioni pari a 9514 = 4,8×1027. A 100 GH/s serviranno circa 1.546 milioni di anni. Quindi la complessità della password rende impraticabile l’attacco brute force.
Per questo è stato introdotto il concetto di “Entropia”, che ci fornisce la misura della forza di una password. Ne tratteremo in seguito.
4.2 Attacco “a dizionario”
L’attacco brute force è altamente inefficiente, come abbiamo dimostrato. Per questo gli attaccanti ricorrono a metodi più efficaci ed intelligenti che – sfruttando le cattive abitudini degli utenti – riescono a restringere il campo di ricerca.
Uno dei metodi utilizzato è l’Attacco “a dizionario”: poiché le persone usano per le loro password parole di senso compiuto, queste saranno le prime che gli attaccanti proveranno!
Uno o più file dizionario viene caricato dal software di password cracking, che lo utilizzerà per la caccia alle password.
Questi dizionari sono disponibili in rete: il dizionario della lingua italiana è di circa 300.000 parole ed è un file di testo di alcuni MB. Ed anche: l’elenco del milione di password più usate al mondo è un file di circa 8 MB. Sono ovviamente disponibili i dizionari di molte lingue, scaricabili ed utilizzabili.
Questo modo è molto più rapido di un brute force (molti meno tentativi e più mirati) e permette di scoprire facilmente le password più deboli.
4.3 Attacco con “regole (rules)”
Si basa sul fatto che le persone tendono a riutilizzare le stesse password, modificandole semplicemente di qualche carattere, nell’illusione di renderle più forti pur mantenendo facile la memorizzazione. Sono le cosiddette “modificazioni ovvie delle password”.
È noto – per esempio – che la parola “password” viene abitualmente modificata in: P@ssword, PASSWORD, passw0rd, P@$$w0rd, ecc.
I software di password cracking implementano già questi algoritmi di sostituzione, rendendo più efficace l’attacco normale a dizionario.
L’attacco che utilizza queste regole è quello che – statisticamente – ha la maggior efficacia in termini di tempo/risultato.
4.4 Attacco con “Pattern (mask)”
Ci si concentra solo su pattern reali, che sappiamo essere quelli che le persone tendono ad usare.
Quando viene richiesta una password contenente almeno una maiuscola, un numero ed un carattere speciale, il pattern statisticamente più utilizzato è: maiuscola all’inizio, numeri e caratteri speciali in fondo.
In questo modo si riesce a limitare il numero di tentativi, concentrando l’attacco brute force sulle password statisticamente più probabili.
4.5 Tecniche combinate di password cracking
Per aumentare l’efficenza dell’attacco di password cracking, vengono combinate insieme le varie tecniche precedentemente illustrate. In questo modo l’attaccante aumenta di molto la probabilità di scoprire la password dal suo hash.
5. L’Entropia della Password
Concludiamo illustrando il concetto di ENTROPIA, utilizzato in crittografia per dare una misura matematica della complessità di una password. Una password con una maggiore entropia è più difficile da scoprire.
La nozione di “Entropia” è stata introdotta nel 1948 da Claude Shannon, ingegnere e matematico statunitense, definito “il padre della teoria dell’informazione”. Nel 1948 pubblicò il saggio “Una teoria matematica della comunicazione”, un trattato scientifico che poneva la base teorica per lo studio dei sistemi di codificazione e trasmissione dell’informazione. Fu in questa ricerca che Shannon scelse il bit, come unità elementare di misura dell’informazione.
Ed il bit viene utilizzato appunto come unità di misura dell’entropia di una password.
Vediamo di cosa si tratta: se la password viene scelta con le stesse probabilità per ogni simbolo, ci sono NL password possibili (ove N=numero simboli possibili; L=lunghezza password).
L’entropia S di una password è stata definita quindi come:
S=log2(NL) ove log2=logaritmo in base 2.
Per un corretto livello di sicurezza, la password dovrebbe avere un’entropia di almeno 64 bit.
Oltre 128 bit non è più necessario incrementare la forza della password in quanto l’ulteriore aumento di sicurezza sarebbe superfluo.
Vediamo qualche esempio:
» Password di 8 caratteri (solo lettere+numeri): S = log2(628) = 47,63 bit Inadeguata
» Password di 12 caratteri (lettere+numeri+car.speciali): S = log2(9512) = 78,838 bit Sufficiente
» Password di 20 caratteri (lettere+numeri+car.speciali): S = log2(9520) = 131,397 bit Adeguata
Questo ci fa concludere che una password lunga 20 caratteri e che utilizzi tutti i tipi di caratteri (numeri, lettere minuscole e maiuscole, caratteri speciali) è ampiamente sufficiente a garantire un elevato livello di sicurezza.
>> Puoi installare facilmente FlashStart su tutti i tipi di router e endpoint e, in pochi e semplici passi, goderti una navigazione sicura ? Richiedi ora un’offerta e Inizia subito la tua prova gratuita
6. Come difenderci
In conclusione, abbiamo visto come le tecniche di password cracking qui descritte subordinano le loro possibilità di successo agli errori degli utenti.
Oltre alle “cattive abitudini” già descritte, c’è un fattore che può rendere praticamente inefficace il password cracking: la creazione di una password lunga e composta da una combinazione totalmente casuale di lettere, numeri e caratteri speciali.
6.1 Quale lunghezza?
Come abbiamo evidenziato, sulla base del concetto di entropia e considerando la potenza di calcolo disponibile con i computer attuali (questa considerazione perderà valore quando avremo a disposizione i computer quantistici) è una buona misura di sicurezza impostare password lunghe almeno 12 caratteri e fino ad un massimo di 20 caratteri (non serve andare oltre!) e che utilizzi tutti i tipi di caratteri (numeri, lettere minuscole e maiuscole, caratteri speciali).
Ovviamente a condizione che questa password non venga poi scritta in un foglietto in bella vista sulla tastiera o sullo schermo del computer!
E questo dimostra ancora una volta che:
“Il fattore umano è veramente l’anello più debole della sicurezza”
(“The Art of Deception”, Kevin Mitnick – 2002)
7. L’autore
Giorgio Sbaraglia, ingegnere, svolge attività di consulenza e formazione per la sicurezza informatica e per la privacy.
Tiene corsi su questi temi per molte importanti società italiane di formazione, tra le quali ABIFormazione e 24Ore Business School.
È coordinatore scientifico del Master “Cybersecurity e Data Protection” della 24Ore Business School.
È membro del Comitato Scientifico CLUSIT (Associazione Italiana per la Sicurezza Informatica) e certificato “Innovation Manager” da RINA.
Ricopre incarichi di DPO (Data Protection Officer) presso aziende e Ordini Professionali.
È autore dei libri:
» “GDPR kit di sopravvivenza” (Editore goWare),
» “Cybersecurity kit di sopravvivenza. Il web è un luogo pericoloso. Dobbiamo difenderci!” (Editore goWare),
» “iPhone. Come usarlo al meglio. Scopriamo insieme tutte le funzioni e le app migliori” (Editore goWare).
Collabora con CYBERSECURITY360 testata specialistica del gruppo Digital360 per la Cybersecurity.
Scrive anche per ICT Security Magazine, per AGENDA DIGITALE e per la rivista CLASS.
Su qualunque Router e Firewall puoi attivare la protezione FlashStart® Cloud per mettere in sicurezza i device desktop e mobile e i dispositivi IoT sulle reti locali.