Tecniche di cracking delle password
Come rubano le nostre password?
Come possono i cybercriminali rubare le nostre password?
Esistono diversi modi, ma nella maggior parte dei casi fanno leva su errori umani. Qui evidenzieremo le due tecniche più frequentemente utilizzate per ottenere – con il minimo sforzo – una password non adeguatamente protetta.
- Social engineering: tramite email o messaggi di phishing l’utente viene convinto a comunicare la propria password.
- Credential stuffing: viene violato il database di un servizio che contiene un gran numero di password degli utenti e le password vengono provate su altri siti web. Celebre è il caso di LinkedIn: furono rubate circa 164 milioni di credenziali (ciò avvenne nel 2012 ma le password furono messe in vendita nel 2016), tra queste c’era anche quella di Mark Zuckerberg, che usava la stessa password per LinkedIn (che era “dadada”) anche per i suoi account Twitter e Pinterest.
La tecnica utilizzata è appunto credential stuffing, una pratica che sfrutta l’enorme quantità di data breach avvenuti nel corso degli anni e che hanno generato molti database di credenziali rubate, facili da trovare nel dark web. Questa miniera di informazioni viene usata dai cybercriminali per attaccare altri servizi web in cui gli utenti hanno riutilizzato le stesse password.
E tutto questo viene portato avanti in modo totalmente automatizzato, utilizzando un software come SHARD (che è open source e disponibile su GitHub).
In questo modo, è possibile provare le stesse combinazioni di username e password su siti e servizi che non sono ancora stati violati. Si tratta dei cosiddetti attacchi “a bassa intensità”, che non fanno rumore e quindi non generano alcun tipo di allarme nel sistema attaccato (perché non sono ripetitivi, come invece accade negli attacchi “brute force”).
Ma, poiché la terribile abitudine di usare la stessa password su servizi diversi è così diffusa (come ricordato prima per Zuckenber e non solo lui …), questo attacco ha ottime possibilità di successo.
Non dovrebbe essere necessario ribadire ancora quanto oggi sia diventato importante proteggere le proprie password: ormai dovrebbe essere considerata una norma elementare di “igiene informatica” – per tutti gli utenti di computer e del web.
Le password sono le “chiavi” della nostra vita digitale: secondo il Verizon Data Breach Investigation Report 2017 (VDBIR 10a edizione), “81% di account compromessi avviene tramite password rubate e/o deboli”.
Il problema di mantenere al sicuro le proprie credenziali sta diventando piuttosto complicato: è noto che ogni utente deve gestire circa 100 password. E se devono essere tutte diverse, non lo si può fare solo attraverso regole mnemoniche.
Qui entrano in gioco i Password manager, cioè applicazioni che hanno l’obiettivo di salvare tutte le nostre password in modo sicuro e – ovviamente – criptato!
Difesa DNS di nuova generazione: basata su cloud e IA, semplice da attivare.

