Quale tecnica usano i Cyber criminali per rubarci le Password? 


In molti casi, le tecniche impiegate sfruttano gli errori umani.

Evidenziamo i due metodi più comunemente utilizzati per ottenere una password debolmente protetta con il minimo sforzo.

Attraverso l’utilizzo di e-mail o messaggi di phishing, si ricorre all’ingegneria sociale per convincere gli utenti a divulgare le proprie password.

Il Credential Stuffing è un tipo di hacking che prevede l’accesso a un database contenente un gran numero di password di utenti e il tentativo di utilizzarle su altri siti. L’esempio più noto è il caso di LinkedIn, dove nel 2012 sono state rubate 164 milioni di credenziali che sono state messe in vendita nel 2016. Tra queste c’erano anche le credenziali di Mark Zuckerberg, che aveva utilizzato la stessa password (“dadada”) per i suoi account Twitter e Pinterest.

Si tratta di una tecnica definita credential stuffing, che sfrutta il gran numero di violazioni di dati segnalate negli ultimi anni. Queste violazioni hanno generato numerosi database di credenziali rubate che sono accessibili sul dark web. I criminali informatici utilizzano questa risorsa per attaccare altri servizi Web in cui gli utenti hanno riutilizzato le stesse password.

Questo processo viene automatizzato utilizzando software come SHARD, open source e disponibile su GitHub.

Ciò facilita l’utilizzo di nomi utente e password identici da testare su siti e servizi che non sono stati compromessi. Questi sono classificati come attacchi “a bassa intensità”, che sono silenziosi, cioè non attivano alcun allarme nel sistema preso di mira (poiché non sono ripetuti, come lo sarebbe un attacco “brute force”).

Data la prevalenza di persone che utilizzano la stessa password per più servizi, questo tipo di attacco ha un’alta probabilità di successo, come dimostra l’esempio di Zuckerberg e altri.

È essenziale che tutti gli utenti del computer e del web pratichino una buona “igiene informatica” proteggendo le proprie password. Questa dovrebbe ormai essere considerata una norma fondamentale.

Le credenziali sono essenziali per salvaguardare la nostra presenza online; il Verizon Data Breach Investigations Report 2017 (VDBIR 10th edition) ha riportato che l’81% delle violazioni di account sono il risultato di password rubate o deboli.

La gestione delle credenziali sicure sta diventando sempre più complessa, in quanto a ogni utente è oggi richiesto di mantenere una media di 100 password uniche. La sola memorizzazione delle regole non è più sufficiente a soddisfare questo requisito.

I gestori di password sono strumenti preziosi per garantire che le nostre password rimangano sicure e criptate.

Il codice Hash e le Password

Analizzeremo ora la gestione delle password per comprendere i metodi di cracking delle stesse.

È indispensabile comprendere il concetto di hash e la sua applicazione nella gestione delle password.

Gli HASH sono algoritmi crittografici che convertono un messaggio di lunghezza variabile in una stringa binaria di lunghezza fissa, la cui lunghezza dipende dall’algoritmo utilizzato.

La stringa binaria viene trasformata ed espressa in esadecimale, riducendo di quattro volte la sua lunghezza.

La caratteristica distintiva di Hash è che è unidirezionale, cioè non è possibile ricavare il valore originale dall’hash.

Rispetto agli algoritmi di crittografia come AES e RSA, che possono essere decifrati con la chiave appropriata (password), questa è una divergenza significativa.

Gli algoritmi di hash più comunemente utilizzati sono:

MD5 (“Message Digest”-1991) è un algoritmo di hash crittografico sviluppato da Ronald Rivest che produce un’impronta digitale a 128 bit (32 caratteri esadecimali). Tuttavia, oggi è considerato un algoritmo insicuro.

SHA-1 (Secure Hash Algorithm 1, rilasciato nel 1995) produce un valore hash di 160 bit (40 caratteri esadecimali). La sua sicurezza è stata compromessa da quando Google ha rivelato la possibilità di una collisione.

SHA-2 (Secure Hash Algorithm 2 – 2001) è la versione più sicura di SHA-1, con dimensioni di hash che vanno da 256 (64 esadecimali) a 512 bit (128 esadecimali).

SHA-3 è stato formalmente stabilito dal National Institute of Standards and Technology (NIST) nell’ambito della pubblicazione 202 del Federal Information Processing Standard (FIPS), rilasciata nell’agosto 2015, con l’intenzione di diventare il nuovo standard del settore.

Le ulteriori qualità essenziali che l’hash deve possedere sono:

