Menu

TL;DR

approfondimento di /r/ItalyInformatica

Crackare password? Facciamolo!

Questo articolo sarà un po’ diverso dagli altri: oltre a parlarvi dell’argomento (Crackare password n.d.r.), voglio proporvi una piccola sfida.

Sappiamo che le password devono essere lunghe, devono essere complesse e solo una di queste due proprietà non basta: avere la stessa password per ogni sito web, sappiamo, non è cosa giusta. Tutte queste accortezze per cosa? Per non farsi rubare le password ovviamente: ma se volessi provarci? Vi è mai capitato di crackare password?

Inizio dicendo che a me la parola ”crackare” fa pensare a martellare e rompere: prendi una password e la smarmelli con un martello. Ora non è questo ciò che succede se ”cracki” una password, in realtà ciò che si fa è trovare il cosiddetto plaintext, cioè la password in chiaro corrispondente al suo hash, che è la password cifrata. Questo è solo uno dei metodi per riuscire nell’intento: ci sono altri modi, come il phishing, ma non pensiamoci più di tanto ora.

Per crackare una password si parte dall’avere il suo hash. Come lo otteniamo? Eh su questo siate fantasiosi voi, ho qualche asso nella manica ma andiamo avanti. Diciamo che abbiamo un hash: adesso potremmo provare qualche attacco. L’idea di base è capire quale algoritmo è stato usato per generare l’hash della password e poi usarlo noi stessi su combinazioni alfanumeriche. Perciò generiamo gli hash delle nostre combinazioni e semplicemente controlliamo se quello creato da noi è proprio l’hash della password. Quando, partendo da una qualche parola (anche solo dalla lettera a) e andando avanti a tentativi (generiamo hash, confrontiamo), stiamo utilizzando il cosiddetto attacco a forza bruta (brute force attack). Non è molto intelligente, non usa tecniche particolari e se la password è lunga e complessa potrebbe richiedere talmente tanto tempo che è del tutto inutile provarci: se sappiamo che la password deve essere per forza lunga al massimo 8 caratteri, ad esempio, oppure sono ammessi soltanto lettere e numeri, allora abbiamo modi per limitare il numero di combinazioni da provare e quindi limitire il tempo richiesto.

Un altro tipo di attacco a tentativi è quello col dizionario (dictionary attack). Un dizionario non è altro che una lista di combinazioni fattibili. Esempio: volete crackare la password di Facebook della vostra ragazza (siete persone corrette e rispettabili e non lo fareste mai giusto?). Aprite un file di testo e riga per riga mettete tutte le password che pensate potrebbero essere giuste. Ci scrivete nomi di parenti, date importanti, nomi uniti a date, cose preferite etc. Vi siete costruiti un piccolo dizionario ed eseguite l’attacco. Il dictionary attack, adesso, prende una ad una la combinazione di lettere e numeri che voi avete 

fornito e li prova come prima. Sembra simile al brute force attack, invece di provare tutte le combinazioni prova solo quelle che avete dato voi: se il dizionario possiede la password allora l’attacco la troverà in tempi molto brevi, altrimenti non funziona. Questo tipo di attacco nudo e crudo può essere sconfitto abbastanza facilmente: diciamo che siete certi che la password da crackare sia una parola italiana, allora potete usare come dizionario quello della lingua italiana (intendo proprio Treccani). Ma se il creatore della password l’ha scritto male la parola? Fallisce tutto! Di solito i vari software che offrono questo attacco in realtà implementano un ibrido: prendono una parola dal dizionario fornito e la testano. Non va? Allora provano delle varianti di quella parola, ci aggiungono pezzi cambiano lettere etc. (una sorta di unione di brute force attack e dictionary attack n.d.r.).

Questi di cui ho parlato sono nella categoria offline attacks perché non state cercando di entrare in qualche account tentando le password nella schermata di login, ma avete l’hash e ve ne state a casa a crackare senza che il sito vittima ne sappia qualcosa. Non ho parlato della tecnica del ”mettere il sale sulle password”, il quale è un bel problema per gli attaccanti offline casalinghi: magari sarà oggetto di un altro articolo. Adesso passiamo a crackare davvero.

Sfida

Vi fornisco sotto un file con 90 hash. Ci sono vari strumenti utilizzabili per smarmellare quegli hash, non è che dovete farlo a mano con carta e penna (o martello), tranquilli: personalmente ho usato John the Ripper (vi consiglio la versione della community: jumbo).

Per eseguire il più semplice degli attacchi vi basta scrivere in un terminale ”john password.txt”, assumendo che password.txt sia la lista degli hash da crackare. Basta questo e lui inizia “crackare”.
Se avete un dizionario allora fate: ”john -w=dizionario.txt password.txt”. Con w potete specificare un dizionario e john saprà cosa fare: potete anche specificare delle regole su come provare varianti delle parole e altro ancora, sta a chi è interessato ad imparare il tool scoprire queste cose.

Il file degli hash che vi do `e in questo formato: ”n:hash”, n è un id e hash è l’hash di una password: John the Ripper capisce da solo, grazie ai due punti, e quando scopre una password vi segnala a quale id è associata.

Provate a crackare queste 90 password: scaricate dizionari (la parola ”wordlist” è molto usata per riferirsi ai dizionari n.d.r.) e provateli o anche createne di vostri.

Fateci sapere con un commento come sta andando, quante ne avete trovate oppure quale tool state usando e come lo usate!

Buon divertimento e ”STACCAH STACCAHH”!

File password

Questo articolo è stato scritto solamente per scopo dimostrativo: sia l’autore che TL;DR si dissocia da qualsiasi uso fraudolento degli strumenti riportati nell’articolo.

Share on Facebook0Google+0Tweet about this on Twitter