John the Ripper: lo scassinatore di password

John the Ripper: lo scassinatore di password

Vuoi scoprire quanto sono sicure le tue password? John the Ripper è lo strumento perfetto per te! Questo cracker di password open-source, ampiamente utilizzato dai professionisti della sicurezza informatica per testare la resistenza delle password è in grado di decifrare una vasta gamma di algoritmi di crittografia, consentendo di risalire alle password in chiaro partendo dagli hash.

Grazie alle sue funzionalità avanzate, non solo permette di testare la robustezza delle password, ma evidenzia anche l’importanza di adottare password lunghe, complesse e protette da algoritmi di hashing sicuri. È disponibile nei repository di molte distribuzioni Linux, tra cui Ubuntu e Debian, diventando uno standard nel settore della sicurezza informatica.

In questa guida, vi mostrerò come utilizzare John the Ripper in tre scenari pratici, fornendo una dimostrazione del suo utilizzo.

Se desiderate approfondirne tutte le funzionalità, qui troverete la documentazione ufficiale.

Come funziona John the Ripper?

John the Ripper offre quattro modalità principali di utilizzo per eseguire il password cracking:

Modalità Dizionario (Dictionary Mode): Questa è la modalità più comune, in cui John the Ripper utilizza un file di testo contenente un elenco di parole (wordlist) e le confronta con gli hash delle password. L’obiettivo è trovare corrispondenze tra le parole della lista e gli hash delle password.

john --wordlist=passwords.txt hashfile.txt

Modalità Incrementale (Incremental Mode): Questa modalità esegue un attacco brute force, provando tutte le possibili combinazioni di caratteri fino a trovare la password corretta. È il metodo più esaustivo, ma anche il più lento, poiché esplora tutte le varianti possibili.

john --incremental hashfile.txt

Modalità Singola (Single Crack Mode): In questa modalità, John the Ripper utilizza le informazioni dell’utente, come il nome o altri dettagli personali, per creare varianti e tentare di indovinare la password. È un attacco mirato che sfrutta informazioni già note o ragionevolmente prevedibili.

john --single hashfile.txt

Modalità Esterna (External Mode): Consente di utilizzare script personalizzati, spesso scritti in linguaggi come C, per creare strategie di cracking specifiche. Questa modalità offre la massima flessibilità per sviluppare algoritmi su misura per il cracking di password particolarmente complesse.

john --external=custom_crack hashfile.txt

Algoritmi di Hashing e Vulnerabilità

Un concetto fondamentale da comprendere per apprezzare appieno il funzionamento di John the Ripper è quello degli algoritmi di hashing. Un algoritmo di hashing trasforma una stringa di caratteri (come una password) in una sequenza di caratteri di lunghezza fissa (hash). Un buon algoritmo di hashing produce un valore hash unico per ogni input, rendendo praticamente impossibile risalire alla password originale conoscendo solo il valore hash. Anche una piccola modifica alla password genera un hash completamente diverso.

Tuttavia, non tutti gli algoritmi di hashing garantiscono la stessa sicurezza. Alcuni algoritmi più datati o meno sofisticati possono essere vulnerabili a collisioni (due input diversi producono lo stesso hash) o ad attacchi di tipo “rainbow table”, che precalcolano un enorme numero di hash per accelerare il processo di cracking.

John the Ripper supporta un’ampia gamma di algoritmi di hashing, tra cui:

  • MD5: Uno degli algoritmi più vecchi, ormai considerato insicuro a causa delle numerose collisioni note.
  • SHA-1: Simile a MD5, ma leggermente più sicuro. Tuttavia, anche SHA-1 è stato compromesso in alcuni casi.
  • SHA-256 e SHA-512: Considerati più sicuri di MD5 e SHA-1, sono ampiamente utilizzati per proteggere le password.
  • bcrypt e Argon2: Algoritmi più moderni e resistenti agli attacchi, progettati specificamente per proteggere le password.

Digitando il comando:

john --list=formats

Possiamo vedere tutti i formati hash che sono supportati e decifrabili dal nostro tool.

John the Ripper in Azione: Scopriamo le Password dei File ZIP

L’utilizzo di John the Ripper, come di qualsiasi altro strumento di hacking, deve essere effettuato in modo responsabile e nel rispetto delle leggi vigenti. È fondamentale ottenere le autorizzazioni necessarie prima di testare la sicurezza di un sistema informatico che non ti appartiene.