Hash e Password
Esaminiamo ora come vengono gestite le password, con l’obiettivo di comprendere il modo in cui funzionano le tecniche di cracking delle password.
Per farlo, è importante sapere cosa sono gli Hash e come vengono utilizzati per gestire le password.
Gli HASH sono algoritmi di crittografia che trasformano un dato di lunghezza arbitraria (messaggio) in una stringa binaria (impronta) di lunghezza fissa (una lunghezza che varia a seconda dell’algoritmo usato). La stringa binaria viene poi convertita e rappresentata in esadecimale (da cui la sua lunghezza si riduce di quattro volte).
La caratteristica degli hash è di essere one way, cioè non reversibili: dall’hash non è possibile risalire al valore iniziale.
Si tratta di una differenza sostanziale rispetto agli algoritmi di crittografia (AES, RSA, ecc.), che invece sono reversibili se si conosce la chiave (password).
Gli algoritmi hash più utilizzati sono:
- MD5 (“Message Digest” – 1991): genera un’impronta di 128 bit (32 simboli alfanumerici esadecimali). Sviluppato da Ronald Rivest, ormai non è più considerato sicuro.
- SHA-1 (“Secure Hash Algorithm 1” – 1995): genera un’impronta di 160 bit (40 esadecimali). Non è più considerato sicuro, dopo che Google ha dimostrato la possibilità di collisione.
- SHA-2 (“Secure Hash Algorithm 2” – 2001): è una variante 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 tramite il FIPS PUB 202 (agosto 2015) ed è destinato a diventare il nuovo standard.
Le altre caratteristiche peculiari che l’hash deve avere sono:
- Coerenza: deve generare un risultato univoco. Pertanto, l’input A produrrà sempre l’hash B, che rappresenta l’impronta digitale di A.
- Casualità: deve essere impossibile da interpretare. Dall’hash è impossibile capire quale sia il messaggio originale; puoi solo essere certo che, se l’hash è lo stesso, anche l’originale deve esserlo. Questa funzione è utile quando si fa 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.
- Unicità: la probabilità che due messaggi diversi generino lo stesso hash deve essere zero. Questa caratteristica è definita “resistenza alle collisioni”.
In termini di crittografia, una collisione si verifica quando un algoritmo di hashing produce lo stesso hash a partire da due input diversi. Ma poiché tutti gli algoritmi di hashing possono generare un numero finito di risultati, la resistenza alle collisioni è direttamente proporzionale alla sua complessità.
Per esempio, MD5 produce sempre una stringa a 128 bit. Quindi, gli hash MD5 possibili sono $2^{128}$, un valore enorme, ma pur sempre finito.
Per aumentare la resistenza alle collisioni — poiché anche la potenza di calcolo è aumentata — è necessario usare algoritmi di hashing più potenti, quindi con un numero di bit maggiore: SHA 2 genera una stringa a 256 o 512 bit; pertanto, le possibili combinazioni sono rispettivamente $2^{256}$ e $2^{512}$ (che corrisponde a $1.3 \times 10^{154}$), numeri esponenzialmente molto più grandi di quelli generati da MD5 e SHA-1.
Perché gli hash sono utili: per le loro peculiarità, gli hash sono usati per molti scopi.
Uno dei più importanti è legato all’autenticazione e alla sicurezza delle password.
Oggi, in tutti i siti web “seri” le password degli utenti sono salvate nel database come hash e non in chiaro. Questo è il motivo per cui, in caso di password dimenticata, il sito non potrà restituirci la nostra password (perché non la possiede), ma ci invierà un link per impostarne una nuova.
Purtroppo, alcuni siti web salvano ancora le password in chiaro, ma sono sempre meno frequenti.
Quindi, quando ti registri su un sito web, il sistema calcola l’hash della password che hai impostato e salva l’hash nel proprio database.
Durante il login successivo, la password che inseriamo verrà convertita in hash (usando uno degli algoritmi disponibili) e confrontata con quella presente nel database.
Se i due hash corrispondono, l’accesso è consentito; altrimenti significa che la password digitata è errata.
Il vantaggio dell’uso degli hash è chiaro: 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 reversibili, dovrebbe essere impossibile risalire alle password.
Dovrebbe essere impossibile… ma in realtà non lo è del tutto. Con l’hashing delle password abbiamo certamente reso il lavoro dell’attaccante più difficile, ma con gli strumenti che mostreremo ora, potrebbe comunque riuscire a ottenere la nostra password.
Tipi di attacchi alle password tramite password cracking
Quando l’attaccante non riesce a rubare la password a causa di un errore umano, come abbiamo spiegato nell’introduzione, può sfruttare tecniche più sofisticate, come il “password cracking”.
Craccare una password è una procedura complessa, richiede adeguate conoscenze informatiche e strumenti, come computer potenti e software dedicati. Ma in alcuni casi può essere efficace.
Può essere realizzato in due modi diversi:
- Attacco ONLINE: è ovviamente lento e inefficiente, poiché richiede la risposta online del sito web “interrogato”. Inoltre, è abbastanza frequente che un sito imponga un limite al numero di tentativi di login falliti. Pertanto, può essere utile in attacchi a bassa intensità, come il già citato “credential stuffing”. Viene utilizzato anche negli attacchi RDP (Remote Desktop Protocol): in molti casi, infatti, chi usa RDP non si preoccupa di limitare il numero di tentativi di accesso e imposta password inadeguate. Per l’attaccante, riuscire ad accedere alla porta RDP è solo questione di tempo. E frequentemente, questo accesso ha lo scopo di introdurre ransomware, che blocca il sistema compromesso.
- Attacco OFFLINE: questo è il vero attacco di password cracking.
Perché abbia luogo, l’attaccante deve già essere riuscito a ottenere accesso al database degli hash delle password.
Ciò può avvenire in diversi modi:
- Compromettendo il sistema: nei moderni sistemi UNIX, le password sono memorizzate in modo cifrato nel file /shadow/etc, accessibile solo a chi dispone dei privilegi di amministratore (permessi root).
- Compromettendo il DB di un’applicazione.
- Usando lo strumento Mimikatz: è uno strumento progettato per recuperare tutte le password gestite da Windows. Lo strumento è stato realizzato da Benjamin Delpy quando lavorava per un’agenzia governativa francese ed è disponibile come software open source su GitHub.
- Hackerando la rete WiFi.
Una volta entrato in possesso dell’hash della password, l’attaccante avrà tutto il tempo necessario per provare a risalire dall’hash alla password, poiché il password cracking diventa un processo offline, che non richiede alcuna connessione di rete.
Naturalmente, dovrà farlo per tentativi, dato che l’hash — come spiegato sopra — non è reversibile.
Un primo modo per farlo è creare le “Rainbow Tables”: si tratta di tabelle in cui vengono inseriti tutti gli input possibili per calcolare il rispettivo hash. Sono state inventate da Martin Hellman, il creatore (insieme a Whitfield Diffie) dell’algoritmo Diffie-Hellman per lo scambio di chiavi, che ha permesso lo sviluppo della crittografia in una prospettiva pubblica.
Le rainbow table sono file di dimensioni enormi, anche oltre i 100 GB, che si possono trovare sul web.
Per contrastare le rainbow table e renderne più difficile l’uso, è buona norma aumentare la lunghezza della password: in questo modo, anche le dimensioni delle rainbow table necessarie dovranno aumentare esponenzialmente.
Un’altra contromisura usata oggi è il cosiddetto salt: quando un utente imposta una password, il sistema crea un valore casuale aggiuntivo, il salt. Questo valore viene aggiunto alla password come hash e, in questo modo, produce un altro valore, diverso da quello generato dalla password.
Questa misura aggiuntiva è efficace proprio contro le rainbow table, ma potrebbe non essere sufficiente a difenderci da altri tipi di attacchi, come il “brute force” e gli “dictionary attacks”.
Difesa DNS di nuova generazione: basata su cloud e IA, semplice da attivare.

