Fabio Natalucci Post

Sicurezza Informatica & Ethical Hacking

WhatsApp: come leggere le conversazioni nei backup criptati con crypt7

Decriptare le conversazioni di WhatsappDi seguito una breve guida su come leggere le conversazioni nei file di backup di WhatsApp criptati con crypt7 su dispositivi Android. Whatsapp continua ad aumentare il livello di cifratura dell’algoritmo, ma sembra non funzionare, infatti è stato hackerato più volte fin dalle sue prime versioni. Il POC sembra essere stato trovato da un hacker spagnolo, incuriosito da un’applicazione comparsa sul play store dove venivano visualizzati grafici statistici sull’utilizzo di whatsapp.

Conosciamo meglio crypt7

Crypt7 è l’ultimo sistema di cifratura usato da WhatsApp per cryptare i backup delle conversazioni. Per decifrare i file crypt7 si ha bisogno di 3 file, la chiave di crittografia con cifratura AES-256 bit, un vettore d’inizializzazione chiamato IV di 128 bit e gli header del file di 67byte del db criptato. Questi file si trovano sul “vostro” telefono in una locazione (diciamo) sicura.

/data/data/com.whatsapp/files/key

Per accedere e prendere questi 3 file ci sono 2 sistemi.

Per chi ha il telefono rootato

  • Installatevi l’sdk di android. Ci interessa il comando adb
  • Assicuriamoci che il dispositivo sia riconosciuto dal nostro sistema operativo e presente nella lista dei devices
  • Aprite un terminale e digitiamo le seguenti istruzioni.
$ adb devices 
List of devices attached
GalaxyNexus   device
 
$ adb shell
android$ su
android#
android# cp /data/data/com.whatsapp/files/key /sdcard
android# exit
android$ exit

Ora che si trova nella vostra sdcard, copiamolo sul computer con:

$ adb pull /sdcard/key

Per chi NON ha il telefono rootato

Si dovrà utilizzare adb per effettuare un backup di quella cartella. Per eseguire questa operazione è necessaria l’installazione dell’sdk android. Per chi ha un sistema windows c’è la versione lite dell’sdk, con l’essenziale a questo link sdk android lite.

Lanciamo il backup:

 $ adb backup -f whatsapp.ab -noapk com.whatsapp

Questo farà comparire una schermata di notifica di backup sul telefono per accettare o negare l’operazione e utilizzare una password per i backup. Non inseriamo nessuna password e procediamo al backup.

adb full backup

 

 

 

 

 

 

 

 

 

 

 

Al termine del backup, avremo il file whatsapp.ab sul nostro computer, per estrarre il contenuto bisogna trasformarlo in un archivio .tar
Linux ci facilita il compito utilizzando il comando dd in questo modo

$ dd if=whatsapp.ab ibs=24 skip=1 | openssl zlib -d > whatsapp.tar

Estraiamo la chiave dall’archivio,

$ tar xf whatsapp.tar apps/com.whatsapp/f/key
$ mv apps/com.whatsapp/f/key .

Verifichiamo che la chiave sia esattamente di 158 bytes. Se la dimensione corrisponde, possiamo procedere.

Estrazione del database delle conversazioni whatsapp crittografate con crypt7

Sempre utilizzando adb, possiamo estrarre i database sul nostro computer a prescindere, che il telefono è rootato o meno, il comando è lo stesso:

$ adb pull /sdcard/WhatsApp/Databases/msgstore.db.crypt7

Estrazione delle chiavi dal file key

Il file key, è composto dalla chiave crittografica di 256 bit  + IV di 128.

1. Per prendere la chiave principale utilizziamo il comando dal terminale:

 $ hexdump -e '2/1 "%02x"' key | cut -b 253-316

Ci verrà restituita un valore esadecimale a 64 caratteri lungo 128bit.

2. Mentre per prendere l’IV

$ hexdump -e '2/1 "%02x"' key | cut -b 221-252

Questo ci darà un valore esadecimale da 32 cifre, di lunghezza 128 bit.

Estrazione dell’header dal file crypt7

Estraiamo l’header di 67 byte del file crypt7.

$ dd if=msgstore.db.crypt7 of=msgstore.db.crypt7.nohdr ibs=67 skip=1

Ora avremo il file msgstore.db.crypt7.nohdr.  Verifichiamo che sia divisible per 128bit o 16 byte, se c’è qualche resto allora il file è corrotto. Per farlo prendiamo la dimensione del file in byte e facciamo l’operazione Modulo ( Mod) per 16 se il risultato è zero allora possiamo procedere al passo successivo.

Passo finale, decriptiamo il database e leggiamo le conversazioni

$ openssl enc -aes-256-cbc -d -nosalt -nopad -bufsize 16384 -in msgstore.db.crypt7.nohdr -K $k -iv $iv > msgstore.db

Sostituiamo i rispettivi $k con il primo hexdump effettuato e $iv con il secondo hexdump.

Il comando darà come risultato un database SQLite non crittografato, chiamato msgstore.db

Altre soluzioni

Esistono anche diversi siti web che ti permettono di effettuare questa procedura online, ma sinceramente dare informazioni online su siti completamente anonimi mi sembra un azzardo. Per correttezza questo è uno dei siti web che permette di effettuare l’operazione di decrypt online

Oppure se volete a vostro rischio e pericolo utilizzare l’applicazione presente sul Play Store WhatsApp Tri-Crypt

Per chi è interessato c’è un’applicazione che permette di effettuare il backup via WIFI WiFi ADB – Debug Over Air

« »

© 2024 Fabio Natalucci Post. Tutti i diritti sono riservati.