TL;DR L’ennesimo data leak degli iscritti a un sito di contenuti pornografici è l’occasione per ricordare che le password banali sono facilmente indovinabili, sia con attacchi a forza bruta che a dizionario, soprattutto se il gestore della piattaforma non ha adottato adeguate soluzioni di protezione.
“Il congresso dice che la metà degli americani usa Internet.
L’altra metà fa sesso con partner reali.”
Jay Leno
Su Internet c’è porno. Statistiche recenti dicono che almeno il 4% di tutti i siti web è a contenuto pornografico (escluso ovviamente il deep e dark web) e molti di essi consentono la registrazione degli utenti per offrire accesso o servizi aggiuntivi.
Capita però che, come per molti altri siti web che non adottano adeguate misure di sicurezza, l’archivio degli utenti venga sottratto e messo in vendita on-line in uno dei tanti market nel web e dark-web.
Oggi è stato messo in vendita, su uno di questi market, il (presunto) database degli utenti di un sito di video pornografici, lovehomeporn[.]com, e il venditore, come prova della bontà della sua merce (quasi 600.000 righe contenenti e-mail, username e password in hash MD5), ha pubblicato il consueto sample di qualche decina di righe.
Se siete tra gli iscritti a quel portale e lo avete fatto usando la vostra mail “ufficiale”, forse potreste non essere particolarmente felici della notizia. E se il portale chiede d’inserire anche i dati della carta di credito, i motivi di preoccupazione possono essere ancora maggiori.
Sicuramente avere le password salvate nel database come hash MD5 è un elemento di sicurezza in più (alcuni siti web ancora oggi, purtroppo, memorizzano le password utente in chiaro…) ma, soprattutto se non viene usato il salt, se l’utente ha scelto una password non troppo sicura, basterà provare a cercare l’hash su Google per ottenere la sua versione “dehashed”. Così, provando a caso uno degli hash pubblicati, sono bastati pochi istanti per scoprire le credenziali.
Esistono siti ad-hoc per il de-hashing, come md5.j4ck.com, dove è sufficiente inserire l’hash MD5 per scoprire, se si è abbastanza fortunati, la parola originaria.
Per chi non sapesse cosa è un hash, parliamo di una funzione matematica che, dai un certo input, restituisce una “impronta” digitale univoca. Esistono svariate funzioni di hashing, come le note MD5 e SHA1. Le funzioni di hash hanno, a differenza di quelle di cifratura, la caratteristica di non essere reversibili. Ovvero, dato un certo hash, non c’è una funzione matematica capace di restituire l’input originario. Gli attacchi agli hash, quindi, si basano essenzialmente su forza bruta o su dizionario: si calcolano gli hash per milioni di combinazioni e si effettua un confronto con esse, nella speranza d’individuare l’input originario. Uno degli strumenti più famosi per l’attacco a forza bruta/dizionario oggi è hashcat, capace di sfruttare le risorse computazionali dei moderni sistemi informatici per computare decine di migliaia di hash, di centinaia di algoritmi diversi, ogni secondo.
Gli “attacchi a dizionario” sono quelli effettuati a partire da un dizionario di possibili parole che rappresentano, spesso, parole di senso compiuto (ad es. tutte le parole italiane) o comunque plausibili. In rete si trovano decine di dizionari già pronti, collezioni di parole di cui uno dei più noti è “rockyou“. Spesso sono anche collezioni delle password “rubate” se non elenchi di nomi e cognomi comuni o noti, oppure personaggi di fantasia o cinematografici. Una delle collezioni più note è quella mantenuta su GitHub da Daniel Miessler: SecLists.
Gli “attacchi a forza bruta“, come dice la parola stessa, sono realizzati provando tutte le combinazioni possibili. Ad esempio, in un vocabolario di 26 possibili combinazioni (es. a-z), una parola di 4 caratteri sarà scoperta, nel peggiore dei casi, dopo 26^4 tentativi: parliamo di oltre 456976 combinazioni che, per un sistema mediamente potente come quelli casalinghi, sono verificabili in pochi istanti. Giusto per darne un’idea, ecco una tabella aggiornata con le potenze di calcolo disponibili nel 2021:
P.S. per prendere più complicati gli attacchi a dizionario si può aggiungere un po’ di… sale, ovvero accodare un valore casuale, chiamato appunto salt (“sale”).
La morale, quindi, è: come password scegliere una parola casuale, sicuramente non contenuta in alcun dizionario, e sufficientemente lunga da non essere velocemente scoperta con un attacco a forza bruta. Generalmente, una password casuale di almeno 12 caratteri è ragionevolmente sicura per le normali esigenze quotidiane (mi raccomando, non scrivetela sul post-it appiccicato al monitor!). Nel dubbio, senza inserire la vostra password, potete divertirvi a fare delle prove di robustezza su How Secure is My Password?