Decifrare le Password con Hashcat: Una Guida Completa
Nell’ambito dell’hacking etico e dei penetration test, la decrittazione delle password riveste un ruolo cruciale per ottenere l’accesso a sistemi e server. È importante comprendere che le password non sono quasi mai memorizzate in chiaro all’interno di sistemi e database.
Prima di essere archiviate, le password vengono sempre sottoposte a un processo di hashing, e il risultato (l’hash) viene utilizzato per le verifiche di autenticazione. A seconda degli algoritmi di crittografia impiegati, gli hash delle password possono essere memorizzati in modi diversi, ma conoscendo l’algoritmo, è possibile tentare di risalire alla password originale.
In questo articolo, esamineremo l’utilizzo di Hashcat, uno strumento a riga di comando pratico e potente, per decifrare gli hash delle password.
Cominciamo!
Ma prima, cerchiamo di capire…
Cos’è una Funzione Hash?
L’hashing è il processo di trasformazione di un testo di input in una stringa di testo di lunghezza fissa, utilizzando una funzione matematica specifica, chiamata appunto funzione hash. Indipendentemente dalla lunghezza del testo, una funzione hash lo converte in una combinazione apparentemente casuale di numeri e lettere.
- L’input è il messaggio che viene sottoposto a hashing.
- La funzione hash è l’algoritmo crittografico (ad es. MD5, SHA-256) che trasforma una stringa in un valore hash.
- Il valore hash è il risultato finale.
Cos’è Hashcat?
Hashcat è riconosciuto come uno degli strumenti più veloci per il recupero di password. È stato creato specificamente per decifrare password complesse in tempi relativamente brevi. Questo strumento è in grado di eseguire sia attacchi basati su dizionari che attacchi brute-force.
Hashcat è disponibile in due versioni: una basata su CPU e una su GPU (Unità di Elaborazione Grafica). La variante basata su GPU riesce a decifrare gli hash in tempi significativamente inferiori rispetto a quella su CPU. Sul sito web ufficiale è possibile consultare i requisiti relativi ai driver della GPU.
Caratteristiche
- Software gratuito e open source.
- Supporta oltre 200 tipi di hash.
- Funziona su sistemi operativi multipli, quali Linux, Windows e macOS.
- Offre supporto per piattaforme diverse, sia CPU che GPU.
- Capacità di violare più hash contemporaneamente.
- Supporta file hex-salt e hex-charset, con ottimizzazione automatica delle prestazioni.
- Include un sistema di benchmark integrato.
- Supporta reti di cracking distribuito tramite overlay.
Ulteriori dettagli sulle caratteristiche sono disponibili sul sito web di Hashcat.
Installazione di Hashcat
Prima di iniziare, assicurati che il tuo sistema Linux sia aggiornato con le ultime versioni di programmi e strumenti.
Per farlo, apri il terminale e digita:
$ sudo apt update && sudo apt upgrade
In genere, Hashcat è preinstallato su Kali Linux, nella sezione dedicata al cracking delle password. Nel caso tu debba installarlo manualmente su altre distribuzioni Linux, utilizza questo comando nel terminale:
$ sudo apt-get install hashcat
Utilizzo dello Strumento
Per iniziare a usare Hashcat, occorrono degli hash di password. Se non ne hai, puoi crearne alcuni.
Per generare hash tramite riga di comando, utilizza il seguente formato:
echo -n "input" | algorithm | tr -d "-">>outputfiename
Ad esempio, qui sotto sono stati creati degli hash a partire da alcune parole usando l’algoritmo md5:
┌──(root💀kali)-[/home/writer/Desktop] └─# echo -n "winadmin.it" | md5sum | tr -d "-">>crackhash.txt echo -n "password123" | md5sum | tr -d "-">>crackhash.txt echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
L’output sarà salvato nel file crackhash.txt.
Ora controlliamo gli hash salvati nel file:
┌──(root💀kali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Come puoi vedere, ora ci sono alcuni hash da decifrare. Questo è il metodo per creare un hash usando l’algoritmo che preferisci.
Il passo successivo è avviare Hashcat sulla tua macchina Linux. Utilizza il comando seguente per lanciare lo strumento:
$ hashcat --help
Verranno mostrate tutte le opzioni necessarie per eseguire lo strumento. Nel terminale puoi trovare tutte le modalità di attacco e gli algoritmi hash supportati.
La forma generale del comando è:
$ hashcat -a num -m num hashfile wordlistfile
Qui ‘num’ rappresenta un numero specifico per la modalità di attacco e l’algoritmo hash da utilizzare. Scorrere il terminale rivela i numeri specifici per ogni attacco e tipo di hash, come ad esempio md4 che ha numero 0, e sha256 con numero 1740.
La lista di parole (wordlist) che verrà utilizzata è la rockyou.txt, reperibile nel percorso /usr/share/wordlists.
Per individuare il percorso del file, è possibile usare il comando locate:
┌──(root💀kali)-[/home/writer] └─# locate rockyou.txt
Infine, per decifrare gli hash usando la wordlist, esegui questo comando:
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
Dopo l’esecuzione del comando, potrebbe comparire un errore di runtime (Errore di eccezione della lunghezza del token), facilmente risolvibile.
Per risolvere questo errore, salva ciascun hash in un file separato. L’errore si manifesta se le prestazioni della CPU o della GPU sono basse. Con un processore ad alta velocità, è possibile decifrare tutti gli hash anche da un singolo file.
Dopo aver corretto l’errore, il risultato sarà simile a questo:
┌──(root💀kali)-[/home/writer/Desktop] └─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt hashcat (v6.1.1) starting... OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ============================================================================================================================= * Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Dictionary cache built: * Filename..: rockyou.txt * Passwords.: 14344405 * Bytes.....: 139921671 * Keyspace..: 14344398 * Runtime...: 1 sec 8276b0e763d7c9044d255e025fe0c212: [email protected] Session..........: hashcat Status...........: Cracked Hash.Name........: MD5 Hash.Target......: 8276b0e763d7c9044d255e025fe0c212 Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs) Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs) Guess.Base.......: File (rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests Progress.........: 4096/14344398 (0.03%) Rejected.........: 0/4096 (0.00%) Restore.Point....: 0/14344398 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidates.#1....: 123456 -> pampam Started: Sun Dec 12 08:06:13 2021 Stopped: Sun Dec 12 08:06:16 2021
Nel risultato, dopo i dettagli della cache del dizionario, puoi notare che l’hash è stato decrittato e la password è stata rivelata.
Conclusione
Spero che questa guida ti abbia fornito una migliore comprensione dell’uso di Hashcat per decifrare le password.
Potresti anche essere interessato ad approfondire i vari strumenti di brute-force per i penetration test e alcuni dei migliori strumenti per il pentesting.