La coerenza è essenziale; lo stesso input deve sempre generare lo stesso output. L’input A genererà sempre lo stesso hash B, che servirà come impronta digitale di A.

È impossibile determinare il messaggio originale analizzando il suo hash. Tuttavia, si può essere certi che se l’hash rimane lo stesso, anche il messaggio originale deve rimanere lo stesso. Questa funzione è utile per creare il checksum di un file. Se il file viene trasferito o duplicato e l’hash rimane coerente prima e dopo, si può presumere che il file non sia stato alterato o danneggiato.

La probabilità che due messaggi distinti producano lo stesso hash deve essere inesistente. Questa caratteristica viene definita “resistenza alle collisioni“.

In crittografia, una collisione si verifica quando un algoritmo di hashing produce lo stesso valore hash da due input distinti.

A causa del numero finito di risultati che possono essere prodotti da qualsiasi algoritmo di hashing, la sua resistenza alle collisioni è direttamente correlata alla sua complessità.

L’MD5 è in grado di generare una stringa di 128 bit, il che si traduce in un numero finito di possibili hash – 2128, un valore incredibilmente grande.

Con il progredire delle capacità di calcolo, è diventato essenziale utilizzare algoritmi di hashing più robusti con una dimensione di bit maggiore per aumentare la resistenza alle collisioni. SHA-2 produce una stringa di 256 o 512 bit, creando una combinazione possibile di 2256 e 2512, rispettivamente. Questi numeri sono esponenzialmente più grandi rispetto a quelli generati da MD5 e SHA-1.

Gli hash sono vantaggiosi grazie alle loro proprietà uniche e sono ampiamente utilizzati per varie applicazioni, in particolare per l’autenticazione e la protezione delle password.

Per garantire la sicurezza, tutti i siti web affidabili memorizzano le password degli utenti sotto forma di hash, anziché di testo semplice. Di conseguenza, se un utente dimentica la propria password, il sito web non sarà in grado di fornirgli quella originale, ma gli invierà un link per reimpostarla.

È sempre più raro trovare siti che memorizzano le password in testo normale, ma ce ne sono ancora alcuni che continuano a farlo.

Quando si accede a un sito web, l’hash della password fornita viene calcolato e memorizzato nel database.

Al successivo accesso, la password immessa viene convertita in un hash utilizzando uno degli algoritmi disponibili e confrontata con quella memorizzata nel database.

Se i valori dell’hash sono coerenti, il login viene autorizzato; in caso contrario, indica che la password inserita non era corretta.

Il vantaggio di utilizzare gli hash è evidente: se un malintenzionato riesce a violare il database delle password, troverà solo gli hash e non le password in chiaro. Poiché gli hash non sono reversibili, dovrebbe essere impossibile dedurre le password.

L’hashing delle password ha reso più difficile per gli aggressori l’accesso alle password, ma non è del tutto impossibile. Dimostreremo ora gli strumenti che gli aggressori possono utilizzare per riuscire potenzialmente a ottenere le password.

In quali modi si possono subire gli attacchi di password cracking 

Nei casi in cui un utente non riesca a proteggere la propria password dalla compromissione a causa di un errore umano, è necessario ricorrere a metodi più avanzati, come il “password cracking”.

Il cracking delle password è un processo complicato che richiede competenze tecniche e strumenti adeguati, come computer ad alte prestazioni e software specializzati. Tuttavia, in determinate circostanze può avere successo.

Questo compito può essere portato a termine in due modi diversi.

Gli attacchi online sono spesso lenti e inefficienti a causa della necessità di risposta del sito interrogato. Inoltre, molti siti impongono limiti al numero di tentativi di accesso errati, rendendo questo approccio inefficace per gli attacchi ad alta intensità. Tuttavia, il credential stuffing e gli attacchi a RDP (Remote Desktop Protocol) possono avere successo perché gli utenti non limitano il numero di tentativi di accesso e impostano password deboli. In caso di successo, gli aggressori possono ottenere l’accesso alla porta RDP e introdurre il ransomware, che può bloccare il sistema.

Un attacco offline è un tipo di attacco di password cracking che viene eseguito senza la necessità di una connessione attiva.

Si presuppone che l’autore dell’attacco abbia acquisito con successo il database di hash delle password, il che può avvenire attraverso diversi metodi.

Nei moderni sistemi UNIX, le password sono memorizzate in modo sicuro nel file /etc/shadow, accessibile solo a chi ha privilegi amministrativi (permessi di root).

Compromettere il DB di un’applicazione.

Lo strumento Mimikatz, sviluppato da Benjamin Delpy mentre lavorava per un’agenzia governativa francese, è un software open source progettato per recuperare tutte le password gestite da Windows.

