Labs

»

Analisi forense Whatsapp

Analisi forense Whatsapp

Acquisizione forense whatsapp, nostra perizia CTP in un processo di omicidio

Siamo stati chiamati in causa da un noto Avvocato penalista Italiano che difendeva un giovane accusato di omicidio. L'accusa sosteneva che il giovane aveva lasciato il telefono in casa prima di andare a commettere il delitto, e in casa non era presente nessuno. Riuscire a dimostrare che quel telefono era stato usato in una determinata fascia oraria avrebbe smontato l'intero impianto accusatorio.

Siamo stati chiamati in causa quando il primo grado di giudizio era quasi terminato e non abbiamo potuto periziare il telefono, ci siamo attenuti ai dati estratti dal CTU. Visto lo stato avanzato del processo ci dovevamo limitare alla sola analisi dei dati che il CTU aveva estratto.

Il telefono, con OS Android, è stato periziato dal CTU un ingegnere informatico che purtroppo ha tentato varie volte di effettuare il root senza riuscirci. Dopo 12 tentativi è riuscito ad effettuare il root del telefono. Nei tentativi ha più volte installato nel telefono varie app andando a sovrascrivere le locazioni di memoria che avrebbero potuto contenere i dati cancellati. Il telefono andava spento e spedito ad una ditta specializzata nel recupero dati, solitamente queste ditte smontano il telefono e recuperano i dati bit a bit. Sono andati persi quasi tutti i dati ad eccezione della rubrica, sms e dati di Whatsapp. Il filesystem e i suoi importantissimi registri sono andati quasi tutti persi. La nostra unica fonte di analisi era Whatsapp.

Precisiamo che raramente effettuiamo perizie di questo tipo, il nostro core business è lo sviluppo della nostra spy app presente in questo sito, siamo però molto vicini al mondo Giudiziario in quanto la nostra app spia è utilizzatissima dalle procure tramite dei consulenti per effettuare indagini investigative, intercettazioni ambientali, intercettazioni telefoniche e controllo dello smartphone in generale, testo visualizzato navigazione e keylogger.. Rimane in ogni caso un qualcosa che facciamo solo in determinati casi gravi.


Struttura di Android e Whatsapp in generale eventi e comportamenti.

Come funziona Android e Whatsapp, struttura ed eventi

Per poter comprendere la nostra perizia è necessario prima fare delle premesse sui meccanismi di android e Whatsapp, chiaramente solo nelle parti che ci interessano.

A ) Android dal punto di vista dell'utente, ha due aree, una accessibile all'utente, per esempio dove vengono salvate le fotografie e un altra non accessibile all'utente, per esempio la cartella dove vengono installate le app o il filesystem di Android.

B ) Ogni qual volta che si installa una app dentro Android viene creata una cartella con il nome del Package app, per esempio Whatsapp viene salvata dentro la cartella data/data/com.whatsapp. Questa cartella è detta in gergo SandBox. ogni app ha la sua SandBox. Ogni app ha la sua SandBox e solo essa può accedere a quella cartella. una app non può accedere alla SandBox di un altra app.

C ) Whatsapp ha un database criptato dove vengono salvate le chat e le anteprime immagini. Le chat comprendono il tipo di media, la data e l'azione,per esempio una immagine inviata o ricevuta. All'interno di questo database criptato esiste anche un contatore ID che aumenta di uno ad ogni nuovo media.

D ) Il database e i media di Whatsapp, foto video etc etc vengono custoditi dentro il telefono in una area accessibile all'utente. Solitamente dentro il telefono tale percorso è /sdcard/whatsapp/media, /sdcard/whatsapp/database.

E ) L'utente può quindi fisicamente accedere al file di database ma essendo esso criptato non lo può manomettere, dovrebbe prima decriptarlo.

F ) Dentro la SandBox di Whatsapp che lo ricordiamo non è accessibile all'utente, è presente una chiave. Con tale chiave è possibile decriptare Whatsapp. Essendo tale SandBox non accessibile all'utente, lo stesso non ha la possibilita di manomettere il database.

