Molte volte durante un penetration test si ha bisogno di liste particolari e specifiche in base alla situazione in cui ci si trova. Vuoi per un particolare tipo di Wi-Fi, vuoi per una richiesta di login di un’azienda, non sempre le liste generiche che si trovano online soddisfano i nostri requisiti. Avere infatti grandi lista di parole (come questa) non ci serve poi a molto se per testare ogni parola ci servono migliaia di ore di lavoro e magari neanche funzionerà.
È stato scritto un software apposito, presente di default in kali linux, che ci permette di creare delle liste a nostro piacimento, con caratteri decisi da noi e della lunghezza che vogliamo.
Crunch, ideato nel 2004 da mimayin e tenuto aggiornato da bofh28, è un semplice programma (l’originale era composto solo da 194 righe di codice) disponibile per linux ed è ciò che ci può servire per creare le nostre liste di parole.
Per utilizzarlo basta digitare
crunch <min> <max> [opzioni]
Dove min e max sono parametri obbligatori e rispettivamente sono la minima e la massima lunghezza delle stringhe da generare.
Inserendo solamente il minimo e massimo, crunch creerà una lista alfabetica
root@kali:~# crunch 3 5
Crunch will now generate the following amount of data: 73643440 bytes
70 MB
Crunch will now generate the following number of lines: 12355928
aaa
aab
aac
aad
aae
aaf
...
Se invece inseriamo dei caratteri dopo il minimo e il massimo, utilizzerà quelli per creare la lista
root@kali:~# crunch 3 5 123abc
Crunch will now generate the following amount of data: 54000 bytes
0 MB
Crunch will now generate the following number of lines: 9288
111
112
113
11a
11b
11c
121
...
Come al solito, per salvare l’output, l’opzione è -o
root@kali:~# crunch 3 5 123abc -o lista.txt
Se, ad esempio, vogliamo creare una lista per scoprire la password di una persona (è infatti probabile che la stessa stia utilizzando il suo nome con dei numeri) le opzioni saranno
root@kali:~# crunch 12 12 -t @@Mr.Touch@@
Crunch will now generate the following amount of data: 5940688 bytes
5 MB
Crunch will now generate the following number of lines: 456976
aaMr.Touchaa
aaMr.Touchab
aaMr.Touchaf
aaMr.Touchag
............
dove la chiocciola sta ad indicare le lettere da inserire. Se volessimo utilizzare dei numeri al posto delle lettere basta seguire l’esempio poco sopra, unendolo a questo.
Se vogliamo inserire invece caratteri speciali, prima del carattere bisogna digitare ‘\’ (cosidetto carattere di escape). La percentuale indica invece che vogliamo dei numeri al posto delle lettere dell’alfabeto, mentre il minimo e il massimo devono coincidere con la lunghezza della stringa definita.
root@kali:~# crunch 14 14 -t \!@@Mr.Touch@@\%
Crunch will now generate the following amount of data: 68546400 bytes
65 MB
Crunch will now generate the following number of lines: 4569760
!aaMr.Touchaa0
!aaMr.Touchaa1
!aaMr.Touchaa2
!aaMr.Touchaa3
......
Visto che è probabile che crei delle liste di grande peso, si può usare l’opzione -z per comprimere il file
root@kali:~# crunch 14 14 -t \!@@Mr.Touch@@\% -o listaparole.txt -z gzip
Se vogliamo anche lettere maiuscole, numeri, caratteri speciali o altro, l’opzione migliore (che in generale consiglio) è di definire i caratteri da utilizzare con un file speciale presente in /usr/share/crunch.
Per utilizzarlo l’opzione è -f seguita dal nominativo dei caratteri che vogliamo utilizzare
root@kali:~# crunch 1 3 -f charset.lst symbols14
Crunch will now generate the following amount of data: 11592 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 2954
!
@
#
*
.....
In questo caso ho voluto creare una lista di soli simboli. Questa opzione può essere combinata con quelle definite sopra, ad esempio inserendo la chiocciola con un nome definito da noi e poi una lista alfanumerica.
Per chi volesse altri esempi, consiglio di leggere la pagina di irongeek oppure il manuale del software digitando man crunch.
Ricordo che non sempre si riesce a trovare una password e le combinazioni possono essere davvero infinite, quindi attenzione nel creare le liste e cercate sempre un obbiettivo specifico. Creare delle liste di molti GB non serve a nulla poiché servirebbero centinaia di anni per provare tutte le combinazioni.