Intercettazione attraverso la rete Wi-Fi.

Una volta ottenuti gli hash delle password, l’aggressore avrà l’opportunità di tentare di decodificare le password in questione, poiché il cracking delle password è un processo offline che non richiede una connessione di rete.

Dovrà sperimentare per ottenere il risultato desiderato, poiché l’hash non può essere invertito come detto in precedenza.

Martin Hellman, l’inventore dell’algoritmo Diffie-Hellman per lo scambio di chiavi, che ha permesso lo sviluppo della crittografia a chiave pubblica, ha creato le “tabelle arcobaleno”, che sono tabelle contenenti tutti i possibili input e i relativi hash.

Sono disponibili online tabelle arcobaleno di grandi dimensioni, che possono superare i 100 GB.

Per rendere le tabelle arcobaleno più impegnative da utilizzare, si consiglia di estendere la lunghezza della password, aumentando così esponenzialmente la dimensione delle tabelle arcobaleno necessarie.

Una misura di sicurezza comunemente utilizzata al giorno d’oggi è l’uso del sale. Il sistema genera un valore casuale che viene poi combinato con la password impostata dall’utente in una funzione di hashing per creare un valore diverso da quello prodotto dalla sola password.


Questa misura è particolarmente efficace contro gli attacchi alle tabelle arcobaleno, ma potrebbe non fornire una protezione sufficiente contro altri metodi di attacco come gli attacchi brute force e a dizionario.

Quali sono le tecniche?

Brute Force

Questo attacco viene condotto senza mantenere una connessione al sistema bersaglio, a patto che si sia già acquisito il database degli hash delle password attraverso le tecniche precedentemente descritte. Si tratta di tentare tutte le password possibili, a partire dalle combinazioni più semplici o più probabili fino a una lunghezza massima predeterminata.

Per eseguire queste violazioni, sono disponibili online programmi di cracking delle password che possono essere utilizzati per automatizzare l’attacco.

Due degli strumenti di cracking delle password più noti sono John the Ripper e Hashcat. Altre opzioni popolari sono Elzapop e Cain&Abel.

I servizi di cracking professionali sono disponibili online, come crackstation.net, che offre un’ampia gamma di opzioni.

Utilizzando la potenza di calcolo avanzata delle attuali schede grafiche (GPU) combinate in parallelo, è possibile creare computer potenti a un costo ragionevole, in grado di eseguire fino a 100 miliardi di Hash al secondo (GH/s). Nonostante sia un attacco di base, l’approccio “forza bruta” può avere successo grazie alle maggiori capacità della tecnologia moderna.

Si può affermare che un attacco a brute force può avere successo se si dispone di una quantità di tempo infinita.

Poiché il tempo è un fattore che non può essere ignorato nella pratica, esaminiamo le variabili che influenzano la quantità di tempo necessaria per un attacco riuscito.

La lunghezza della password è importante.

La complessità delle password e la varietà di caratteri utilizzati devono essere presi in considerazione.

Una password di 8 caratteri composta da cifre numeriche avrà un totale di 108 combinazioni possibili, che equivalgono a 100.000.000. Con una potenza di analisi di 100 GH/s, ci vorrebbe molto meno di un secondo per scoprirla.

Se la password è lunga 14 caratteri e utilizza tutti i 95 caratteri disponibili sulla tastiera (numeri, lettere minuscole e maiuscole, caratteri speciali), il numero di combinazioni è stimato in 9514 = 4,8×1027. A 100 GH/s, ci vorrebbero circa 1,546 milioni di anni per completare un attacco a brute force, il che lo rende un metodo di accesso poco pratico.

Il concetto di “Entropia” è stato introdotto per fornire una misura della forza di una password, che esploreremo ulteriormente in futuro.

Attacco a dizionario

È stato dimostrato che gli attacchi brute force sono altamente inefficienti, quindi gli aggressori devono trovare tecniche più efficaci e sofisticate per colpire le loro vittime. 

Spesso si tratta di sfruttare il comportamento degli utenti per ridurre la portata della ricerca.

Una delle tecniche impiegate è l’attacco “a dizionario”: poiché le persone usano comunemente parole significative per le loro password, queste sono le prime che gli aggressori tenteranno di indovinare.

Il software di cracking delle password carica uno o più file di dizionario, che verranno utilizzati per cercare di scoprire le password.

In rete sono disponibili diversi dizionari, tra cui quello della lingua italiana, che comprende circa 300.000 parole ed è memorizzato in un file di testo di diversi megabyte. Inoltre, l’elenco del milione di password più utilizzate è accessibile in un file di circa 8 megabyte. Inoltre, è possibile scaricare e utilizzare dizionari di diverse lingue.