G ) Il database di Whatsapp ha un contatore legato ad un registro ID che aumenta di una unita ad ogni nuovo media che Whatsapp lavora. Tale registro è non modificabile e ogni giorno che passa riparte da zero. Per esempio. Mettiamo il caso che oggi si sono inviate e ricevute 10 immagini, il contatore ID del database in questo caso è a 9 (0-9). Se si cancellano delle foto e poi se ne ricevono delle altre il contatore ID aumenta di uno. Ipotizzando che si cancellino tutte le foto e le chat, ricevendo una nuova immagine il contatore non tiene conto di questo fattore e continua ad incrementare il suo id, la nuova immagine ricevuta avrà quindi ID 10. Per la data di domani il contatore è a zero perchè in quella data non sono stati ancora ricevuti dei media. Per la data di ieri ipotizzando che io ieri ho ricevuto 22 immagini il contatore è per tale data di ieri a 21.

H ) Le date riportate da Whatsapp possono esser facilmente modificate semplicemente cambiando l'orario del telefono. Le date a cui Whatsapp fa riferimento sono quelle del telefono. Ne consegue che se si modifica la data e l'ora del telefono, le immagini vengono salvate con una data e ora non veritiera.

I ) Dentro l'app Whatsapp è possibile impostare un setup sui media ricevuti, si può decidere se scaricare o meno le immagini e i video che si ricevono o se scaricarli solo quando cliccati da utente.

L ) Whatsapp quando riceve una immagine crea una copia in miniatura detta Thumb e la inserisce dentro il database criptato non modificabile. Se le impostazioni sono impostate per scaricare subito le immagini ricevute, come da punto (I) viene scaricata l'immagine ricevuta immediatamente alla ricezione, al contrario l'immagine ricevuta verra scaricata solo dopo che l'utente la clicca per vederla. Come anteprima nella chat vediamo la Thumb.

M ) Gli ID di database si possono ricavare delle Thumb presenti nel database Whatsapp. Essi sono legati ad un registro temporale che non può essere modificato. Il registro di oggi segue un suo conteggio, il registro di domani parte da zero per i semplice motivo che domani non ho ancora inviato immagini. Se per assurdo porto la data del telefono a domani e invio 20 foto e poi le cancello oppure no è indifferente e successivamente riporto la data ad oggi, domani il primo media che ricevo prende id 20, che sarebbe il ventunesimo considerando che il contatore ID parte da zero. Si possono sfalsare le date ma non gli ID

N) Come detto Whatsapp alla ricezione di un messaggio crea una immagine in miniatura, il suo nome è del tipo IMG-DATA-WA-ID_thumb.jpg per la prima immagine ricevuta o inviata, la seconda avra un nome simile con l'unica differenza che il numero finale è ID e viene incrementato di uno IMG-DATA-WA-00001_thumb.jpg, la terza IMG-DATA-WA-00002_thumb.jpg e cosi via per tutta la giornata. Questo perchè il registro ID di oggi è zero. Domani il registro ID riparte da zero in quanto il registro id della data di domani è a zero. Se per crearmi un alibi porto la data di un telefono avanti di 2 giorni e invio 10 immagini, il registro di tale data verra settato su 9, da zero a 9 sono dieci. Riportando la data reale sul telefono fra due giorni i media che ricevero o invierò partiranno da ID 10. Esempio concreto. Modifico la data del telefono al 10 settembre 2020 e invio 40 immagini, poi riporto la reale data sul telefono. Quando il 10 settembre arriva il registro data id sara 10-09-2020-ID=39 e il prossimo media che invio prende ID 40. Stesso discorso se si riporta indietro nel tempo la data del telefono. Se imposto la data del 1 gennaio 2010 e invio una immagine essa prenderà l'ID prossimo in base al registro id data di quel giorno. Ipotizzando che il 1 gennario 2010 io abbia inviato e ricevuto in totale 3 immagini su whatsapp prenderò ID 3 e non zero, perche in tale data il registro ha assegnato gli ID 0,1,2

