Se non si conosce la password di un file compresso, come ad esempio un file ZIP, RAR, 7Z ecc., è possibile utilizzare dei tool per cercare di recuperarla. Questi tool possono fare uso di una wordlist, ovvero un elenco di password da provare, oppure andare di bruteforce, provando tutte le possibili combinazioni di caratteri digitabili.
I software descritti di seguito sono stati testati su Ubuntu, ma funzionano anche su altre distribuzioni Linux. Esistono anche versioni per Windows ma non vengono trattate in questo articolo.
Cracking con wordlist:
Scaricare la wordlist più completa, contenente oltre 14 milioni di password: Rockyou (140 MB).
Scaricare John the Ripper, la versione “Jumbo”. Estrarre il contenuto dell’archivio in una cartella ed entrare nella cartella “src”, nella quale bisognerà lanciare dei comandi per generare i file necessari per il cracking. Tramite terminale lanciare ./configure CFLAGS=”-g -O2″. Se si verificano errori è perché mancano delle dipendenze e occorre installare quelle indicate. Ad esempio potrebbe mancare libssl-dev (che su sistemi come Ubuntu si installa con sudo apt-get install libssl-dev). Successivamente lanciare il comando suggerito alla fine dell’operazione di configurazione, ovvero: make -s clean && make -sj4.
Posizionarsi nella cartella “run” e lanciare il seguente comando per generare l’hash del file da crackare:
./rar2john file.rar > hash.txt
(sostituire “file.rar” con il nome e l’estensione corrispondenti al file da crackare).
Ora è possibile dare il file di testo ottenuto (hash.txt) in pasto a John the Ripper, con questo comando:
./john –wordlist=<percorso_cartella>/rockyou.txt hash.txt
Non servirà indicare il file da crackare perché ora quell’hash corrisponde univocamente al file.
Dato che l’operazione può durare diverse ore è possibile interromperla e successivamente riprenderla con ./john –restore.
Un’alternativa a John the Ripper potrebbe essere Hashcat:
Scaricare l’ultima versione dal sito ufficiale. Estrarre l’archivio e posizionarsi all’interno della cartella ottenuta per lanciare il seguente comando:
./hashcat.bin -m 13000 <percorso_cartella>/hash_ok.txt <percorso_cartella>/rockyou.txt
Dove con il parametro -m si passa l’hash mode del file da crackare, ovvero l’identificativo corrispondente al formato del file da crackare, che trovate all’inizio del contenuto del file dell’hash. Ad esempio se l’inizio del testo dell’hash è “file.rar:$rar5$” vuol dire che l’hash comincia per “$rar5$…” e consultando la tabella disponibile qui, oppure digitando il comando ./hashcat.bin –help, risulterà che l’hash mode corrispondente è “13000”. Il secondo parametro invece è il nuovo file contenente l’hash dopo che è stato “ripulito” l’hash originale, facendolo assomigliare a quello dell’esempio fornito in tabella. Ad esempio se l’hash originale (quello generato da John the Ripper) era
file.rar:$rar5$16$74575567518807622265582327032280$15$f8b4064de34ac02ecabfe9abdf93ed6a$8$9843834ed0f7c754:1::documento.rtf
esso diventa
$rar5$16$74575567518807622265582327032280$15$f8b4064de34ac02ecabfe9abdf93ed6a$8$9843834ed0f7c754
in modo tale che abbia la stessa “forma” di quello dell’esempio fornito in tabella e che, quindi, possa essere accettato da Hashcat (altrimenti viene restituito l’errore “Token length exception”).
Anche con Hashcat è possibile riprendere successivamente un’operazione di cracking interrotta prima del termine, utilizzando ./hashcat.bin –restore.
Hashcat può essere un’alternativa migliore a John the Ripper, se si utilizzano delle “rule”, le quali applicano lievi modifiche alle password dell’elenco passato in input, in modo da provarne molte di più di quelle presenti nella wordlist. Queste modifiche possono includere la trasformazione in maiuscolo/minuscolo, l’aggiunta o la sostituzione di caratteri, fino alla manipolazione dell’intera stringa. Ad esempio “password” viene testata anche come “PASSWORD”, “p455w0rd”, “drowssap”, ecc.
Un elenco di rules da poter testare sono disponibili sulla pagina Github di Hashcat. Maggiori info sul cracking basato sulle rules si trovano qui.
Per impiegarle con il programma basta usare il paramentro -r:
./hashcat.bin -m 13000 <percorso_cartella>/hash_ok.txt <percorso_cartella>/rockyou.txt -r file.rule
Cracking con bruteforce:
Se il cracking con wordlist non dovesse dare i risultati sperati, non resta che provare il bruteforce, che può avere successo solo nel caso di password corte (altrimenti occorrono centinaia di anni per scovare la password!). È possibile usare i due tool descritti sopra oppure alternative come ad esempio rarcrack.
Per installarlo: sudo apt-get install rarcrack. Entrare nella cartella contenente il file compresso da crackare e lanciare il seguente comando:
rarcrack –type rar –threads 8 file.rar
“type” indica il tipo di file (dato che rarcrack supporta anche ZIP e 7Z), “threads” specifica quanti core della CPU utilizzare. Anche qui, ovviamente, sostituire “file.rar” con l’archivio di cui si vuole recuperare la password.
Un’alternativa che potrebbe velocizzare il cracking con bruteforce potrebbe essere data da cRARk (ma solo nel caso di file RAR).
Scaricare l’ultima versione dal sito ufficiale. Se in fase di estrazione dell’archivio viene chiesta una password, utilizzare un altro estrattore, come ad esempio 7-Zip, che riuscirà ad estrarre i file del programma senza impedimenti.
Entrare nella cartella appena estratta e lanciare il seguente comando:
./crark -penglish.def file.rar.
Dove con “-p” si specifica il file in cui definire delle regole per individuare la password dimenticata, e quindi impiegare molto meno tempo nella ricerca. È per utenti avanzati, maggior info sono qui.