Tecniche di cracking delle password
Attacco brute force
Questo è l’attacco standard realizzato offline, senza bisogno di mantenere una connessione con il sistema della vittima, a condizione che il database degli hash delle password sia già stato ottenuto (con le procedure descritte sopra). Consiste nel provare tutte le password possibili, una dopo l’altra, partendo dalle combinazioni più semplici o plausibili, per poi arrivare fino alla lunghezza massima stabilita.
Per portare a termine questi attacchi si utilizzano software per il cracking delle password, facili da trovare online e che automatizzano l’attacco.
I più diffusi sono: John the Ripper e Hashcat. Esistono anche diversi altri strumenti, tra cui Elzapop, Cain&Abel, ecc.
Inoltre, esistono servizi gratuiti di cracking online (sul web si trova di tutto!), come crackstation.net.
Sebbene si tratti di un attacco rudimentale, poiché opera per “brute force”, può essere efficace grazie alla crescente potenza dei computer attuali: oggi, sfruttando la potenza di calcolo delle GPU (Graphic Processing Units) organizzate in parallelo, è possibile realizzare, a un costo ragionevole, computer in grado di effettuare fino a 100 GH/s, quindi 100 miliardi di hash al secondo.
Si può infatti affermare che l’attacco brute force ha successo garantito, a condizione che abbia un tempo illimitato.
Ma poiché il tempo non è – in pratica – un aspetto trascurabile (nessuno vuole impiegare anni o secoli per violare un sistema…), vediamo quali sono le variabili che influenzano il tempo necessario perché l’attacco abbia successo:
- lunghezza della password;
- complessità della password e tipo di simboli alfanumerici utilizzati.
Un esempio chiarirà questi aspetti:
- una password lunga 8 caratteri composta solo da numeri avrà un numero di combinazioni pari a $10^8 = 100.000.000$. Con una potenza di analisi di 100 GH/s verrà scoperta in molto meno di un secondo.
- se invece la password è lunga 14 caratteri e utilizza tutti i tipi di caratteri possibili sulla tastiera (quindi numeri, lettere minuscole e maiuscole, caratteri speciali, in totale 95), il numero di combinazioni possibili sarà $95^{14} = 4.8 \times 10^{27}$. Considerando 100 GH/s, saranno necessari circa 1.546 milioni di anni. Quindi la complessità della password rende impraticabile un attacco brute force.
Ecco perché è stato inventato il concetto di Entropia, che ci fornisce una misura della robustezza di una password. Ne parleremo più avanti.
Attacco “dictionary”
Come mostrato sopra, gli attacchi brute force sono estremamente inefficienti. Per questo motivo gli attaccanti ricorrono a metodi più efficaci e intelligenti che – sfruttando le cattive abitudini degli utenti – riescono a restringere il campo di ricerca.
Uno dei metodi utilizzati è l’attacco “dictionary”: poiché le persone usano parole significative per le proprie password, queste sono le prime che gli attaccanti proveranno. Uno o più file dizionario vengono caricati dal software di cracking delle password, che li consulterà durante la ricerca della password.
Questi dizionari sono disponibili sul web: il dizionario della lingua italiana conta circa 300.000 parole ed è un file di testo di alcuni MB. Inoltre, l’elenco del milione di parole più usate al mondo è un file di circa 8 MB. Naturalmente sono disponibili dizionari in diverse lingue, che possono essere scaricati e utilizzati.
Questo è un modo molto più veloce rispetto al brute force (meno tentativi ma più mirati) e consente di scoprire facilmente le password più deboli.
Attacco “con regole”
Si basa sul fatto che le persone tendono a riutilizzare le stesse password, modificando semplicemente alcuni caratteri, nell’illusione di renderle più sicure pur mantenendo facile ricordarle. Si tratta delle cosiddette “modifiche ovvie delle password”.
È noto, ad esempio, che la parola “password” viene solitamente modificata in:
P@ssword, PASSWORD, passw0rd, P@$$w0rd, ecc.
I software per il cracking delle password implementano già questi algoritmi di sostituzione, rendendo più efficace il normale attacco dictionary.
L’attacco che utilizza queste regole è quello che – statisticamente – ha la maggiore efficacia in termini di tempo/risultato.
Attacco “Pattern (mask)”
In questo caso ci concentriamo solo sui pattern reali, che sappiamo essere quelli che le persone tendono effettivamente a usare.
Quando viene richiesta una password che includa almeno una lettera maiuscola, un numero e un simbolo speciale, il pattern che, statisticamente, viene utilizzato più spesso è: lettera maiuscola all’inizio, numeri e simboli speciali alla fine.
In questo modo possiamo limitare il numero di tentativi, concentrando l’attacco brute force sulle password statisticamente più probabili.
Tecniche combinate di cracking delle password
Per aumentare l’efficacia dell’attacco di cracking delle password, le varie tecniche sopra menzionate vengono combinate tra loro. In questo modo, l’attaccante aumenta notevolmente le sue possibilità di scoprire la password a partire dal suo hash.
Entropia della password
Concludiamo questo articolo illustrando il concetto di ENTROPIA, utilizzato nella crittografia per fornire una misura matematica della complessità di una password. Una password con un’entropia più elevata è più difficile da scoprire.
La nozione di “Entropia” è stata introdotta nel 1948 da Claude Shannon, un ingegnere e matematico americano, definito il “padre della teoria dell’informazione”. Nel 1948 pubblicò un saggio intitolato “A mathematical theory of communication”, un saggio scientifico in cui pose le basi teoriche per lo studio dei sistemi di codifica e della trasmissione delle informazioni. Fu in questa ricerca che Shannon scelse il bit come unità elementare per misurare l’informazione.
E infatti il bit viene utilizzato come unità di misura dell’entropia di una password. Vediamo cosa significa: se la password viene scelta con la stessa probabilità per ciascun simbolo, esistono $N^L$ password possibili (dove N = numero di simboli possibili; L = lunghezza della password).
L’entropia S di una password è quindi definita come:
$S = \log_2(N^L)$ dove $\log_2 =$ logaritmo in base 2.
Per un corretto livello di sicurezza, la password dovrebbe avere un’entropia di almeno 64 bit.
Oltre i 128 bit non è più necessario aumentare la robustezza della password, poiché un ulteriore incremento della sicurezza sarebbe inutile.
Vediamo alcuni esempi:
- Password di 8 caratteri (solo lettere + numeri): $S = \log_2(62^8) = 47.63$ bit ? Inadeguata
- Password di 12 caratteri (lettere + numeri + simboli speciali): $S = \log_2(95^{12}) = 78.838$ bit ? Sufficiente
- Password di 20 caratteri (lettere + numeri + simboli speciali): $S = \log_2(95^{20}) = 131.397$ bit ? Adeguata
Questo ci permette di concludere che una password lunga 20 caratteri e che utilizza tutti i tipi di caratteri (numeri, lettere minuscole e maiuscole, simboli speciali) è ampiamente sufficiente per garantire un alto livello di sicurezza.
Difesa DNS di nuova generazione: basata su cloud e IA, semplice da attivare.