O ) Come descritto al punto (I) l'immagine ricevuta viene salvata sul telefono. Il suo nome è cosi composto IMG-DATA-ID.jpg mentre la Thumb immagine in miniature delle anteprime viene nominata con lo stesso nome con l'aggiunta di Thumb. Per esempio. Ipotizzando che oggi è 20 ottobre 2019 e l'ID prossimo è il 5, una immagine ricevuta su Whatsapp viene cosi nominata. IMG-2019-10-20-WA-0005.jpg questo per quanto riguarda l'immagine grande, la miniatura di anteprima Thumb che risiede nel database criptato verra cosi nominata IMG-2019-10-20-WA-0005_thumb.jpg

P ) La Thumb è dentro un database criptato come da punto (D) e la chiave per decriptare tale database si trova dentro la SandBox come da punto (F). Le immagini grandi sono liberamente accessibili, possono essere manipolate dall'utente, mentre le Thump possono avere date e orari di salvataggio sfalsati come da punto (H), ciò che non potrà mai essere modificato è l'ID contatore data-id il cui registro variabili risiede nella SandBox non accessibile all'utente.

Q ) Il BroadCastReceiver CONNECTIVIRTY_CHANGE è dentro Android è una funzione che consente alle app di essere avvisate quando la connessione internet cambia, connessione e disconnessione. Whatsapp usa questa libreria. Quando il telefono si connette ad internet Whatsapp riceve questo evento e scarica eventuali messaggi che non erano stati ricevuti per via dell'assenza di linea internet.

R ) Ad ogni immagine ricevuta o inviata viene assegnato un ID. Questo ID è certezza di un ordine cronologico certo anche nel caso in cui si modifichino le date del telefono in continuazione o che si cancellino le immagini l'ID non perde la sua consecutivita, aumenta sempre di uno, il prossimo media ricevuto o inviato prende il suo ID in ordine di arrivo o creazione.

S ) Se volutamente tolgo la linea internet al telefono e apro Whatsapp e invio una immagine ad essa verrà assegnato un ID. Se riattivo la linea internet e ricevo delle immagini ad esse verra assegnato un ID, il prossimo disponibile indifferentemente dal fatto che quel messaggio era stato inviato a noi prima della creazione del messaggio da inviare. Per esempio. Mettiamo che adesso sono le 13 e oggi ho gia inviato e ricevuto un totale di 6 immagini, tolgo la linea internet al telefono. Poi senza linea internet alle 15 apro Whatsapp e invio un messaggio contenente una immagine. Tale messaggio rimarrà in attesa di connessione internet per essere inviato ma l'immagine prenderà un ID 6 WA-0006. Nel frattempo un amico mi aveva inviato alle ore 14 una immagine, però non avendo linea internet non ho ricevuto quel messaggio contenente l'immagine. Alle 20 riattivo la linea internet sul telefono e ricevo il messaggio dell'amico. L'immagine che l'amico mi ha inviato prende ID WA-0007, perche gli ID seguono un ordine di creazione dentro Whatsapp. Il messaggio dell'amico è stato ricevuto da Whatsapp dopo che io avevo inviato un messaggio con immagine. Non importano le date di invio e ricezione Whatsapp assegna gli ID alle immagini quando le lavora.

T ) Whatsapp corregge le date dentro il database Thumb automaticamente quando si modifica la data e l'ora in continuazione. Per esempio. Se si porta l'orario avanti di 2 ore e si invia una immagine essa si viene salvata 2 ore indietro ma quando poi si riporta l'orario 2 ore avanti la data di salvataggio della Thumb viene aggiornata alla corretta ora. Esempio concreto: Mettiamo il caso che adesso siano le 15 e io modifico l'orario del telefono alle 19, invio una immagine e la Thumb in database viene salvata come data di creazione alle ore 19 e prende il primo ID 0000. Successivamente rimetto l'orario a posto, è passato 1 minuto e sono le ore 15:01, invio una seconda immmagine ch viene salvata come pora di creazione alle ore 15:01 e prende il secondo ID 0001. Alla prima immagine inviata (ID 0000) a questo punto viene corretto l'orario e viene indicata come data di salvataggio alle ore 15:00. Whatsapp memorizza in un suo timer indipendente dal telefono il tempo realmente passato fra un ID ed un altro. Per Whatsapp fra id 0000 e ID 0001 vi è 1 minuto di distanza.

