Nell’hacking etico e nei test di penetrazione, il cracking delle password è fondamentale per ottenere l’accesso a un sistema o a un server.
Nei sistemi e nei database, le password vengono raramente salvate in formato testo normale.
Le password vengono sempre sottoposte a hash prima di essere archiviate nel database e l’hash viene confrontato durante il processo di verifica.
A seconda della crittografia utilizzata, diversi sistemi memorizzano gli hash delle password in modi diversi. E se hai hash, puoi facilmente decifrare qualsiasi password.
E in questo articolo, esploreremo come decifrare gli hash delle password utilizzando un pratico ed eccellente strumento da riga di comando Hashcat.
Quindi iniziamo.
Ma prima ancora…
Sommario:
Che cos’è una funzione hash?
L’hashing è il processo di conversione di un normale testo di input in una stringa di testo di dimensioni fisse utilizzando una funzione matematica nota come funzione hash. Qualsiasi testo, indipendentemente dalla lunghezza, può essere trasformato in una combinazione casuale di numeri interi e alfabeti utilizzando un algoritmo.
- L’input si riferisce al messaggio che verrà sottoposto a hash.
- La funzione hash è l’algoritmo di crittografia come MD5 e SHA-256 che converte una stringa in un valore hash.
- E infine, il valore hash è il risultato.
Cos’è Hashcat?
Hashcat è lo strumento di recupero password più veloce. È stato progettato per rompere le password complesse in un breve lasso di tempo. E questo strumento è anche in grado di eseguire sia elenchi di parole che attacchi di forza bruta.
Hashcat ha due varianti. Basato su CPU e GPU (Graphical Processing Unit). Lo strumento basato su GPU può decifrare gli hash in meno tempo rispetto alla CPU. Puoi controllare i requisiti del driver della GPU sul loro sito Web ufficiale.
Caratteristiche
- Gratuito e open source
- È possibile implementare più di 200 variazioni del tipo di hash.
- Supporta sistemi multi-operativi come Linux, Windows e macOS.
- Sono disponibili multipiattaforme come il supporto per CPU e GPU.
- È possibile violare più hash contemporaneamente.
- Sono supportati i file hex-salt e hex-charset, insieme all’ottimizzazione automatica delle prestazioni.
- È disponibile un sistema di benchmarking integrato.
- Le reti di cracking distribuito possono essere supportate utilizzando gli overlay.
E puoi vedere altre funzionalità anche dal loro sito web.
Installazione di Hashcat
Innanzitutto, assicurati che il tuo sistema Linux sia aggiornato con i programmi e gli strumenti più recenti.
Per questo, apri un terminale e digita:
$ sudo apt update && sudo apt upgrade
Hashcat è solitamente preinstallato in Kali Linux. Puoi trovare lo strumento nella sezione cracking della password. Ma se hai bisogno di installarlo manualmente in qualsiasi distribuzione Linux, digita il seguente comando nel terminale.
$ sudo apt-get install hashcat
Utilizzo degli strumenti
Per iniziare con Hashcat, avremo bisogno di alcuni hash delle password. Se non hai un hash da decifrare, creeremo prima alcuni hash.
Per creare hash utilizzando la riga di comando, segui semplicemente il formato seguente.
echo -n "input" | algorithm | tr -d "-">>outputfiename
Ad esempio, puoi vedere che ho trasformato alcune parole in hash usando l’algoritmo md5 di seguito.
┌──(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
E l’output verrà salvato nel file crackhash.txt.
Ora controlleremo gli hash che sono stati salvati nel file specificato.
┌──(root💀kali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Puoi vedere, ora abbiamo alcuni hash da decifrare. Questa è la procedura per creare un hash utilizzando l’algoritmo di tua scelta.
Il prossimo passo è avviare uno strumento Hashcat nella tua macchina Linux. Basta usare il seguente comando per usare Hashcat.
$ hashcat --help
Verranno visualizzate tutte le opzioni necessarie per eseguire lo strumento. Sul terminale puoi trovare tutte le modalità di attacco e hash.
La forma generale del comando è
$ hashcat -a num -m num hashfile wordlistfile
Qui il ‘num’ rappresenta una specifica modalità di attacco e hash da utilizzare. Se scorri il terminale, puoi trovare i numeri esatti per ogni attacco e modalità hash, come per md4 – il numero è 0, e per l’algoritmo sha256 – il numero è 1740.
La lista di parole che userò è la lista di parole rockyou. Puoi facilmente trovare quella lista di parole nel percorso /usr/share/liste di parole.
Puoi anche usare il comando locate per trovare il percorso dell’elenco di parole.
┌──(root💀kali)-[/home/writer] └─# locate rockyou.txt
E infine, per decifrare gli hash usando il file wordlist, usa il comando seguente.
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
Dopo aver eseguito questo comando, è possibile che venga visualizzato un errore di runtime ( Errore di eccezione della lunghezza del token ) che può essere risolto facilmente.
Per risolvere questo problema, salva ogni hash separatamente in un file diverso. Questo errore si verifica se la velocità della CPU o della GPU è bassa. Se il tuo computer ha un processore ad alta velocità, puoi facilmente decifrare tutti gli hash contemporaneamente come un singolo file stesso.
Quindi, dopo aver corretto l’errore e tutto il resto, il risultato sarà così.
┌──(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 precedente, dopo i dettagli della cache del dizionario, puoi notare che l’hash è stato violato e la password è stata rivelata.
Conclusione
Spero che tu abbia acquisito una migliore comprensione dell’uso di Hashcat per decifrare le password.
Potresti anche essere interessato a conoscere i vari strumenti di forza bruta per i test di penetrazione e alcuni dei migliori strumenti di pentesting.