WhatsApp forensics - recupero timestamps dei messaggi cancellati

Ieri durante una lezione, presso la scuola di GdF di Ostia, sull'uso del Cellebrite UFED e Physical Analyzer (thanks to Luca Governatori), insieme a tutta la classe (in gambissima), abbiamo fatto un po' di reverse engineering usando la visualizzazione esadecimale di Physical Analyzer del database della famosa app di messaggistica WhatsApp per Android, dato che il P.A. non visualizza i messaggi cancellati di WhatsApp, almeno su Android 4.1.2 del Samsung S3.

Il database è di tipo SqlLite 3.0 e si trova in:
\data\com.whatsapp\databases\msgstore.db 

Prima dell'acquisizione fisica tramite UFED Touch del mio Samsung S3 con Android 4.1.2, ho provveduto a cancellare due (il primo ed il terzo) messaggi di una conversazione dal mio WhatsApp, i due in figura:
 

 

 
 
Finita l'acquisizione ed ottenuto il file DumpData.bin, siamo andati ad aprire con il viewer esadecimale il file msgstoredb.db e a cercare le parole chiave dei messaggi cancellati, ottenendo una visualizzazione esadecimale come questa (in figura l'editor non è quello di P.A.):
 
 
Il messaggio si compone del numero del mittente, seguito da un numero, che rappresenta la data senza l'ora, del messaggio in Unix Epoch Time, ossia il numero di secondi passati dal 01/01/1970 alle 00:00:00, con una semplice conversione con programmi come DCode o http://www.epochconverter.com/, si ricava che il numero: 1385911713 è la data 01 Dec 2013 alle ore 15:28:33quindi l'orario non è esatto.
Bisogna trovare la data e l'ora (timestamp) esatta di questo messaggio, facendo un po' di prove e confrontando con i messaggi in chiaro, scopriamo che i primi sei (6) byte successivi alla fine del testo del messaggio, rappresentano il timestamp dello stesso con data ed ora corretti.
Infatti preleviamo i 6 byte successivi del primo messaggio:
01 42 AE FF E8 20 e 01 42 AF 1F BA 5F e li traduciamo in decimale con la calcolatrice e poi convertiamo il numero in Unix Milliseconds Time, infatti qui il timestamp è in millisecondi e non in secondi, poi impostiamo DCode in UTC+1 (siamo in Italia in ora solare quindi UTC+1).

 

 

 

 

 

Stessa procedura per l'altro messaggio:

 

Concludiamo avendo estratto due messaggi cancellati, abbiamo ricavato il mittente, il destinatario, il testo ed il timestamp.
è stato divertente ed illuminante, spero serva a qualcuno ;).

Nanni Bassetti
http://www.nannibassetti.com