Immaginiamo che un hacker sia riuscito a ottenere un nostro file ZIP protetto dalla password “password”. Ogni volta che tenterà di accedere al contenuto, il sistema richiederà l’inserimento della password corretta. Ed è proprio in situazioni come questa che John the Ripper entra in gioco.

Grazie alle sue potenti capacità di cracking, può tentare di recuperare la password del file ZIP crittografato.

Iniziamo , apriamo il terminale di Kali Linux e digitiamo il comando per creare la directory (cartella) “hash”, dove verrà salvato l’ hash del nostro file.

mkdir -p hash

Per mettere in azione John the Ripper, il primo passo è estrarre l’hash dal file ZIP protetto da password. Per farlo, utilizziamo il tool zip2john, che ci consente di creare l’hash del file desiderato, per farlo digitiamo il seguente comando:

sudo zip2john /home/kali/Desktop/TUOFILE.zip > hash/test.txt

Dopo aver ottenuto l’hash del file ZIP protetto, possiamo lanciare un attacco dizionario e tentare di recuperare la password. Per questo tipo di attacco, una risorsa estremamente utile è la wordlist “RockYou”, che contiene milioni di password comuni, quindi digitiamo il seguente codice:

john --format=zip hash/test.txt --wordlist='/home/kali/Desktop/rockyou.txt'
John the ripper in azione, crack zip file password

et voilà, la password del nostro file ZIP è stata facilmente decifrata.

John the Ripper in Azione: Scopriamo le Password dei File PDF

John the Ripper può essere utilizzato anche per scoprire le password dei file PDF crittografati.

Questa volta utilizzeremo il comando pdf2john per estrarre gli hash delle password dal file PDF. Eseguiamo il comando:

pdf2john '/home/kali/Desktop/TUOFILE.pdf' >hash-esercizio-pdf.txt

Una volta estratto l’hash utilizziamo John the Ripper per cercare di trovare la password. Eseguiamo il comando:

john --format=pdf hash-esercizio-pdf.txt --wordlist='/home/kali/Desktop/rockyou.txt'
John the Ripper in azione, crack pdf password

Anche in questo caso il nostro tool è riuscito ad individuare la password del nostro PDF “password1”.

John the Ripper in Azione: Scopriamo le password di sistema

John the Ripper non serve solo per decriptare password di file, ma può essere utilizzato anche per valutare l’efficacia delle password usate su sistemi Linux.

In un sistema Linux, le password criptate vengono salvate in due file chiave:

  • /etc/passwd: Questo file contiene informazioni sugli utenti, come il nome utente, l’ID dell’utente (UID), il gruppo a cui appartiene, e una descrizione dell’account. Anche se in passato questo file memorizzava direttamente le password, oggi è utilizzato principalmente per l’identificazione degli utenti e altre informazioni di base.
  • /etc/shadow: Qui vengono memorizzati gli hash delle password degli utenti, insieme a informazioni importanti come la data dell’ultimo cambio password e la data di scadenza della password. Questo file è accessibile solo agli amministratori di sistema, garantendo una maggiore sicurezza rispetto al file /etc/passwd.
cat /etc/passwd
John the ripper in azione

Per valutare la sicurezza del nostro sistema, utilizzeremo il comando unshadow. Questo comando ha la funzione di combinare le informazioni contenute nei file /etc/passwd e /etc/shadow, che in Linux gestiscono rispettivamente gli account utente e le loro password hashate, in un unico file più comodo da analizzare, che chiameremo pwdkali.txt.

Per eseguire questa operazione, digitiamo il seguente comando:

sudo unshadow /etc/passwd /etc/shadow > pwdkali.txt
John the ripper in azione

Passiamo all’azione e avviamo l’analisi, utilizzando il comando:

john --format=crypt --wordlist='/home/kali/Desktop/rockyou.txt' pwdkali.txt
John the ripper ha trovato la password del nostro nome utente

John the Ripper utilizzerà la wordlist "RockYou” per testare le password di tutti gli utenti contenuti nel file pwdkali.txt. L’operazione può richiedere diversi minuti, a seconda della complessità delle password e della potenza del sistema.

Se preferiamo, possiamo utilizzare un altra wordlist al posto di rockyou.txt, oppure esplorare diverse modalità di cracking offerte da John the Ripper.

Nel nostro esempio, John the Ripper è riuscito a trovare l’utente e la password d’accesso della macchina virtuale su cui è montato Kali Linux. “kali” (kali)