Nel precedente articolo mi sono occupato dell’analisi forense di WeChat iOS. Questa seconda parte riguarderà Android.
Con la versione 7.0.4 – ultima release attualmente scaricabile da Play Store alla data di stesura dell’articolo – arrivano: le “Capsule del tempo”, un design tutto nuovo con interfaccia più semplice e intuitiva e il “Fai una bolla” che consente di far conoscere a un amico l’apertura di una “Capsula del tempo”; chi volesse approfondire può farlo qui.
Le caratteristiche dell’applicazione sono state già descritte nell’articolo su iOS; darò quindi dei cenni qualora vi siano delle evidenti discrepanze.
Allo stato attuale, molti prodotti commerciali a supporto della mobile forensics quali Cellebrite, XRY, Oxygen e Belkasoft supportano le estrazioni dei dati inerenti le applicazioni di terze parti per Android – tra cui WeChat – ma solo in presenza di una determinata condizione: il rooting[1] dei dispositivi, che può essere anche effettuato dall’applicazione forense stessa durante l’estrazione.
Una sostanziale differenza tra WeChat iOS e WeChat Android risiede nella modalità di gestione del database; in iOS – come abbiamo avuto modo di verificare nel precedente articolo – il database non è cifrato, mentre lo è in Android.
Quindi, per proteggere la privacy degli utenti, WeChat for Android cifra il database contenente i messaggi di chat avvalendosi di SQLCipher[2]; questa è la prima sostanziale differenza rispetto a iOS.
Ma vi è di più: mentre in iOS è possibile estrarre i dati dell’app con iTunes, dalla versione 6.0 di WeChat non è più possibile estrarre i contenuti tramite la funzionalità di backup insita in Android su dispositivi non rootati; ciò si traduce in una ulteriore difficoltà per l’analista forense.
Come già detto, vi sono molti tool forensi in grado di estrapolare le evidenze di WeChat: per questo articolo adopereremo Oxygen Forensic Detective[3].
Oxygen Forensic Detective supporta l’estrazione e l’analisi della messaggistica WeChat sia da dispositivi Android che da dispositivi iOS.
Verrà utilizzata, in questo contesto, l’acquisizione fisica effettuata di un dispositivo Samsung Edge S6 + mediante l’utilizzo di Oxygen Detective. Essendo fondamentale assicurare l’integrità delle prove acquisite, l’acquisizione deve essere condotta necessariamente in ambiente forense mediante collegamento del dispositivo a una stazione di lavoro opportunamente predisposta.
In Android, i dati di interesse investigativo di WeChat sono archiviati nella cartella /data/data/com.tencent.mm, che contiene quanto riportato in fig. 1.
Le cartelle che contengono i file di particolare interesse sono:
I file di maggiore interesse contenuti nelle cartelle descritte, sono così suddivisi:
I file con estensione getdns2 – fig. 4 – che si trovano nella cartella /files/host possono essere tranquillamente aperti con un editor di testo o esadecimale. All’interno è possibile trovare la sezione [clientip] – fig. 5 – che mostra gli indirizzi IP dai quali l’utente si è connesso e la data della connessione in formato “Epoch Linux”; il formato può essere facilmente convertito in data e ora intellegibile anche a mezzo di siti web quali, ad esempio, https://epochconverter.com.
La cartella MicroMsg è così composta:
Viene posta in evidenza la cartella denominata 528196c25f8900a682350929260b6a44 – determinata dal risultato di MD5 (‘mm’ + uin) – che contiene, tra l’altro, due file di database cifrati: quello contenente le chat dell’utente, EnMicroMsg.db e enFavourite.db.
Entrambi sono cifrati tramite l’estensione di crittografia opensource per SQLite denominata SQLCipher [14]. SQLCipher fornisce un’interfaccia trasparente a SQLite; il file è diviso in piccoli blocchi di 4Kb e il testo cifrato viene calcolato utilizzando l’algoritmo AES[4] 256-bit. La decifrazione viene eseguita utilizzando la chiave di decrittografia – calcolata con il metodo esposto in seguito – e convertendo il testo cifrato in testo semplice.
In calce, figg. 7 e 8, il contenuto della cartella 528196c25f8900a682350929260b6a44:
Per decifrare i database menzionati – enFavourite.db e EnMicroMsg.db – è necessario utilizzare un codice di decifrazione che, nel caso di WeChat, è composto dal codice IMEI (International Mobile Equipment Identity) – estraibile dal file CompatibleInfo.cfg, fig.9 – e l’id univoco del profilo utente di WeChat, rinvenibile dal file /shared_prefs/system_config_prefs.xml, come indicato in fig. 10:
La chiave per decifrare i db è composta dai primi sette (7) caratteri risultanti dalla seguente espressione: Md5 (IMEI + default_uni).
Utilizzando una semplice applicazione, denominata sqlcipher (e liberamente scaricabile dal seguente indirizzo web: https://raw.githubusercontent.com/xiejiangzhao/Wechat_database_decrypt/master/sqlcipher.exe) è possibile, fornendo all’applicazione la chiave ricavata in precedenza – fig.11 – , avere accesso alle numerose tabelle – ben 173 evidenziate in parte in fig. 12 –, che compongono il database EnMicroMsg.db:
Analogo metodo è adoperabile per l’accesso al database enFavourite.db dato che la chiave di decifrazione è la stessa utilizzata per EnMicroMsg.db:
I dati chiave sono principalmente concentrati nelle tabelle FavSearchInfo e FavItemInfo e l’analisi corrispondente consente di ottenere, tra l’altro, l’ID locale, il contenuto, l’etichetta, la data e ora, il mittente e il destinatario che sono tutti dati inerenti il contenuto preferito memorizzato:
Certamente, i dati più significativi risiedono nel database EnMicroMsg.db.
Analizzaremo solo le tabelle che potrebbero contenere le informazioni utili all’analista forense.
1. userinfo, atta a contenere le informazioni di base dell’utente, come specificato in calce:
2. userinfo2 – fig. 18 – contiene le altre informazioni legate all’utente:
3. MediaDuplication – fig. 19 – contiene le informazioni sui file multimediali, inclusi il valore MD5, le dimensioni, il percorso e il timestamp relativo alla creazione del file (nel caso di studio, non erano presenti file multimediali).
4. Voiceinfo – fig. 20 – contiene le informazioni vocali, inclusi l’id dell’utente, il nome del file vocale, la dimensione, la durata dell’audio, la data e ora di creazione, etc.
5. ImgInfo2 – fig.21 – contiene le informazioni sull’immagine, inclusi ID del messaggio, lunghezza, percorsi dell’immagine e della sua miniatura, data di creazione, immagine originale MD5, etc.
6. Videoinfo2 – fig.22 – contiene le informazioni sul video, inclusi il nome del file, le dimensioni, la durata, ID del messaggio, l’attributo ora, ID dell’utente corrispondente (individuo o gruppo), etc.
7. Rconversation – fig. 23 – contiene informazioni sulla sessione – gruppo di messaggi inerenti lo stesso oggetto della chat -, incluso il numero di messaggi, l’ID oggetto (incluso l’ID gruppo), il numero di messaggi non letti, il timestamp, il contenuto e altro.
8. message – fig. 24 – contiene le conversazioni scambiate, inclusi i messaggi peer-to-peer (mittente, contenuto del messaggio, timestamp) e i messaggi di gruppo (ID gruppo, contenuto del messaggio, timestamp), i percorsi di archiviazione dei file multimediali e così via.
I messaggi offline QQ sono memorizzati separatamente nella tabella qmessage.
I campi di ciascun record che potrebbero rivestire particolare interesse per l’analista forense sono: “talker“, “createTime“, “type“, “content“, “imgPath” e “isSend“. Il campo “talker” memorizza l’account WeChat con cui l’utente sta comunicando; le sue informazioni dettagliate sono invece memorizzate nel tabelle “userinfo” – fig.17 – e “rcontact” – fig. 25 -.
Nella fig.25, che evidenzia la tabella rcontact, il campo type viene utilizzato per distinguere il tipo di oggetto, il cui significato è esplicitato nella tabella in calce:
Conclusa la panoramica sui due database cifrati – anche se non sono i soli – è interessante soffermarsi ad esaminare, se pur velocemente, anche il database SnsMicroMsg.db.
Esso contiene i dati relativi ai “momenti” della propria vita che gli utenti condividono con gli amici, in cui sono presenti anche contenuti multimediali. Questo database non è cifrato ed è costituito da 9 tabelle.
I dati di interesse possono essere rinvenuti nelle tabelle “SnsInfo” e “SnsComment”.
La tabella “SnsInfo” memorizza i messaggi Moments, inclusi i testi e il collegamento dei file multimediali (immagini o video). La tabella “SnsComment” contiene invece i commenti associati al messaggio condiviso.
Di interesse nella tabella “SnsInfo” vi sono i campi “userName“, “createTime” e “content“. Il campo “userName” contiene l’identificativo del mittente del messaggio, il campo “content” i dati del messaggio memorizzati in formato (BLOB) e il campo “createTime” il timestamp relativo.
Per concludere, è utile dettagliare alcuni dei contenuti presenti nel percorso /sdcard/tencent/MicroMsg, utilizzato per archiviare le risorse multimediali come immagini ricevute, file audio, etc.
Ogni utente ha una sua cartella privata – nel caso in esame 528196c25f8900a682350929260b6a44, la stessa di cui abbiamo già parlato che contiene, tra l’altro, alcune cartelle interessanti:
Ritengo conclusa la trattazione dell’app WeChat per i sistemi Android.
Come sempre,
Stay Tuned.
[1] https://it.wikipedia.org/wiki/Rooting
[2] https://www.zetetic.net/sqlcipher/open-source/
[3] https://www.oxygen-forensic.com/en/products/oxygen-forensic-detective
[4] https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
Articolo a cura di Cosimo De Pinto
Nel panorama odierno della sicurezza informatica, la protezione degli endpoint rappresenta un obiettivo imprescindibile per…
I numeri dell’evento Oltre 1000 ospiti, 42 relatori, 20 interventi tematici e 5 Tavole Rotonde:…
Group-IB è un fornitore, con sede a Singapore, di sistemi ad elevata attendibilità per il…
Le interazioni di natura digitale, su rete pubblica o all’interno di reti private, hanno assunto…
La Commissione Europea ha di recente ricordato come “Artificial intelligence (AI) is not science fiction;…
Di seguito il programma della Cyber Crime Conference 2024, che avrà luogo a Roma nei…