Come possiamo difenderci?
In conclusione, abbiamo visto come le tecniche di cracking delle password descritte qui subordinino la loro probabilità di successo agli errori degli utenti.
Oltre alle “cattive abitudini” già descritte, c’è un fattore che può rendere il cracking delle password quasi inefficace: creare una password lunga, composta da una combinazione totalmente casuale di lettere, numeri e simboli speciali.
Quale lunghezza?
Come abbiamo evidenziato, considerando l’entropia e la potenza di calcolo disponibile con i computer attuali (questa considerazione perderà di valore quando saranno disponibili i computer quantistici), è una buona misura di sicurezza impostare una password lunga almeno 12 caratteri e fino a un massimo di 20 caratteri (non c’è bisogno di andare oltre!) e che utilizzi tutti i tipi di caratteri (numeri, lettere minuscole e maiuscole, simboli speciali).
Ovviamente, questa password è sicura purché non sia scritta su un post-it attaccato alla tastiera o allo schermo del computer!
E questo dimostra ancora una volta che:
“Il fattore umano è davvero l’anello debole della sicurezza”
(“The art of Deception”, Kevin Mitnick – 2002)
L’autore
Giorgio Sbaraglia, ingegnere, è consulente e formatore sui temi della sicurezza informatica e della privacy.
Tiene corsi di formazione su questi temi per numerose importanti aziende italiane, tra cui ABIFormazione e la 24Ore Business School.
È coordinatore scientifico del Master “Cybersecurity and Data Protection” della 24Ore Business School.
È membro del Comitato Scientifico CLUSIT (Associazione Italiana per la Sicurezza Informatica) e Innovation Manager certificato da RINA
Ricopre incarichi di DPO (Data Protection Officer) in aziende e Associazioni Professionali.
È autore dei seguenti libri:
- “GDPR kit di sopravvivenza” – “GDPR survival kit” (Edito da goWare),
- “Cybersecurity kit di sopravvivenza. Il web è un luogo pericoloso. Dobbiamo difenderci!” – “Cybersecurity survival kit. The web is a dangerous place. We must defend ourselves!” (Edito da goWare),
- “iPhone. Come usarlo al meglio. Scopriamo insieme tutte le funzioni e le app migliori” – “iPhone. How to use it to its full potential. Let’s discover together all the functions and best apps” (Edito da goWare).
Collabora con CYBERSECURITY360 una rivista online specializzata del gruppo Digital360 focalizzata sulla Cybersecurity.
Scrive inoltre per ICT Security Magazine, per Agenda Digitale e per la rivista CLASS.
Puoi attivare la protezione FlashStart® Cloud su qualsiasi tipo di Router e Firewall per mettere in sicurezza dispositivi desktop e mobile e dispositivi IoT sulle reti locali.

