Decrittare un hash MD5
In questo articolo andiamo a vedere come funzionano gli hash md5, che cosa sono e come è possibile risalire al loro contenuto originale. Vedremo quindi come Decrittare un hash MD5
Una funzione HASH è un algoritmo che ha il compito di mappare dei dati (testo ad esempio) in una stringa di dimensione fissa chiamata valore. Le funzioni hash sono funzioni di tipo unidirezionale, ciò significa che sono difficilmente invertibili e che è complicato ottenere i valori dell’input nel caso si abbia accesso unicamente all’output.
Tali funzioni vengono generalmente utilizzare per crittografare le nostre password di accesso. Un provider di servizi/sito web a cui siamo registrati non registra la password da noi scelta in fase di registrazione come testo in chiaro, bensì la cripta utilizzando una funzione di hash. Immaginiamo di aver scelto come password la stringa 1239fsd##O. Un ipotetico provider, ipotizzando che il provider utilizzi una funzione di hash md5, memorizzerà questa password sui suoi sistemi in un modo come questo: f1d594819bd1feaf562250336b6cf7ed. (link convertitore)
L’MD5 è un particolare tipo di funzione di hash, caratterizzata dall’unidirezionalità e dal fatto che una volta avvenuta la cifratura questa è irreversibile.
Abbiamo detto poco fa che la cifratura è irreversibile, ciò però non vuol dire che avendo il giusto tempo e gli strumenti giusti non sia possibile decrittarla. E’ infatti possibile effettuare un attacco di forza bruta, andando a generare password casuali (o con logica a dizionario) fino a trovare una password che una volta passata alla funzione hash corrisponda all’output che dobbiamo decifrare.
Esistono vari tipi di strumenti che ci permettono di svolgere un’operazione del genere, strumenti che permettono anche altre tipologie di bruteforcing. In questo caso vedremo come utilizzare John The Ripper, anche se per risultati più efficienti su password più complesse sarebbe il caso di utilizzare hashcat che ci permette di utilizzare le più potenti risorse di una GPU o di un cluster.
Per prima cosa andiamo ad installare john, da terminale su una derivata ubuntu possiamo digitare:
sudo apt install john
Una volta fatto ciò possiamo verificare la corretta installazione digitando il comando john ,se tutto è andato bene dovremmo vedere i dettagli di utilizzo del tool; bisogna prestare attenzione che la versione installata sia la versione jumbo.

Immaginiamo ora di voler decrittare un hash MD5, immaginiamo che sia fa7f68fe17fd2e04e80e5b6d81508b2f.
Per andarlo a decodificare, insieme magari ad altri hash, ci basterà piazzarlo in un file di testo. Possiamo farlo da terminare in questo modo:
echo "fa7f68fe17fd2e04e80e5b6d81508b2f" > miohash
Una volta creato il file, sempre da terminale, ci basterà lanciare il seguente comando:
john --format=raw-md5 miohash
Una volta che diamo invio john parte, e proverà ad indovinare la password prima cercandola in una wordlist (nel caso la avessimo) e poi iniziando a eseguire un bruteforce cercando di indovinare la password. Appena terminato avremo il risultato, in un modo che segue

Nel nostro caso il risultato è stato quasi immediato, questo non vuol dire che john the ripper sia un tool micidiale, ma semplicemente che l’hash che stavamo cercando di decrittare era parecchio semplice, nel nostro caso l’origine dell’hash era letteralmente “facile”.
Ovviamente nel caso l’input fosse stato di natura più complessa ci sarebbero volute ore, anni, secoli o più per ottenere questo risultato utilizzando il semplice bruteforcing.
Questo ci fa riflettere: non basta che una nostra password sia codificata per essere al sicuro, deve comunque essere una password dignitosamente robusta!
🙂