Questo metodo è molto più efficiente del tradizionale approccio per tentativi ed errori (richiede meno tentativi ed è più mirato) e facilita l’identificazione delle password meno sicure.

Attacco “rules” (con regole)

È stato osservato che spesso le persone utilizzano le stesse password, apportando piccole modifiche nel tentativo di renderle più sicure e allo stesso tempo facili da ricordare. Queste sono definite “modifiche ovvie della password”.

È ampiamente riconosciuto che il termine “password” viene spesso modificato per includere varianti come P@ssword, PASSWORD, passw0rd e P@$$w0rd.

I software progettati per il cracking delle password implementano già algoritmi di sostituzione, aumentando così l’efficacia dei tradizionali attacchi a dizionario.

È stato dimostrato che l’utilizzo di queste regole è l’approccio più efficiente in termini di risultati ottimali nel minor tempo possibile.

Attacco con Pattern

Diamo priorità agli schemi autentici, in quanto sono i più comunemente utilizzati.

È stato osservato statisticamente che lo schema di password più utilizzato quando si richiede di includere una lettera maiuscola, un numero e un carattere speciale è quello di mettere la lettera maiuscola all’inizio, seguita dal numero e dal carattere speciale alla fine.

Ciò contribuisce a ridurre il numero di tentativi concentrando l’attacco brute force sulle password statisticamente più probabili.

Tecniche di password cracking combinate

Combinando le varie tecniche precedentemente descritte, l’efficienza dell’attacco di cracking della password viene notevolmente migliorata, aumentando così la probabilità di recuperare la password dal suo hash.

Entropia della Password

In conclusione, abbiamo dimostrato il concetto di ENTROPIA, utilizzato in crittografia per fornire una valutazione matematica della complessità di una password. Le password con un’entropia più elevata sono più difficili da decifrare.

Nel 1948 Claude Shannon, ingegnere e matematico americano noto come il “padre della teoria dell’informazione”, introdusse il concetto di “entropia” nel suo articolo “A Mathematical Theory of Communication”. Questo trattato scientifico è servito come base teorica per l’esplorazione della codifica e della trasmissione delle informazioni, dove Shannon ha scelto il bit come unità fondamentale per misurare le informazioni.

Il bit viene utilizzato in particolare per calcolare la complessità di una password.

Se la password è scelta in modo casuale e ogni simbolo ha la stessa probabilità di essere selezionato, il numero di password possibili è pari al numero di simboli possibili moltiplicato per la lunghezza della password.

L’entropia di una password è stata quindi calcolata come:

Il logaritmo di NL in base 2 è pari a S.

Per una sicurezza ottimale, la password dovrebbe possedere un minimo di 64 bit di entropia.

Una volta che la lunghezza di una password supera i 128 bit, la sicurezza aggiuntiva non è più necessaria e ulteriori aumenti sono superflui.

Vediamo qualche esempio:

Una password di 8 caratteri composta da lettere e numeri fornisce una sicurezza di soli 47,63 bit, insufficiente.

Una password di 12 caratteri, composta da lettere, numeri e caratteri speciali, offre una sicurezza di 78,838 bit, che è sufficiente.

La password di 20 caratteri, composta da lettere, numeri e caratteri speciali, ha una sicurezza di 131,397 bit, che è considerata adeguata.

La nostra analisi suggerisce che una password di 20 caratteri che incorpori una varietà di caratteri (numeri, lettere minuscole e maiuscole e caratteri speciali) è sufficiente a garantire un elevato livello di sicurezza.

Come possiamo difenderci dagli attaccanti

In definitiva, è evidente che il successo delle tecniche di cracking delle password descritte in questo documento dipende dall’errore dell’utente.

Inoltre, la creazione di una password complessa e lunga, composta da caratteri, numeri e simboli casuali, riduce notevolmente l’efficacia del cracking delle password.

Quanto deve essere lunga?

Tenendo conto del concetto di entropia e della potenza di calcolo dei computer attuali (che diventeranno obsoleti quando saranno disponibili i computer quantistici), si raccomanda di utilizzare password di 12-20 caratteri, comprendenti una combinazione di numeri, lettere minuscole e maiuscole e caratteri speciali per una sicurezza ottimale.

È importante assicurarsi che la password non sia visibile sulla tastiera o sullo schermo del computer per mantenere la sicurezza.

Questo conferma ulteriormente che l’errore umano è spesso l’aspetto più vulnerabile della sicurezza.