U ) Fare il root del telefono permette all'utilizzatore del telefono di accedere anche a quelle aree non accessibili come detto al punto (A). Quando si effettua il root del telefono lo stesso perde la garanzia di fabbrica. Le fabbriche riescono a capire che è stato fatto il root attraverso delle variabili di sistema che non possono essere manomesse. Da tali variabili abbiamo determinato che il root fatto dal CTU è stato il primo root effettuato sul telefono periziato. Dopo aver fatto il root il CTU ha potuto estrarre dallla SandBox (B) di Whatsapp la chiave che consente di decriptare il database Whatsapp.

V ) Whatsapp smette di funzionare o non funziona correttamente su un telefono dopo che si effettua su di esse il root. Riportiamo di sotto la nota presente sul sito di Whatsapp www.whatsapp.com dove la stessa azienda dichiara il non funzionamento dentro i telefoni root.

Telefoni con root e ROM personalizzata
ROM personalizzate e telefoni con root non sono supportati da WhatsApp. Ci sono troppe variabili in queste personalizzazioni per permetterci di mantenere un prodotto funzionante. Inoltre, ROM personalizzate e root non consentono al modello di sicurezza di WhatsApp di funzionare come previsto. Se utilizzi una ROM personalizzata o un telefono con root, altre applicazioni potrebbero essere in grado di leggere i tuoi messaggi nonostante la crittografia end-to-end.


L'impianto accusatorio

Nella descrizione dell'accusa non possiamo riportare date e nomi reali, useremo nomi di fantasia e date fittizie che comunque descrivono la realtà dei fatti

L'accusa sostiene che Mario il presunto omicida ha lasciato il telefono in casa e sia andato a commettere il delitto e che dopo aver commesso il delitto sia rientrato a casa e si sia messo al letto. Il tempo necessario per andare da casa di Mario fino al luogo del delitto è di 30 minuti. Altri 30 minuti quindi per ritornare a casa e altri 15 minuti per commettere il delitto.

Il delitto è stato commesso il 20 gennaio 2015 alle ore 13:01.

Secondo l'accusa Mario avrebbe lasciato il telefono a casa e si sarebbe recato sul luogo del delitto senza il telefono. Sempre secondo l'accusa in casa non era presente nessun membro della famiglia di Mario. Il telefono era rimasto da solo in una casa per tutto il tempo inutilizzato dalle ore 12:30 fino alle ore 13:45 ora in cui Mario sarebbe rientrato a casa dopo aver commesso il delitto.


Il nostro ingresso nel processo come CTP

Abbiamo sostituito un perito su richiesta di un famoso penalista Italiano

Come detto alla nostra azienda è stato conferito l'incarico CTP quando il processo di primo grado volgeva al termine; oltre ciò vi era un rito avvreviato che non lasciava spazio ad eventuali altre nostre richieste, potevamo solo attenerci ai dati estratti dal CTU, non abbiamo neanche potuto periziare il telefono dell'accusato.

L'incarico ci è stato conferito senza indicarci un percorso da seguire, dovevamo noi in nostra totale autonomia trovare nei pochi dati disponibili una prova di non colpevolezza di Mario.

Il legale di Mario ci ha chiesto di trovare un qualcosa che provasse che quel telefono fosse stato usato dalle ore 12:30 alle ore 13:30. Se avessimo dimostrato che il telefono era stato usato in quella fascia oraria l'impianto accusatorio sarebbe saltato in quanto il telefono era in casa ed in casa non vi era nessuno sempre secondo l'accusa.

