Per chi non è familiare con HashCat, è uno dei software di password cracking più conosciuti. Soprattutto per via della sua velocità. Un fattore molto importante quando si parla di craccare password.
Ci sono diverse versioni del tool, ognuna sfrutta diverse piattaforme e metodi di calcolo (vedi ocl-hashcat o cuda-hashcat).

Con la versione di ottobre 2014 è stata introdotta una nuova funzionalità per il cracking delle password di Microsoft Office e in particolare gli hash delle versioni di Office 97-2003, 2007, 2010, 2013.

Ci sono vari flag che permettono di settare varie implementazioni degli hash per la codifica della password. Come mostrato sotto:

Office 97-03(MD5+RC4,oldoffice$0,oldoffice$1): flag -m 9700 
 
Office 97-03(MD5+RC4,collider-mode#1): flag -m 9710
 
Office 97-03(MD5+RC4,collider-mode#2): flag -m 9720
 
Office 97-03(SHA1+RC4,oldoffice$3,oldoffice$4): flag -m 9800
 
Office 97-03(SHA1+RC4,collider-mode#1): flag -m 9810
 
Office 97-03(SHA1+RC4,collider-mode#2): flag -m 9820
 
Office 2007: flag -m 9400 
 
Office 2010: flag -m 9500
 
Office 2013: flag -m 9600

In questa guida mostriamo come usare Hashcat (useremo come esempio cuda-hashcat) per craccare documenti Microsoft office protetti da password.
NB. Questa non è una guida su come installare o usare hashcat in generale. Ci sono molte guide disponibili in rete che mostrano come farlo. Non è lo scopo di questa.

Prima di tutto, avrete bisogno di un documento protetto da password da cui estraiamo l’hash da craccare.
Dunque immaginiamo di creare un documento con Microsoft office 2007 (example.docx) e di proteggerlo con la password “password123456”.

Il primo step sarà quello di estrarre l’hash dal documento. Lo si può fare con un semplice script in Python chiamato office2john.py. (Potete usare gli hash estratti da questo scritp anche con john the ripper).

Eseguiamo office2john.py:

./office2john.py example.docx
example.docx:$office$*2007*20*128*16*3125bda60f5672f05419ae6857e11078*1f949bd0c6d642b64e1734e4bd6a0ef8*e2cbd5f857e501512a0bc9614b09762cfb312fe4

All’inizio dell’hash si nota subito la versione di Office usata dall’Hash ($office$*2007*). Ora che abbiamo il nostro hash è il momento di iniziare la procedura di cracking!
Per fare in modo che hashcat sia in grado di riconoscere l’hash come un documento office, dobbiamo effettuare una delle due azioni di seguito:

– Rimuovere il nome del documento dall’hash (fino al carattere “:”).
– Aggiungere il parametro -username durante l’esecuzione di hashcat, così che il nome del documento venga usato come username.

Personalmente, preferisco la seconda opzione, così da non dover alterare l’hash.
Per avviare la procedura di cracking, chiamiamo CudaHashcat su Windows con i seguenti parametri (tutti su una linea):

cudaHashcat64.exe -a 0 -m <<Office_Flag>> --username --status 
-o <<Output_File>> <<Hash>> <<Dictionary>>

I parametri sono descritti di seguito:

-a 0: Attacco dizionario diretto sull’hash.
-m <>: Flag per la versione di Office in uso (vedi tabella sopra)
–username: Ignora username (necessario per riconoscere l’hash correttamente)
–status: Fornisce lo stato della procedura
-o <>: Dove salvare gli hash craccati. I risultati vengono anche salvati in un file .pot, se non specificato diversamente
<>: L’hash della password.
<>: La lista di parole (dizionario) usato per craccare la password. In rete è possibile trovare qualche dizionario vasto e localizzato.

Per craccare il nostro documento di prova, possiamo eseguire il comando:

cudaHashcat64.exe -a 0 -m 9400 --username -o found.txt hash.txt pass.txt

$office$*2007*20*128*16*3125bda60f5672f05419ae6857e11078*1f949bd0c6d642b64e1734e4bd6a0ef8*e2cbd5f857e501512a0bc9614b09762cfb312fe4:password12345
 
Session.Name...: cudaHashcat
Status.........: Cracked
Input.Mode.....: File (pass.txt)
Hash.Target....: $office$*2007*20*128*16*3125bda60f5672f05419ae6857e11078*1f949bd0c6d642b64e1734e4bd6a0ef8*e2cbd5f857e501512a0bc9614b09762cfb312fe4
Hash.Type......: Office 2007
Time.Started...: 0 secs
Speed.GPU.#1...:        0 H/s
Recovered......: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.......: 1/1 (100.00%)
Skipped........: 0/1 (0.00%)
Rejected.......: 0/1 (0.00%)
HWMon.GPU.#1...:  0% Util, 36c Temp, N/A Fan

A seconda del vostro computer, vi potrebbe sorprendere la velocità d’eseguzione di questo strumento. Sulla macchina usata da noi, non pensata assolutamente per questo tipo di operazioni di cracking, la velocità di bruteforcing è di 3000 Hash al secondo (H/s). Se la password viene craccata con successo, la troverete nel file di output specificato e nel cudaHashcat.pot, nel formato Hash:Password.