
Vuoi sapere quali tipi di artefatti forensi di WhatsApp esistono nei vari sistemi operativi e dove possono essere trovati? Allora sei nel posto giusto. In questo articolo, un esperto del Laboratorio di Computer Forensics di Group-IB. Igor Mikhailov apre una serie di pubblicazioni sull'analisi forense di WhatsApp e su quali informazioni possono essere ottenute dall'analisi del dispositivo.
Dobbiamo subito sottolineare che in diversi sistemi operativi vengono memorizzati diversi tipi di artefatti WhatsApp, e se da un dispositivo l'analista può estrarre determinati tipi di dati WhatsApp, ciò non significa affatto che simili tipi di dati possano essere estratti da un altro dispositivo. Ad esempio, se si preleva un'unità centrale con sistema operativo Windows, è probabile che non vengano trovate chat di WhatsApp sui suoi dischi (eccetto per le copie di backup dei dispositivi iOS, che possono essere trovate su questi stessi supporti). Quando si estraggono laptop e dispositivi mobili ci saranno peculiarità. Parliamo di questo più nel dettaglio.
Artefatti WhatsApp in un dispositivo Android
Per estrarre gli artefatti WhatsApp da un dispositivo che esegue il sistema operativo Android, l'analista deve avere i diritti di superutente ('root') sul dispositivo analizzato o avere la possibilità di estrarre in altro modo un dump fisico della memoria del dispositivo o il suo filesystem (ad esempio, sfruttando vulnerabilità software di un particolare dispositivo mobile).
I file dell'applicazione si trovano nella memoria del telefono nella sezione in cui vengono memorizzati i dati dell'utente. In genere, questa sezione è chiamata 'userdata'. Le sottocartelle e i file del programma si trovano nel percorso: '/data/data/com.whatsapp/'.

I principali file che contengono artefatti forensi di WhatsApp nel sistema operativo Android sono i database 'wa.db' e 'msgstore.db'.
Nel database 'wa.db' è presente un elenco completo dei contatti dell'utente di WhatsApp, inclusi numero di telefono, nome visualizzato, timestamp e qualsiasi altra informazione fornita durante la registrazione su WhatsApp. Il file 'wa.db' si trova nel percorso: '/data/data/com.whatsapp/databases/' e ha la seguente struttura:

Le tabelle più interessanti nel database 'wa.db' per l'analista sono:
- 'wa_contacts'
Questa tabella contiene informazioni sui contatti: id del contatto in WhatsApp, informazioni sullo stato, nome utente visualizzato, timestamp, ecc.Aspetto della tabella:

Struttura della tabellaNome del campo Valore _id numero progressivo del record (nella tabella SQL) jid WhatsApp ID del contatto, registrato nel formato @s.whatsapp.net is_whatsapp_user contiene '1' se il contatto è un reale utente WhatsApp, '0' altrimenti stato contiene il testo visualizzato nello stato del contatto status_timestamp contiene un timestamp nel formato Unix Epoch Time (ms) number numero di telefono associato al contatto raw_contact_id numero progressivo del contatto display_name nome visualizzato del contatto phone_type tipo di telefono phone_label etichetta associata al numero di contatto unseen_msg_count numero di messaggi inviati dal contatto che non sono stati letti dal destinatario photo_ts contiene un timestamp nel formato Unix Epoch Time thumb_ts contiene un timestamp nel formato Unix Epoch Time photo_id_timestamp contiene un timestamp nel formato Unix Epoch Time (ms) given_name il valore del campo corrisponde a 'display_name' per ogni contatto wa_name nome del contatto in WhatsApp (il nome visualizzato nell’profilo del contatto) sort_name nome del contatto usato nelle operazioni di ordinamento nickname nickname del contatto in WhatsApp (visualizzato il nickname nell'profilo del contatto) company azienda (visualizzata l'azienda nell’profilo del contatto) title titolo (sig.ra/sig.) ; visualizzato il titolo impostato nell’profilo del contatto offset offset - 'sqlite_sequence'
Questa tabella contiene informazioni sul numero di contatti; - 'android_metadata'
Questa tabella contiene informazioni sulla localizzazione linguistica di WhatsApp.
Nel database 'msgstore.db' contiene informazioni sui messaggi inviati, come numero di contatto, testo del messaggio, stato del messaggio, timestamp, dettagli sui file trasferiti inclusi nei messaggi, ecc. File 'msgstore.db' si trova nel percorso: '/data/data/com.whatsapp/databases/' e ha la seguente struttura:

Le tabelle più interessanti nel file 'msgstore.db' per l'analista sono:
- 'sqlite_sequence'
Questa tabella contiene informazioni generali su questo database, come il numero totale di messaggi memorizzati, il numero totale di chat, ecc.Aspetto della tabella:

- 'message_fts_content'
Contiene il testo dei messaggi inviati.Aspetto della tabella:

- 'messages'
Questa tabella contiene informazioni come numero di contatto, testo del messaggio, stato del messaggio, timestamp, dettagli sui file trasferiti inclusi nei messaggi.Aspetto della tabella:

Struttura della tabellaNome del campo Valore _id numero progressivo del record (nella tabella SQL) key_remote_jid WhatsApp ID del partner di comunicazione key_from_me direzione del messaggio: '0' – in arrivo, '1' — in uscita key_id identificatore unico del messaggio stato stato del messaggio: ‘0’ – consegnato, ‘4’ – in attesa, server‘5’ – ricevuto a destinazione, ‘6’ – messaggio di controllo, ‘13’ – messaggio aperto dal destinatario (letto) need_push ha valore ‘2’, se si tratta di un messaggio broadcast, altrimenti contiene ‘0’ data testo del messaggio (quando il parametro ‘media_wa_type’ è uguale a ‘0’) timestamp contiene un timestamp in formato Unix Epoch Time (ms), il valore è preso dall'orologio del dispositivo media_url contiene l'URL del file inviato (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) media_mime_type tipo MIME del file inviato (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) media_wa_type tipo di messaggio: ‘0’ – testo, ‘1’ – file grafico, ‘2’ – file audio, ‘3’ – file video, ‘4’ – scheda contatto, ‘5’ – dati geologici media_size dimensione del file inviato (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) media_name nome del file inviato (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) media_caption Contiene le parole ‘audio’, ‘video’ per i valori corrispondenti del parametro ‘media_wa_type’ (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘3’) media_hash hash del file inviato codificato in base64, calcolato con l'algoritmo HAS-256 (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) media_duration durata in secondi per il file multimediale (quando il parametro ‘media_wa_type’ è uguale a ‘1’, ‘2’, ‘3’) origin ha valore ‘2’, se si tratta di un messaggio broadcast, altrimenti contiene ‘0’ latitude dati geologici: latitudine (quando il parametro ‘media_wa_type’ è uguale a ‘5’) longitude dati geologici: longitudine (quando il parametro ‘media_wa_type’ è uguale a ‘5’) thumb_image informazioni di servizio remote_recource ID del mittente (solo per le chat di gruppo) received_timestamp tempo di ricezione, contiene un timestamp in formato Unix Epoch Time (ms), il valore è preso dall'orologio del dispositivo (quando il parametro ‘key_from_me’ ha ‘0’, ‘-1’ o un altro valore) send_timestamp non utilizzato, di solito ha valore ‘-1’ receipt_server_timestamp tempo di ricezione centrale, contiene un timestamp in formato Unix Epoch Time (ms), il valore è preso dall'orologio del dispositivo (quando il parametro ‘key_from_me’ ha ‘1’, ‘-1’ o un altro valore) serverreceipt_device_timestamp tempo di ricezione del messaggio da parte di un altro abbonato, contiene un timestamp in formato Unix Epoch Time (ms), il valore è preso dall'orologio del dispositivo (quando il parametro ‘key_from_me’ ha ‘1’, ‘-1’ o un altro valore) read_device_timestamp read_device_timestamp tempo di apertura (lettura) del messaggio, contiene un timestamp nel formato Unix Epoch Time (ms), il valore viene preso dall'orologio del dispositivo played_device_timestamp tempo di riproduzione del messaggio, contiene un timestamp nel formato Unix Epoch Time (ms), il valore viene preso dall'orologio del dispositivo raw_data miniatura del file trasmesso (quando il parametro ‘media_wa_type’ è uguale a ‘1’ o ‘3’) recipient_count numero di destinatari (per messaggi broadcast) participant_hash utilizzato durante la trasmissione di messaggi con dati geologici starred non è utilizzato quoted_row_id sconosciuto, di solito contiene il valore ‘0’ mentioned_jids non è utilizzato multicast_id non è utilizzato offset offset Questo elenco di campi non è esaustivo. In diverse versioni di WhatsApp, alcuni campi possono essere presenti o assenti. Possono esserci campi aggiuntivi ‘media_enc_hash’, ‘edit_version’, ‘payment_transaction_id’ ecc.
- ‘messages_thumbnails’
Questa tabella contiene informazioni sulle immagini trasmesse e i timestamp. Nella colonna ‘timestamp’ il tempo è indicato nel formato Unix Epoch Time (ms). - ‘chat_list’
Questa tabella contiene informazioni sulle chat.Aspetto della tabella:

Inoltre, durante l'analisi di WhatsApp su un dispositivo mobile con sistema Android, è necessario prestare attenzione ai seguenti file:
- all'interno di ogni container per impostazione predefinita apparirà così: ‘msgstore.db.cryptXX’ (dove XX è una o due cifre da 0 a 12, ad esempio, msgstore.db.crypt12). Contiene un backup crittografato dei messaggi di WhatsApp (backup del file msgstore.db). Il file (o i file) ‘msgstore.db.cryptXX’ si trova nel percorso: ‘/data/media/0/WhatsApp/Databases/’ (scheda SD virtuale), ‘/mnt/sdcard/WhatsApp/Databases/’ (scheda SD fisica).
- all'interno di ogni container per impostazione predefinita apparirà così: ‘key’. Contiene una chiave crittografica. Si trova nel percorso: ‘/data/data/com.whatsapp/files/’. Utilizzato per decrittografare i backup crittografati di WhatsApp.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘com.whatsapp_preferences.xml’. Contiene informazioni sul profilo dell'account WhatsApp. Il file si trova nel percorso: ‘/data/data/com.whatsapp/shared_prefs/’.
Frammento del contenuto del file
… 9123456789 (numero di telefono associato all'account WhatsApp) … 2.17.395 (versione di WhatsApp) … Hey there! I am using WhatsApp. (messaggio visualizzato nello stato dell'account) … Alex (nome del proprietario dell'account) … - all'interno di ogni container per impostazione predefinita apparirà così: ‘registration.RegisterPhone.xml’. Contiene informazioni sul numero di telefono associato all'account WhatsApp. Il file si trova nel percorso: ‘/data/data/com.whatsapp/shared_prefs/’.
Il contenuto del file
- all'interno di ogni container per impostazione predefinita apparirà così: ‘axolotl.db’. Contiene chiavi crittografiche e altri dati necessari per identificare il proprietario dell'account. Si trova nel percorso: '/data/data/com.whatsapp/databases/'.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘chatsettings.db’. Contiene informazioni sulla configurazione dell'applicazione.
- all'interno di ogni container per impostazione predefinita apparirà così: 'wa.db'. Contiene dettagli sui contatti. È un database molto interessante (sotto il profilo forense) e informativo. Può contenere informazioni dettagliate sui contatti eliminati.
Si deve prestare attenzione anche ai seguenti directory:
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Contiene file grafici inviati.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Voice Notes/’. Contiene messaggi vocali in file formato .OPUS.
- Directory ‘/data/data/com.whatsapp/cache/Profile Pictures/’. Contiene file grafici – immagini dei contatti.
- Directory ‘/data/data/com.whatsapp/files/Avatars/’. Contiene file grafici – miniature delle immagini dei contatti. Questi file hanno estensione ‘.j’, ma sono comunque file grafici in formato JPEG (JPG).
- Directory ‘/data/data/com.whatsapp/files/Avatars/’. Contiene file grafici – l'immagine e la miniatura dell'immagine impostata come avatar dal proprietario dell'account.
- Directory ‘/data/data/com.whatsapp/files/Logs/’. Contiene il registro di funzionamento del programma (file ‘whatsapp.log’) e backup dei registri di lavoro del programma (file con nomi nel formato whatsapp-gggg-mm-gg.1.log.gz).
File di registro di WhatsApp:

Frammento di registro2017-01-10 09:37:09.757 LL_I D [524:WhatsApp Worker #1] missedcallnotification/init count:0 timestamp:0
2017-01-10 09:37:09.758 LL_I D [524:WhatsApp Worker #1] missedcallnotification/update cancel true
2017-01-10 09:37:09.768 LL_I D [1:main] app-init/load-me
2017-01-10 09:37:09.772 LL_I D [1:main] password file missing or unreadable
2017-01-10 09:37:09.782 LL_I D [1:main] statistics Text Messages: 59 inviati, 82 ricevuti / Media Messages: 1 inviato (0 byte), 0 ricevuti (9850158 byte) / Offline Messages: 81 ricevuti (19522 msec delay medio) / Message Service: 116075 byte inviati, 211729 byte ricevuti / Voip Calls: 1 chiamata in uscita, 0 in arrivo, 2492 byte inviati, 1530 byte ricevuti / Google Drive: 0 byte inviati, 0 byte ricevuti / Roaming: 1524 byte inviati, 1826 byte ricevuti / Total Data: 118567 byte inviati, 10063417 byte ricevuti
2017-01-10 09:37:09.785 LL_I D [1:main] media-state-manager/refresh-media-state/writable-media
2017-01-10 09:37:09.806 LL_I D [1:main] app-init/initialize/timer/stop: 24
2017-01-10 09:37:09.811 LL_I D [1:main] msgstore/checkhealth
2017-01-10 09:37:09.817 LL_I D [1:main] msgstore/checkhealth/journal/delete false
2017-01-10 09:37:09.818 LL_I D [1:main] msgstore/checkhealth/back/delete false
2017-01-10 09:37:09.818 LL_I D [1:main] msgstore/checkdb/data/data/com.whatsapp/databases/msgstore.db
2017-01-10 09:37:09.819 LL_I D [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager 16384 drw=011
2017-01-10 09:37:09.820 LL_I D [1:main] msgstore/checkdb/list _jobqueue-WhatsAppJobManager-journal 21032 drw=011
2017-01-10 09:37:09.820 LL_I D [1:main] msgstore/checkdb/list axolotl.db 184320 drw=011
2017-01-10 09:37:09.821 LL_I D [1:main] msgstore/checkdb/list axolotl.db-wal 436752 drw=011
2017-01-10 09:37:09.821 LL_I D [1:main] msgstore/checkdb/list axolotl.db-shm 32768 drw=011
2017-01-10 09:37:09.822 LL_I D [1:main] msgstore/checkdb/list msgstore.db 540672 drw=011
2017-01-10 09:37:09.823 LL_I D [1:main] msgstore/checkdb/list msgstore.db-wal 0 drw=011
2017-01-10 09:37:09.823 LL_I D [1:main] msgstore/checkdb/list msgstore.db-shm 32768 drw=011
2017-01-10 09:37:09.824 LL_I D [1:main] msgstore/checkdb/list wa.db 69632 drw=011
2017-01-10 09:37:09.825 LL_I D [1:main] msgstore/checkdb/list wa.db-wal 428512 drw=011
2017-01-10 09:37:09.825 LL_I D [1:main] msgstore/checkdb/list wa.db-shm 32768 drw=011
2017-01-10 09:37:09.826 LL_I D [1:main] msgstore/checkdb/list chatsettings.db 4096 drw=011
2017-01-10 09:37:09.826 LL_I D [1:main] msgstore/checkdb/list chatsettings.db-wal 70072 drw=011
2017-01-10 09:37:09.827 LL_I D [1:main] msgstore/checkdb/list chatsettings.db-shm 32768 drw=011
2017-01-10 09:37:09.838 LL_I D [1:main] msgstore/checkdb/version 1
2017-01-10 09:37:09.839 LL_I D [1:main] msgstore/canquery
2017-01-10 09:37:09.846 LL_I D [1:main] msgstore/canquery/count 1
2017-01-10 09:37:09.847 LL_I D [1:main] msgstore/canquery/timer/stop: 8
2017-01-10 09:37:09.847 LL_I D [1:main] msgstore/canquery 517 | tempo trascorso:8
2017-01-10 09:37:09.848 LL_I D [529:WhatsApp Worker #3] media-state-manager/refresh-media-state/internal-storage disponibile:1.345.622.016 totale:5.687.922.688
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/’. Contiene file audio ricevuti.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Audio/Sent/’. Contiene file audio inviati.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Images/’. Contiene file grafici ricevuti.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Images/Sent/’. Contiene file grafici inviati.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Video/’. Contiene file video ricevuti.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Video/Sent/’. Contiene file video inviati.
- Directory ‘/data/media/0/WhatsApp/Media/WhatsApp Profile Photos/’. Contiene file grafici associati al proprietario dell'account WhatsApp.
- Per risparmiare spazio nella memoria dello smartphone Android, parte dei dati di WhatsApp può essere memorizzata sulla scheda SD. Sulla scheda SD, nella directory principale, è presente la cartella ‘WhatsApp’, dove possono essere trovati i seguenti artefatti di questo programma:

- Directory ‘.Share’ (‘/mnt/sdcard/WhatsApp/.Share/’). Contiene copie di file che sono stati trasferiti ad altri utenti di WhatsApp.
- Directory ‘.trash’ (‘/mnt/sdcard/WhatsApp/.trash/’). Contiene file eliminati.
- Directory ‘Databases’ (‘/mnt/sdcard/WhatsApp/Databases/’). Contiene backup crittografati. Possono essere decrittografati se si dispone di un file ‘key’, estratto dalla memoria del dispositivo analizzato.
I file presenti nella sotto-cartella ‘Databases’:

- Directory ‘Media’ (‘/mnt/sdcard/WhatsApp/Media/’). Contiene sottodirectory ‘WallPaper’, ‘WhatsApp Audio’, ‘WhatsApp Images’, ‘WhatsApp Profile Photos’, ‘WhatsApp Video’, ‘WhatsApp Voice Notes’, in cui si trovano i file multimediali ricevuti e inviati (file grafici, video, messaggi vocali, fotografie, associati al profilo del proprietario dell’account WhatsApp, sfondi).
- Directory ‘Profile Pictures’ (‘/mnt/sdcard/WhatsApp/Profile Pictures/’). Contiene file grafici associati al profilo del proprietario dell’account WhatsApp.
- A volte nella scheda SD può essere presente una cartella ‘files’ (‘/mnt/sdcard/WhatsApp/Files/’). In questa cartella ci sono file che contengono le impostazioni del programma e le preferenze dell’utente.
Caratteristiche della memorizzazione dei dati in alcuni modelli di dispositivi mobili
In alcuni modelli di dispositivi mobili con sistema operativo Android è possibile che i resti di WhatsApp siano memorizzati in un’altra posizione. Questo è dovuto a modifiche nello spazio di archiviazione dei dati delle applicazioni da parte del software di sistema del dispositivo mobile. Ad esempio, nei dispositivi Xiaomi c'è una funzione per creare un secondo spazio di lavoro (‘SecondSpace’). Attivando questa funzione, cambia la posizione dei dati. Così, se in un normale dispositivo mobile con sistema operativo Android i dati dell’utente sono memorizzati nella cartella ‘/data/user/0/’ (che è un collegamento ai classici ‘/data/data/’), nel secondo spazio di lavoro i dati delle applicazioni sono memorizzati nella cartella ‘/data/user/10/’. Cioè, prendendo come esempio la posizione del file 'wa.db':
- in un normale smartphone con sistema operativo Android: /data/user/0/com.whatsapp/databases/wa.db’ (che è equivalente a ‘/data/data/com.whatsapp/databases/wa.db’);
- nel secondo spazio di lavoro di uno smartphone Xiaomi: ‘/data/user/10/com.whatsapp/databases/wa.db’.
Resti di WhatsApp in un dispositivo iOS
A differenza del sistema operativo Android, in iOS i dati dell’applicazione WhatsApp vengono trasferiti in un backup (backup di iTunes). Pertanto, l'estrazione dei dati di questa applicazione non richiede l'estrazione del file system o la creazione di un dump fisico della memoria del dispositivo esaminato. La maggior parte delle informazioni significative è contenuta nel database ‘ChatStorage.sqlite’, che si trova lungo il percorso: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/’ (in alcune applicazioni questo percorso viene visualizzato come ‘AppDomainGroup-group.net.whatsapp.WhatsApp.shared’).
Struttura ‘ChatStorage.sqlite’:

Le tabelle più informative nel database ‘ChatStorage.sqlite’ sono ‘ZWAMESSAGE’ e ‘ZWAMEDIAITEM’.
Aspetto della tabella ‘ZWAMESSAGE’:

Struttura della tabella ‘ZWAMESSAGE’
| Nome del campo | Valore |
|---|---|
| Z_PK | numero progressivo del record (nella tabella SQL) |
| Z_ENT | identificatore della tabella, ha valore ‘9’ |
| Z_OPT | sconosciuto, solitamente contiene valori da ‘1’ a ‘6’ |
| ZCHILDMESSAGESDELIVEREDCOUNT | sconosciuto, di solito contiene il valore ‘0’ |
| ZCHILDMESSAGESPLAYEDCOUNT | sconosciuto, di solito contiene il valore ‘0’ |
| ZCHILDMESSAGESREADCOUNT | sconosciuto, di solito contiene il valore ‘0’ |
| ZDATAITEMVERSION | sconosciuto, solitamente contiene valore ‘3’, probabilmente è un indicatore del messaggio di testo |
| ZDOCID | sconosciuto |
| ZENCRETRYCOUNT | sconosciuto, di solito contiene il valore ‘0’ |
| ZFILTEREDRECIPIENTCOUNT | sconosciuto, solitamente contiene valori ‘0’, ‘2’, ‘256’ |
| ZISFROMME | direzione del messaggio: '0' – in arrivo, '1' — in uscita |
| ZMESSAGEERRORSTATUS | stato della trasmissione del messaggio. Se il messaggio è stato inviato/ricevuto, ha valore ‘0’ |
| ZMESSAGETYPE | tipo del messaggio trasmesso |
| ZSORT | sconosciuto |
| ZSPOTLIGHSTATUS | sconosciuto |
| ZSTARRED | sconosciuto, non utilizzato |
| ZCHATSESSION | sconosciuto |
| ZGROUPMEMBER | sconosciuto, non utilizzato |
| ZLASTSESSION | sconosciuto |
| ZMEDIAITEM | sconosciuto |
| ZMESSAGEINFO | sconosciuto |
| ZPARENTMESSAGE | sconosciuto, non utilizzato |
| ZMESSAGEDATE | timestamp nel formato OS X Epoch Time |
| ZSENTDATE | tempo di invio del messaggio nel formato OS X Epoch Time |
| ZFROMJID | WhatsApp ID del mittente |
| ZMEDIASECTIONID | contiene anno e mese di invio del file multimediale |
| ZPHASH | sconosciuto, non utilizzato |
| ZPUSHPAME | nome del contatto che ha inviato il file multimediale in formato UTF-8 |
| ZSTANZID | identificatore unico del messaggio |
| ZTEXT | testo del messaggio |
| ZTOJID | WhatsApp ID del destinatario |
| OFFSET | offset |
Aspetto della tabella ‘ZWAMEDIAITEM’:

Struttura della tabella ‘ZWAMEDIAITEM’
| Nome del campo | Valore |
|---|---|
| Z_PK | numero progressivo del record (nella tabella SQL) |
| Z_ENT | identificatore della tabella, ha valore ‘8’ |
| Z_OPT | sconosciuto, solitamente contiene valori da ‘1’ a ‘3’. |
| ZCLOUDSTATUS | contiene valore ‘4’ se il file è stato caricato. |
| ZFILESIZE | contiene la lunghezza del file (in byte) per i file caricati |
| ZMEDIAORIGIN | sconosciuto, solitamente ha valore ‘0’ |
| ZMOVIEDURATION | durata del file multimediale, per i file pdf può contenere il numero di pagine del documento |
| ZMESSAGE | contiene un numero sequenziale (il numero è diverso da quello indicato nella colonna ‘Z_PK’) |
| ZASPECTRATIO | rapporto d'aspetto, non utilizzato, solitamente ha valore ‘0’ |
| ZHACCURACY | sconosciuto, solitamente ha valore ‘0’ |
| ZLATTITUDE | larghezza in pixel |
| ZLONGTITUDE | altezza in pixel |
| ZMEDIAURLDATE | timestamp nel formato OS X Epoch Time |
| ZAUTHORNAME | autore (per documenti, può contenere il nome del file) |
| ZCOLLECTIONNAME | non è utilizzato |
| ZMEDIALOCALPATH | nome del file (con specifica del percorso) nel file system del dispositivo |
| ZMEDIAURL | URL dove si trovava il file multimediale. Se il file è stato trasferito da un abbonato all'altro, è stato crittografato, e la sua estensione sarà indicata come estensione del file trasferito — .enc |
| ZTHUMBNAILLOCALPATH | percorso della miniatura del file nel file system del dispositivo |
| ZTITLE | titolo del file |
| ZVCARDNAME | hash del file multimediale, durante la trasmissione del file in gruppo può contenere l'identificativo del mittente |
| ZVCARDSTRING | contiene informazioni sul tipo di file trasmesso (es. image/jpeg), durante la trasmissione del file in gruppo può contenere l'identificativo del destinatario |
| ZXMPPTHUMBPATH | percorso della miniatura del file nel file system del dispositivo |
| ZMEDIAKEY | sconosciuto, probabilmente contiene la chiave per decifrare il file crittografato. |
| ZMETADATA | metadati del messaggio trasmesso |
| Offset | offset |
Altre interessanti tabelle del database ‘ChatStorage.sqlite’ la consolidazione dell'intero meccanismo di selezione dei dati in un'unica query
- ‘ZWAPROFILEPUSHNAME’. Collega l'ID di WhatsApp al nome del contatto;
- ‘ZWAPROFILEPICTUREITEM’. Collega l'ID di WhatsApp all'immagine del profilo del contatto;
- ‘Z_PRIMARYKEY’. La tabella contiene informazioni generali su questo database, come il numero totale di messaggi memorizzati, il numero totale di chat, ecc.
Durante l'analisi di WhatsApp su un dispositivo mobile con iOS, è necessario prestare attenzione ai seguenti file:
- all'interno di ogni container per impostazione predefinita apparirà così: ‘BackedUpKeyValue.sqlite’. Contiene chiavi crittografiche e altri dati necessari per identificare il proprietario dell'account. Si trova nel percorso: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘ContactsV2.sqlite’. Contiene informazioni sui contatti dell'utente, come nome e cognome, numero di telefono, stato del contatto (in forma di testo), ID di WhatsApp, ecc. Si trova nel percorso: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘consumer_version’. Contiene il numero di versione dell'applicazione WhatsApp installata. Si trova nel percorso: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘current_wallpaper.jpg’. Contiene gli sfondi attuali dell'applicazione WhatsApp. Si trova nel percorso: /private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/. Nelle versioni precedenti dell'app, viene utilizzato il file ‘wallpaper’, che si trova nel percorso: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘blockedcontacts.dat’. Contiene informazioni sui contatti bloccati. Si trova nel percorso: /private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘pw.dat’. Contiene la password crittografata. Si trova nel percorso: ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/’.
- all'interno di ogni container per impostazione predefinita apparirà così: ‘net.whatsapp.WhatsApp.plist’ (o il file ‘group.net.whatsapp.WhatsApp.shared.plist’). Contiene informazioni sul profilo dell'account WhatsApp. Il file si trova nel percorso: ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Library/Preferences/’.
Il contenuto del file ‘group.net.whatsapp.WhatsApp.shared.plist’
Si deve prestare attenzione anche ai seguenti directory:
- Directory ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Media/Profile/’. Contiene miniature dei contatti, dei gruppi (file con estensione .thumb), avatar dei contatti, avatar del proprietario dell'account WhatsApp (file ‘Photo.jpg’).
- Directory ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/Message/Media/’. Contiene file multimediali e le loro miniature.
- Directory ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Documents/’. Contiene il registro delle attività dell'app (file ‘calls.log’) e backup dei registri delle attività dell'app (file ‘calls.backup.log’).
- Directory ‘/private/var/mobile/Applications/group.net.whatsapp.WhatsApp.shared/stickers/’. Contiene adesivi (file in formato ‘.webp’).
- Directory ‘/private/var/mobile/Applications/net.whatsapp.WhatsApp/Library/Logs/’. Contiene log delle attività dell'app.
Artefatti di WhatsApp in Windows
Gli artefatti di WhatsApp in Windows possono essere trovati in diversi luoghi. Innanzitutto, ci sono le directory che contengono file eseguibili e ausiliari dell'app (per Windows 8/10):
- ‘C:Program Files (x86)WhatsApp’
- 'C:Users%Profilo utente%AppDataLocalWhatsApp'
- 'C:Users%Profilo utente%AppDataLocalVirtualStoreProgram Files (x86)WhatsApp'
Nella directory 'C:Users%Profilo utente%AppDataLocalWhatsApp' si trova il file di log 'SquirrelSetup.log', che contiene informazioni sul controllo degli aggiornamenti e sull'installazione del programma.
Nella directory 'C:Users%Profilo utente%AppDataRoamingWhatsApp' ci sono diverse sottocartelle:
all'interno di ogni container per impostazione predefinita apparirà così: 'main-process.log' contiene informazioni sul funzionamento del programma WhatsApp.
Sottocartella 'databases' contiene il file 'Databases.db', ma questo file non contiene alcuna informazione su chat o contatti.
I file di particolare interesse dal punto di vista forense sono quelli presenti nella cartella 'Cache'. Si tratta principalmente di file con nomi 'f_*******' dove * è un numero da 0 a 9, contenenti file multimediali e documenti crittografati, ma tra di essi ci sono anche file non crittografati. Particolare interesse destano i file 'data_0', 'data_1', 'data_2', 'data_3', presenti nella stessa sottocartella. I file 'data_0', 'data_1', 'data_3' contengono collegamenti esterni ai file multimediali e documenti crittografati trasmessi.
Esempio delle informazioni contenute nel file 'data_1'
Inoltre, il file 'data_3' può contenere file grafici.
all'interno di ogni container per impostazione predefinita apparirà così: 'data_2' contiene avatar dei contatti (possono essere recuperati cercando nei titoli dei file).
Gli avatar presenti nel file 'data_2':

Pertanto, nella memoria del computer non è possibile trovare le chat stesse, ma è possibile trovare:
- file multimediali;
- documenti inviati tramite WhatsApp;
- informazioni sui contatti del proprietario dell'account.
Artifact di WhatsApp in MacOS
In MacOS si possono trovare tipi di artefatti WhatsApp simili a quelli presenti in Windows.
I file del programma si trovano nelle cartelle:
- 'C:ApplicationsWhatsApp.app'
- 'C:Applications._WhatsApp.app'
- 'C:Users%Profilo utente%LibraryPreferences'
- 'C:Users%Profilo utente%LibraryLogsWhatsApp'
- 'C:Users%Profilo utente%LibrarySaved Application StateWhatsApp.savedState'
- 'C:Users%Profilo utente%LibraryApplication Scripts'
- 'C:Users%Profilo utente%LibraryApplication SupportCloudDocs'
- 'C:Users%Profilo utente%LibraryApplication SupportWhatsApp.ShipIt'
- 'C:Users%Profilo utente%LibraryContainerscom.rockysandstudio.app-for-whatsapp'
- 'C:Users%Profilo utente%LibraryMobile Documents WhatsApp Accounts'
In questa cartella ci sono sottocartelle i cui nomi sono numeri di telefono associati al proprietario dell'account WhatsApp. - 'C:Users%Profilo utente%LibraryCachesWhatsApp.ShipIt'
In questa cartella si trovano informazioni sull'installazione del programma. - 'C:Users%Profilo utente%PicturesLibreria iPhoto.photolibraryMasters', 'C:Users%Profilo utente%PicturesLibreria iPhoto.photolibraryThumbnails'
In questi cataloghi sono presenti file di servizio dell'applicazione, comprese foto e miniature dei contatti WhatsApp. - 'C:Users%User profile%LibraryCachesWhatsApp'
In questa cartella ci sono diversi database SQLite utilizzati per la memorizzazione nella cache dei dati. - 'C:Users%User profile%LibraryApplication SupportWhatsApp'
In questa cartella ci sono diverse sottocartelle:
Nella directory 'C:Users%User profile%LibraryApplication SupportWhatsAppCache' ci sono file 'data_0', 'data_1', 'data_2', 'data_3' e file con nomi 'f_*******' (dove * è un numero da 0 a 9). Informazioni su quali dati contengono questi file sono descritte nella sezione "Artefatti WhatsApp su Windows".Nella directory 'C:Users%User profile%LibraryApplication SupportWhatsAppIndexedDB' possono contenere file multimediali (i file non hanno estensioni).
all'interno di ogni container per impostazione predefinita apparirà così: 'main-process.log' contiene informazioni sul funzionamento del programma WhatsApp.
Fonti
- Analisi forense di WhatsApp Messenger su smartphone Android, di Cosimo Anglano, 2014.
- Whatsapp Forensics: Esplorazione del sistema di file e database nell'applicazione Android e iOS di Ahmad Pratama, 2014.
Negli articoli successivi di questa serie:
Decodifica dei database crittografati di WhatsAppArticolo in cui verranno fornite informazioni su come avviene la generazione della chiave di crittografia di WhatsApp, con esempi pratici che mostrano come decifrare i database crittografati di quest'app.
Estrazione dei dati di WhatsApp da archivi cloudArticolo in cui descriveremo quali dati di WhatsApp sono conservati nel cloud e i metodi per estrarre questi dati dagli archivi cloud.
Estrazione dei dati di WhatsApp: esempi praticiArticolo in cui verrà descritto passo dopo passo quali programmi utilizzare e come eseguire l'estrazione dei dati di WhatsApp da vari dispositivi.
Fonte: habr.com