Nell'analisi dei dati abbiamo trovato un messaggio inviato alle ore 12:52 tramite Whatsapp. L'ID di quella immagine era il 3 WA-0003_thumb, quindi si trattava della terza immagine che Whatsapp lavorava in quella giornata, come descritto nei punti di sopra. L'immagine veniva indicata nel database Thumb come immagine inviata. Come detto la Thumb è dentro il database non modificabile in quanto criptato si può sfalsare la data di salvataggio ma non il suo ID.

Prepariamo la nostra perizia sostenendo che una immagine inviata doveva per forza di fatto essere stata inviata da una persona, Whatsapp può si salvare le immagini ricevute senza che nessuno usi il telefono (I) ma un messaggio inviato è prova certa di un uso umano del telefono.

Alla nostra perizia il PM replica che le date di salvataggio di Whatsapp possono essere alterate semplicemente modificando l'orario e la data del telefono e che addirittura fosse stato fatto appositamente da Mario per crearsi un alibi.

Nella giornata del 20 gennaio 2015 Mario ha ricevuto su Whatsapp diversi messaggi 22 in tutta la giornata. L'ID del contatore di quella data era di 21. Abbiamo trovato fra le tante due messaggi ricevuti contenenti immagini. Tali messaggio erano delle newsletter sportive con tanto di data ora e minuto, Mario aveva autorizzato un sito di news sportive ad inviargli news di calcio.

Il messaggio Whatsapp di notizie sportive conteneva una immagine con tanto di data e ora. Il messaggio ID 0001 riportava come orario le 12:37. Abbiamo chiesto e documentato direttamente da chi si occupava di inviare quel servizio news conferme su data di invio di quella news e l'orario di invio ci è stato confermato che la news era stata inviata proprio nell'orario indicato nel messaggio alle ore 12:37. Un altro messaggio di news della stessa azienda venne inviato alle ore 13:15, orario ach'esso confermato, tale messaggio conteneva una immagine che prese ID 6.

Abbiamo immediatamente presentato una controperizia che in base agli eventi appena di sopra citati dimostrava che il messaggio inviato che prese ID 3 doveva per forza di fatto essere stato inviato dopo le ore 12:37 e prima delle ore 13:15 in quando il messaggio inviata aveva ID 3. Visto e considerato che gli ID al di la di quale sia l'orario impostato sul telefono seguono un ordine crescente cronologico L'ID 3 seguiva ID 1 e precedeva id 6. L'invio di tale messaggio era per forza stato fatto fra le ore 12:37 e le ore 13:15.

Ciò dimostrava che il telefono era stato usato in quella fascia orario, secondo l'accusa in casa non era presente nessuno e di conseguenza il telefono non poteva essere stato usato da nessuno. L'intero impianto accusatorio era stato smontato, il telefono non poteva essere stato usato in quell'orario se in casa non vi era nessuno ed il telefono era in casa.

Alla nostra controperizia il PM replica sostenendo che una linea lenta o in assenza di linea internet tali messaggio potevano essere sfalsati, addirittura si ipotizzava che Mario avesse di sua iniziativa per crearsi un alibi tolto la linea internet al telefono e inviato quel messaggio molto tempo prima e che il messaggio poi in realtà parti dopo le ore 13:45. oltre cio una linea internet lenta avrebbe potuto rallentare un messaggio. In sostanza si sosteneva che con una linea molto lenta un messaggio che contiene una immagine pesante è inviato adesso ma parte fra 2 ore, proprio perchè la linea lenta ne rallenta il processo di invio.


Le ipotesi possibili in base alla replica del PM

In pratica l'accusa sostiene che con una linea internet lenta io posso inviare un messaggio adesso e il processo di invio si completa fra 2/3/4/5... ore. Ancor peggio l'ipotesi che vedrebbe Mario togliere la linea internet e inviare un messaggio al fine di procurarsi un alibi, messaggio che secondo l'accusa sarebbe poi partito al rientro di Mario a casa quando ha riattivato la linea internet.

In base alla replica dell'accusa esistono i seguenti possibili scenari

1 ) La linea internet è lenta, invio un messaggio contenente una immagine molto pesante ed il processo di invio di questo messaggio termina fra 3 ore.

