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.
|