lunedì 20 aprile 2020

Kali Linux: Creare una wordlist con Crunch

Tra i sistemi più utilizzati per scardinare le password di un account o di un servizio troviamo gli attacchi di forza bruta e gli attacchi a dizionario. I due tipi di attacco sono molto simili ma, mentre nell'attacco a forza bruta l'attaccante prova tutte le possibili combinazioni di caratteri, in un attacco a dizionario vengono utilizzate solo le password ritenute più probabili e contenute in una lista (definita dizionario).

Online è possibile trovare dizionari già pronti per le nostre esigenze e anche Kali Linux ne mette a disposizione diversi in /usr/share/wordlists/metasploit/. Tuttavia, se si vuole creare un proprio dizionario da dare in pasto a strumenti come Hydra o Medusa, è possibile utilizzare Crunch, un generatore di wordlist che è già incluso in Kali Linux. Il tool viene utilizzato da riga di comando e consente la generazione di un elenco contenente tutte le possibili combinazioni/permutazioni realizzabili a partire dall'insieme di caratteri specificato o da un pattern.
Dizionari inclusi in Kali Linux
FIG 1 - Dizionari inclusi in Kali Linux

Sintassi
La sua sintassi è
crunch [min] [max] [charset] [options] 


Opzioni
-b 
Permette di specificare la dimensione massima del file di output e richiede l'utilizzo anche del parametro -o START. Se l'output è maggiore della grandezza specificata allora verrà suddiviso in più file. Ad es. il comando
crunch 4 5  -b 20mib  -o START
Genererà 4 file di output  (aaaa-gvfed.txt, gvfee-ombqy.txt, ombqz-wcydt.txt, wcydu-zzzzz.txt) ciascuno di una grandezza massima di 20 mib. Non ci devono essere spazi tra il numero e il tipo. I tipi accettati sono kb, mb, gb, kib, mib e gib. I primi 3 sono kilobyte, megabyte e gigabyte (base 1000) mentre gli ultimi 3 sono kibibyte, mebibyte, gibibyte (base 1024).

-c
Consente di specificare il massimo numero di righe nel file di output. Anche in questo caso va utilizzato insieme a -o START.

-d
Con tale parametro viene limitato il numero massimo di duplicati. Ad es. -d 2@ limita a 2 il numero di caratteri alfabetici minuscoli duplicati all'interno dell'output.

-e
A tale parametro viene passata una stringa che indica quando fermarsi.

-f
Al parametro va passato il nome di un file (ad es. charset.lst) contenente il charset da utilizzare.

-i 
Se specificato inverte l'output. Ad es. invece di avere in output aaa, aab, aac, aad, ecc utilizzando tale parametro si avrà aaa, baa, caa, daa, aba, bba, ecc

-l
Alcuni caratteri come @,%^ vengono utilizzati per specificare caratteri minuscoli, maiuscoli, numeri e simboli (si veda parametro -t). Per utilizzarli come semplici caratteri senza che Crunch tenta di interpretarli bisogna specificare il parametro -l. In questo modo, ad esempio, possiamo utilizzare il simbolo percentuale (%) all'interno di un pattern senza che Crunch lo sostituisca con un numero.

-o
Consente di specificare il file di output.

-p
Permette di generare stringhe senza la ripetizione di caratteri (permutazioni). É comunque necessario dichiarare il numero minimo e massimo di caratteri da utilizzare anche se, con tale parametro, verranno ignorati durante la generazione dell'output. Al parametro va passato il charset.

-q
Il funzionamento è analogo al parametro -p con la differenza che va passato un file.

-r
Permette di recuperare la generazione della wordlist interrotta. Funziona solo se è stato specificato il parametro -o. Eseguendo nuovamente il comando interrotto e aggiungendo il parametro -r la generazione della wordlist viene ripresa dal punto in cui era stata interrotta.

-s
Tramite tale parametro è possibile specificare una stringa di partenza.

-t 
Permette di specificare un pattern inoltre tramite l'utilizzo dei simboli @,%^, consente la sostituzione solo di alcuni caratteri all'interno del pattern: 
@ inserisce caratteri alfabetici minuscoli.
, inserisce caratteri alfabetici maiuscoli.
% inserisce numeri.
^ inserisce simboli.

-u
Va usato come ultimo parametro e consente di non mostrare la percentuale di completamento.

-z
Consente di comprimere il file di output specificando il tipo di compressione desiderato tra: gzip, bzip2, lzma e 7z. Va utilizzato insieme al parametro -o. Il formato gzip è il più veloce ma offre una compressione minima mentre il formato 7z è quello più lento ma fornisce la compressione migliore.


Esempi

Esempio 1
crunch 1 2 ab 
Il primo parametro, in questo caso 1, indica la lunghezza minima della combinazione.
Il secondo parametro (2) indica la lunghezza massima della combinazione desiderata.
Il terzo parametro indica il charset cioè l'insieme di caratteri da utilizzare.

L'output di tale comando sarà costituito dalle seguenti 6 combinazioni possibili
a
aa
ab
b
ba
bb
Come visibile in FIG 1, il comando fornisce anche la dimensione dell'output. Informazione utile nel caso si intenda generare un file.
Crunch
FIG 2 - Crunch

Esempio 2
crunch 2 2 0123456789 -o wordlist.txt
In questo esempio come charset è stato specificato l'insieme di numeri da 0 a 9. Il parametro -o consente di salvare l'output all'interno del file specificato (wordlist.txt).


Esempio 3
Supponiamo di voler creare un dizionario contenente la parola password seguita da tutte le lettere dell'alfabeto. Il comando sarà:
crunch 9 9 -t password@ -o wordlist.txt
Il carattere @ verrà sostituito ogni volta con una lettera minuscola dell'alfabeto.
Se invece vogliamo che la stringa password venga seguita da 3 numeri il comando diventa
crunch 11 11 -t password%%% -o wordlist.txt


Esempio 4
crunch 4 5 -p abc
In output saranno prodotte le permutazioni abc, acb, bac, bca, cab, cba.

Passando più stringhe al parametro -p
crunch 4 5 -p dog cat bird
l'output sarà il seguente birdcatdog, birddogcat, catbirddog, catdogbird, dogbirdcat, dogcatbird.


Esempio 5
crunch 1 5 -o START -c 3000 -z 7z
In questo caso verranno generati più file di output compressi in formato 7z contenenti ciascuno al massimo 3000 parole. I file di output avranno il nome del tipo prima_parola-ultima_parola.txt.7z





Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.