La nostra replica. L'operatore telefonico che Mario utilizzava era Vodafone con rete 4G. Vodafone è nota, la sua rete è considerata fra le migliori in Italia. Oltre ciò in casa di Mario il livello del segnale è ottimo. Whatsapp prima di inviare una immagine la comprime rendendola molto più leggera. Come riportato ai punti (R) e (S). se si invia una immagine anche senza la linea internet ad essa viene subito assegnato un ID il prossimo disponibile. Ne consegue che l'ID viene assegnato prima che la proceduta di invio si completi. Nel momento in cui si carica l'immagine da inviare ad essa viene assegnato un ID anche senza linea internet immediatamente.

In base a queste delucidazioni possiamo affermare con assoluta certezza che se il messaggio fosse stato inviato prima delle ore 12:37 l'immagine di quel messaggio avrebbe preso un ID inferiore al ID 0001, mentre l'immagine prese ID 0003. Viceversa se fosse stato inviato dopo con una linea lenta avrebbe preso un ID superiore al 6 che è l'ID della newsletter delle ore 13:15

Da scartare anche l'ipotesi che il messaggio sia stato inviato giorni prima o dopo spostando le date, nel caso in cui era stato inviato giorni prima avrebbe preso ID zero in quando in quella data gli ID sarebbero stati a zero, al contrario se il messaggio fosse stato inviato giorni dopo al fine di creare un alibi successivamente al delitto quel messaggio avrebbe preso un id molto alto, considerando che le sole newsletter mandavano ogni giorno circa 10 messaggio con immagini, minimo avrebbe preso ID 11, se sposto orario telefono indietro nel tempo e invio un messaggio in una data in cui gli ID sono andati avanti.

Altra ipotesi è che al fine di creare un alibi Mario abbia disconnesso il telefono da internet e inviato il messaggio. In questo caso le newsletter non vengono ricevute in assenza di internet e l'immagine prende subito ID zero. Oltre cio come descritto al punto (Q) Whatsapp è in grado di capire quando la linea internet ritorna e scarica immediatamente tutti i messaggi, messaggi a cui vengono assegnati gli ID nel momento in cui arrivano sul telefono. In nessun caso un messaggio inviato in questa circostanza avrebbe preso ID 3.

Ulteriore ipotesi è quella di modificare la data e l'ora in continuazione al fine di confondere l'ID. A tal proposito và sottolineato il fatto che Whatsapp smette di funzionare quando si modificano gli orari sul telefono. Accetta al massimo qualche ora di scarto, oltre si blocca e apre un popup che chiede di mettere a posto l'orario del telefono. Da sottolineare anche il fatto che al momento del sequestro telefono, la data e l'ora erano impostate regolarmente. Whatsapp corregge tutte le date come riportato al punto (T).


La sentenza

In base alle sopracitate abbiamo dimostrato che il telefono era stato usato fra le 12:37 e le 13:15 il giorno 20 gennaio 2015 . Il legale che ci ha contattati è la famiglia di Mario erano certi che avessimo smontato l'intero impianto accusatorio, vi era molta euforia, una perizia accolta quasi come una assoluzione.

Il giovane Mario è stato condannato e nelle motivazioni della sentenza la nostra ultima perizia non è stata neanche citata. Mai commentiamo le sentenze, lasciateci però dire che in noi è rimasto molto amaro in bocca, nelle motivazioni della sentenza ci aspettavamo perlomeno una risposta alle nostre ultime.

Headquarters
Zurich, Bucharest, Auckland, Sao Paulo, Toronto.
Customer Service Headquarters
London, Milan, Zurich, Vienna, Lisbon, Madrid, Amsterdam, Copenhagen, Bucharest, Timisoara, Prague, Warsaw, Stockholm, Moscow, Novosibirsk, Abu Dhabi, Jakarta, Beijing, Tokio, Auckland, New York (Newark), Sao Paulo, Toronto, Mexico City.
Info
Recensioni opinioni Assistenza Privacy Cookie Eula
© Copyright 2020 S.C. Diocle Group S.A.