In questi giorni sta impazzando sui social il servizio “Sarahah”, disponibile sia via web sia tramite App per Android e iOS, che permette a chiunque iscriversi e ricevere messaggi anonimi. In questo articolo analizzeremo alcune potenzialità della “sarahah forensics”, cioè dell’analisi tecnica forense dell’App Sarahah su iPhone e Android e del sito web da cui inviare messaggi o su cui leggere i messaggi anonimi ricevuti dagli sconosciuti.
Per quanto possa sembrare banale, si tratta del primo sistema facile da usare per fare una sorta di “whistleblowing”, cioè di segnalazione che garantisca l’anonimato del segnalante, ad esempio al proprio capo, a un’Azienda, a un Ente Pubblico o Associazione, a chiunque voglia mettersi in gioco aprendo la possibilità ad altri d’inviare commenti anonimi.
In molti hanno segnalato gli aspetti “inquietanti” dell’App Sarahah, cioè il fatto che, se usata da minori o persone vulnerabili, potrebbe portare a episodi di bullismo, stalking, intimidazioni, minacce di morte. Si teme infatti che possibilità di scrivere qualunque cosa ad amici o compagni di classe sapendo di non poter essere identificati possa togliere i pochi freni inibitori che ancora rimangono agli adolescenti e non solo.
Gli avvocati e le Forze dell’Ordine stanno già aspettando le prime querele, è solo questione di tempo, quindi, prima che venga richiesta la prima perizia su Sarahah, cioè una indagine informatica su tracce lasciate dalla App o dal sito Web sul computer, la rete o sul cellulare di chi inviato i messaggi ed eventualmente sullo smartphone di chi li ha ricevuti. Considerando con quanti casi di perizie informatiche per stalking, diffamazione, ingiuria, bullismo veniamo in contatto, non mancherà molto prima che qualche indagine coinvolga messaggi inviati o ricevuti via Sarahah e venga richiesta una perizia informatica su Sarahah.
Gli strumenti di analisi forense degli smartphone – come UFED, XRY, Oxygen Forensics, Paraben Device Seizure, Katana Lantern, MobilEdit o diversi altri – non supportano ancora il parsing degli artefatti lasciati dall’applicazione Sarahah. Possiamo quindi tentare di analizzare le potenzialità della sarahah forensics per verificare quali aspetti dell’App e del sito web possono essere utilizzate a fini investigativi. Il post verrà integrato man mano che si acquisiranno maggiori informazioni, per ora è soltanto un punto di partenza con cui approfondire la possibilità di eseguire perizie informatiche su sarahah.
Il dati memorizzati dall’App Sarahah su Android
Iniziamo l’approfondimento sulla sarahah forensics analizzando gli artefatti lasciati dall’App Sarahah 1.0.08 (md5: becf2be6a61ff314c23fed07c52db9d1) su un dispositivo Android, esaminando il folder contenente i dati e i database “/data/data/com.sarahah.android”.
cache
├── com.android.opengl.shaders_cache
└── picasso-cache
├── 3045dd3c301f395067bae0809a1dfa81.0
├── 3045dd3c301f395067bae0809a1dfa81.1
├── a26d1fcf5e0bce1a42010749b6db624a.0
├── a26d1fcf5e0bce1a42010749b6db624a.1
├── c84ac6303f47b0df03455d31e0a020b3.0
├── c84ac6303f47b0df03455d31e0a020b3.1
└── journal
databases
├── crash_reports
├── crash_reports-journal
├── google_app_measurement_local.db
└── google_app_measurement_local.db-journal
files
├── firebase_inter_process_mutex-lock_send_report_to_server.lock
└── firebase_inter_process_mutex-lock_write_report_to_sqlite.lock
no_backup
└── com.google.android.gms.appid-no-backup
shared_prefs
├── com.google.android.gms.appid.xml
├── com.google.android.gms.measurement.prefs.xml
└── com.sarahah.android.xml
Le due aree per ora più interessanti sono la cache e le shared_prefs. Gli altri repository sono poco rilevanti, i database ovviamente sono vuoti, il resto sono file standard di Android.
La cache di Sarahah su smartphone Android
Nella cartella che contiene la cache, in “/data/data/com.sarahah.android/cache/picasso-cache“, troviamo diversi file da 4.7k contenenti le URL delle immagini di profilo degli utenti ai quali sono stati inviati dei messaggi o che sono stati anche soltanto ottenuti come risultato di una ricerca, incluse le risposte HTTP ottenute durante l’accesso:
https://sarahahstorage.blob.core.windows.net/files/xxxx834b8fx-fdxx-4dxx-a637-a05457f5xxxx.jpg
GET
0
HTTP/1.1 200 OK
16
Content-Length: 31150
Content-Type: multipart/form-data
Content-MD5: xxE5xxxx3F1O/a7VIxxxxx==
Last-Modified: Sat, 12 Aug 2017 21:04:26 GMT
Accept-Ranges: bytes
ETag: “0x8DxxxxxB7460Exx”
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: xx0317xx-00xx-00xx-7axx-xxf4370000xx
x-ms-version: 2014-02-14
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
Date: Sat, 12 Aug 2017 21:04:27 GMT
X-Android-Sent-Millis: xx025718679xx
X-Android-Received-Millis: xx025718682xx
X-Android-Response-Source: NETWORK 200TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
2
MIIGOz[…]jBPzTc
A una prima analisi emergono diversi elementi d’interesse per la sarahah forensics nella cache dell’App, in particolare il fatto che se sono presenti URL di profili, significa che l’utilizzatore ha cercato o inviato messaggi anonimi a tali profili.
Facendo carving dei JPG all’interno della cache, si può trovare anche l’immagine del profilo configurato sul dispositivo, non un link o URL ma l’immagine stessa in formato JPG. Vedremo a breve che l’URL della foto del profilo di un utente Sarahah può avere altri elementi d’interesse.
Le impostazioni dell’App Sarahah su Android
Nel file “/data/data/com.sarahah.android/shared_prefs/com.sarahah.android.xml” si trovano altri elementi d’interesse, come ad esempio l’email con cui l’utente si è registrato, oltre allo username in uso e quelli configurati in precedenza, anche se poi rimossi, elencati in ordine di configurazione sullo smartphone. E’ quindi possibile tracciare tutti i profili Sarahah configurati nel tempo su un cellulare, a partire dal primo, aspetto molto interessante per la security e la privacy degli utilizzatori dell’App Sarahah su Android.
Ulteriore evidenza importante per la privacy e sicurezza di Sarahah è la presenza dell’ultimo messaggio non inviato ma digitato nel box di scrittura: se l’utente apre il profilo di un utente e comincia a scrivere un messaggio, chiudendo l’App, si troverà una copia del messaggio in chiaro nel file “com.sarahah.android.xml”.
Nel caso in cui l’App venisse disinstallata e rimossa, sarebbe comunque possibile (su Android, non su iOS) cercare tramite carving stringhe come “FirstTimeLogin” o “msgTemp_expiration” per identificare l’eventuale presenza di passate installazioni e ricavare informazioni preziose sulle configurazioni.
Le immagini del profilo utente Sarahah
Quando un utente si registra al servizio (o anche in seguito) può caricare una immagine del profilo, presa tra le sue foto o i file che ha sul PC o smartphone. Le immagini del profilo vengono caricate tramite l’App Sarahah o via web.
Quando le immagini di profilo vengono caricate tramite App, vengono ridimensionate e ricodificate, perdendo quindi i metadati EXIF interni. Se l’immagine JPG viene caricata tramite l’App Android, viene ridimensionata con una larghezza di 1.000 px e rimossi i metadati. Se l’immagine JPG viene caricata tramite App iPhone, viene ridimensionata con una larghezza di 400px e ricodificata con estensione PNG, pur rimanendo in realtà un JPG.
Quando invece l’immagine del profilo viene caricata tramite il sito web www.sarahah.com, viene inviata e salvata integralmente nel cloud Microsoft, mantenendo i metadati EXIF inclusi eventuali dati come GPS, data e ora di scatto, fotocamera o smartphone utilizzato, etc…
Una semplice verifica degli hash MD5 mostra come l’immagine presente sul PC è identica a quella caricata online, può essere quindi possibile – in caso d’indagini su profilo Sarahah – eseguire delle comparazioni degli hash delle immagini, sia presenti su PC sia nella cache dell’App sugli smartphone Android o iPhone.
L’immagine avrà una sua URL del tipo https://sarahahstorage.blob.core.windows.net/files/426d6156c2d-fac1-2281-baf6-9ae73400a37c.jpg e accedendo al profilo dell’utente via web si nota che (si osservi il campo hidden “RecipientId”) l’ID dell’utente è contenuto nel nome del file JPG che contiene la sua immagine di profilo. Nell’esempio riportato sopra, l’ID dell’utente sarà d6156c2d-fac1-2281-baf6-9ae73400a37c. Si può infatti fare una prova empirica cambiando più volte l’immagine del profilo e verificando quale URL viene assegnata, il nome del file JPG/PNG sarà sempre identico tranne per i due o tre numeri iniziali che cambieranno.
Scaricando l’immagine del profilo dalla URL, si può osservare come tramite semplici tecniche di OSINT e network forensics è possibile capire quando l’utente Sarahah si è registrato, dalle informazioni restituite dal protocollo HTTP dal server. Se l’immagine poi è stata caricata tramite il sito web, possiamo essere fortunati e trovare anche la data e l’ora di scatto e magari anche la posizione GPS.
Abbiamo visto che in base alla dimensione del file, alla presenza eventuale di metadati, è possibile capire con quale Sistema Operativo è stato creato il profilo e, nel caso in cui sia stato utilizzato un PC, analizzare i metadati delle immagini di profilo che rimangono identici, essendo queste caricate e salvate sul profilo pubblico senza alcuna modifica.
In passato sembra che qualcuno abbia approfittato di questa caratteristica per caricare dei file HTML al posto di immagini JPG, illustrando poi su Youtube la modalità con la quale ha agito: si osservino ad esempio questa pagina “pwned” o questa pagina “hacked” che hanno la stessa struttura delle immagini di profilo ma contengono codice HTML caricato al posto delle immagini.
Traffico di rete dell’App Sarahah
Non abbiamo ancora analizzato il traffico di rete dell’App, se non tramite un semplice Access point e sniffing del network tramite Wireshark che ha mostrato come l’App comunichi con il server all’indirizzo 52.236.40.24 scambiando traffico SSL.
L’IP 52.236.40.24 non è altro poi che l’indirizzo assegnato la nome DNS sarahahstorage.blob.core.windows.net passando attraverso il CNAME blob.db6prdstr10a.store.core.windows.net.
Avendo maggiore tempo si potrebbe tentare lo sniffing tramite MITM del protocollo SSL con Fiddler o Burp (o la decompilazione del codice APK) per ricostruire il protocollo con il quale il client comunica con il server web e verificarne la sicurezza.
Data retention di Sarahah
La privacy policy del sito Sarahaha non è molto precisa: si cita la raccolta d’indirizzo IP, data, ora, giorno, referrer e user agent dei visitatori del sito web (così come già avviene per qualunque server web, si aggiunge) ma non viene menzionata la retention di messaggi o dati degli account. Il sito precisa che i dati non verrano forniti a terzi a meno di necessità o convenienza del fornirli all’Autorità Giudiziaria, con la frase un po’ emblematica “We will never disclose the this information unless there is a law requirement or with good intention if we feel that this procedure is required or wanted to meet legal requirements. Or to defend or protect the ownership rights of this website or other parties benefiting from this site.“.
Certamente il sito web e il servizio possiedono gli indirizzi IP di chi si connette sia per leggere i messaggi ricevuti sia per inviarli, così come ogni webserver mantiene i file di log degli accessi e dei login ai servizi offerti. L’App potrebbe ricevere più dati, rimanendo connessa in tempo reale, acquisendo quindi anche i dati dei diversi IP assegnati al client durante la giornata dal provider telefonico, reti wifi, in ufficio, casa o locali pubblici.
Non viene precisato per quanto tempo i dati di accesso e connessione degli utenti di Sarahah vengono mantenuti e su che basi possano essere fornite all’Autorità Giudiciaria (Rogatoria, MLAT, semplice richiesta da parte di AG, etc…): lo scopriremo probabilmente durante le prime indagini su eventuali casi di minacce o cyberbullismo tramite l’App Sarahah.
Analisi dell’APK dell’App di Sarahah per Android
Questo paragrafo andrebbe espanso con analisi più dettagliate e studio del codice sorgente, ottenibile decompilando l’APK di Android dell’App Sarahah. Per cominciare, si può scaricare il package dell’App Sarahah 1.0.08 da uno dei siti di mirror del Google Play Market (ad esempio prelevandone copia da apkmirror) oppure copiandolo dal folder “/data/app/com.sarahah.android-1” di un dispositivo Android con i privilegi di root.
In entrambi i casi, si otterrà per la versione di 10.0.08 di Sarahah un file APK con MD5 becf2be6a61ff314c23fed07c52db9d1 e SHA256b2b64d94cdee3218c02ff59d32344f1d3293364a8a8503f2318f7def5cc325eb. A questo punto, si possono tentare diverse strade, la prima è quella di caricare il file APK su un sito come Hybrid Analysis, per un’analisi in macchina virtuale che permette di ottenere alcuni risultati interessanti, in particolare nella sezione “Risk Assessment”, che vanno ovviamente verificati poi sull’App:
Spyware
- Has the ability to send SMS
Fingerprint
- Has the ability to get the wifi MAC address (may be used to fingerprint device)
- Has the ability to identify network operator related data
- Has the ability to query the phone location (GPS)
- Has the ability to read the device ID (e.g. IMEI or ESN)
Spreading
- Found an indicator for SMS sending capabilities
Anche le permission dell’App sono interessanti, perché mostrano ciò che l’App può fare sul dispositivo:
Per un’analisi autonoma del file, consigliamo di decompilare il codice ottenendo il sorgente e le risorse in chiaro. Ci sono diverse alternative per decompilare il codice APK android, la prima e più immediata è quella di utilizzare un servizio web online come Java Decompilers APK Tool, dove si può caricare il file APK e scaricare uno zip con il codice sorgente.
Valida alternativa è quella di decompilare il tutto , in locale, ad esempio tramite il tool JADX, che essendo scritto in java è utilizzabile su Windows, Mac OS o Linux.
Si può poi esportare tutto il contenuto del codice decompilato per esaminarlo all’esterno del software JADX.