Questo articolo introduce la forense Android e le tecniche utilizzate per eseguire indagini forensi Android. Discuteremo i file system di Android, l’acquisizione dei dati, l’analisi e i vari strumenti disponibili per l’estrazione dei dati Android.
Introduzione
Il mercato degli smartphone sta crescendo sempre di più. Con i drastici cambiamenti nella tecnologia, gli smartphone stanno diventando obiettivi dei criminali. A causa del fatto che la maggior parte delle persone sono completamente dipendenti dai dispositivi mobili per svolgere le nostre attività quotidiane, che vanno dall’impostazione di un promemoria per fare gli auguri ai nostri cari in occasioni speciali, alle transazioni bancarie online, i dispositivi mobili contengono un sacco di dati sensibili che sono di interesse per un investigatore. Poiché Android è uno dei principali sistemi operativi per smartphone, è importante avere conoscenze di Android forensics.
Android forensics è diverso dalla normale forensics del disco per vari motivi. Supporta vari file system che sono specifici di Android. Possiamo cercare i seguenti dati sui dispositivi Android: SMS, MMS, e-mail, registri delle chiamate, contatti, foto, calendari, note, cronologia del browser, posizioni GPS, password, dati memorizzati su schede SD, ecc.
È importante capire i file system, le strutture delle directory, e come e dove i dati sono memorizzati sui dispositivi prima di entrare nella forensics vera e propria.
Struttura delle directory Android
Android ha una struttura di directory specifica. Possiamo guardare la struttura delle directory del dispositivo usando “adb shell”. È anche possibile vedere la struttura delle directory del dispositivo usando DDMS. La figura seguente mostra il file system del mio dispositivo “Sony Xperia E” usando “adb shell”.
La figura precedente mostra molti file e cartelle sul dispositivo corrente. Le posizioni più importanti per un analista forense sono /system, /data, /sdcard, /ext_card.
/system: Contiene dati specifici del sistema operativo.
Come possiamo vedere nella figura precedente, questa directory contiene varie sotto directory per contenere informazioni sulle applicazioni di sistema, font, librerie, eseguibili ecc.
/data: Contiene dati specifici dell’utente come i dati memorizzati da un’applicazione SMS. Possiamo vedere i file eseguibili di ogni applicazione installata nella directory “/data/app”. Questo richiede i privilegi di root, il che significa che un utente senza un dispositivo rootato non può vedere il contenuto di questa directory. La figura seguente mostra come il binario di ogni applicazione installata può essere visto sul dispositivo (l’output è troncato).
I dati dell’utente risiedono nella directory “/data/data//”. Per ragioni di sicurezza, i dati in ogni directory non sono accessibili ad altre applicazioni.
/sdcard e /ext_card: In questo caso specifico, abbiamo sdcard per la memoria interna e ext_card per la memoria esterna. Di solito, sdcard è data per lo storage esterno. Questi sono utilizzati per memorizzare i dati dell’utente come immagini, file musicali, video ecc.
File system Android
Avere una conoscenza di base dei file system Android è sempre bene prima di immergersi nella forense Android. Questo perché Android ha il supporto per vari file system. La partizione principale del file system Android è spesso partizionata come YAFFS2 (Yet Another Flash File System). YAFFS2 è specificamente progettato per sistemi embedded come gli smartphone. Fornisce maggiore efficienza e prestazioni.
Per vedere l’elenco dei file system supportati, possiamo usare il seguente comando su “adb shell”.
“cat /proc/filesystems”
Come possiamo vedere nella figura sopra, abbiamo un elenco di file system supportati dal dispositivo. La voce “nodev” accanto al file system indica che non esiste un dispositivo fisico associato a quel particolare file system. Android supporta i file system ext2, ext3 e ext4 (usati dai sistemi Linux) e il file system vfat usato dai sistemi basati su Windows. Poiché è destinato ai dispositivi mobili, Android supporta i file system YAFFS e YAFFS2, poiché richiede il supporto dei chip NAND utilizzati in questi dispositivi.
Il file system di Android è diviso in diverse partizioni. Per vedere le diverse partizioni che sono montate su un dispositivo Android, possiamo ottenere una shell sul dispositivo ed eseguire il seguente comando: “mount”. Questo è mostrato nella figura seguente.
Come possiamo vedere nella figura precedente, ci sono varie partizioni montate sul dispositivo.
Se osserviamo la figura precedente, ci sono alcune partizioni importanti del file system come /system, /cache, /data che usano ext4 come tipo di file system piuttosto che YAFFS. Questo perché, a partire da Gingerbread, Android ha sostituito il file system YAFFS con ext4.
Metodi di acquisizione dei dati
L’acquisizione dei dati è il processo di estrazione dei dati dalle prove. Come abbiamo discusso in precedenza, l’acquisizione dei dati sui dispositivi mobili non è semplice come l’acquisizione forense standard del disco rigido. Queste tecniche di acquisizione dati sono ampiamente suddivise nei seguenti tipi.
Acquisizione manuale:
L’esaminatore utilizza l’interfaccia utente del dispositivo mobile per indagare il contenuto. Mentre naviga nel dispositivo, l’esaminatore scatta foto di ogni schermata. Questo metodo non richiede alcuno strumento per eseguire l’acquisizione dei dati. A parte i vantaggi, il più grande svantaggio di questo metodo è che solo i dati visibili agli utenti sul telefono possono essere recuperati, e ovviamente richiede tempo.
Acquisizione fisica:
Simile al processo di acquisizione fisica sulla digital forensics standard, il processo di acquisizione fisica sui dispositivi mobili crea una copia bit per bit di un intero file system. Crea una copia dell’intero file system che contiene i dati presenti su un dispositivo, compresi i dati cancellati e lo spazio non allocato.
Acquisizione logica:
L’estrazione logica acquisisce informazioni dal dispositivo utilizzando l’interfaccia di programmazione dell’applicazione del produttore di apparecchiature originali per sincronizzare il contenuto del telefono con un personal computer.
La maggior parte degli strumenti disponibili gratuitamente eseguono l’acquisizione logica. L’acquisizione logica è il processo di estrazione dei dati che sono accessibili agli utenti del dispositivo e quindi non può acquisire dati cancellati o i dati nello spazio non allocato. L’affermazione di cui sopra ha delle limitazioni in alcuni casi.
Imaging di una scheda SD con FTK Imager
FTK Imager può essere scaricato dal seguente link. http://www.accessdata.com/support/product-downloads
È importante ottenere una copia bit per bit della scheda SD del telefono, poiché può essere usata come un prezioso tesoro di dati durante le indagini. Come migliore pratica, dobbiamo usare un blocco di scrittura per mantenere l’integrità delle prove.
Le schede SD sono generalmente del file system FAT32. Quindi, possiamo usare strumenti di imaging tradizionali e acquisire l’immagine della scheda SD. In questa sezione, useremo uno strumento popolare conosciuto come FTK Imager per ottenere l’immagine della scheda SD.
Ecco i passaggi:
- Sicuramente rimuovete la scheda SD dal dispositivo mobile e collegatela alla workstation usando un lettore di schede.
-
Lancia lo strumento FTK Imager. Questo appare come mostrato nella figura qui sotto.
-
Ora, naviga su “File” e clicca “Create Disk Image” come mostrato qui sotto.
Il passo precedente apre una nuova finestra per selezionare il tipo di acquisizione.
Siccome stiamo cercando di creare un’immagine della scheda SD completa, ho scelto “Physical Drive”. Si apre una nuova finestra per selezionare l’unità fisica come mostrato di seguito.
Ho scelto “PHYSICALDRIVE 2” di 1GB che nel nostro caso è la scheda SD. Dopo aver selezionato l’opzione appropriata, clicchiamo su finish. Viene visualizzata un’altra finestra dove possiamo aggiungere la destinazione e il tipo di immagine da creare.
Facendo clic sul pulsante “Aggiungi”, si apre una nuova finestra per selezionare il tipo di immagine di destinazione.
Nel nostro caso, abbiamo scelto “Raw” che dà un’immagine “dd”. A differenza di altri formati d’immagine come “E01”, l’immagine “dd” non memorizza i suoi metadati nell’immagine. Cliccando su next, viene mostrata un’altra finestra in cui FTK Imager richiede le informazioni sull’elemento di prova. Possiamo riempire i dettagli appropriati e cliccare “next” o saltarli se lo stiamo facendo come una traccia.
Come possiamo vedere nella figura precedente, abbiamo fornito il percorso di destinazione e il nome del file di output. Infine, clicca su finish per iniziare l’imaging.
Clicca “start” per iniziare il processo.
-
Dopo aver finito il processo, FTK Imager visualizza una nuova finestra dove mostra i risultati della verifica hash. Questo è mostrato nella figura qui sotto.
Ora, l’immagine creata può essere ulteriormente analizzata utilizzando i tradizionali strumenti di analisi forense.
Immagine del file system di Android:
In questa sezione, vedremo come eseguire l’acquisizione dei dati delle partizioni del file system di Android.
Nota: per seguire il seguente processo, il dispositivo deve essere rootato.
Useremo il popolare strumento “dd” per fare il nostro lavoro. “dd” è presente in Android di default nella posizione “/system/bin”. Questo è mostrato nella figura seguente.
Ora, diamo un’occhiata alle posizioni delle partizioni di nostro interesse usando il comando mount.
Di seguito è riportata la voce associata alla partizione “/data” dall’output precedente.
/dev/block/platform/msm_sdcc.3/by-num/p16 /data ext4 rw,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
Perciò, usiamo il seguente comando per estrarre questa particolare partizione usando “dd”.
dd if=/dev/block/platform/msm_sdcc.3/by-num/p16 of=/mnt/sdcard/output.img
Il comando sopra è spiegato qui sotto.
if = file di input
of = file di output da creare
output.img = nome dell’immagine di uscita da creare.
Possiamo anche specificare la dimensione del blocco usando l’opzione “bs” in dd.
Dopo aver finito il processo di cui sopra, possiamo tirare fuori questo file usando strumenti come Droid Explorer. Possiamo anche farlo usando il comando adb pull.
Lo screenshot seguente mostra il comando per tirare l’immagine sulla nostra stazione di lavoro usando il comando adb pull.
Ora, possiamo usare questa immagine per fare le nostre ulteriori analisi sul dispositivo.