Creare lista di parole per attacchi di forza bruta con crunch

Tempo di lettura: 7 minuti

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
Utilizzo avanzato

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.

charsetcrunch
charsetcrunch

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.