Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source

Pagina creata da Noemi Belli
 
CONTINUA A LEGGERE
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Android Forensics
Analisi di un dispositivo Android utilizzando
    strumenti freeware ed open source
                Settembre 2011

      Stefano Fratepietro & Sandro Rossetti
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

                               Attribuzione - Non commerciale 3.0 Italia

Tu sei libero di di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,
rappresentare, eseguire, recitare e di modificare quest'opera alle seguenti condizioni:

   •   Attribuzione — Devi attribuire la paternità dell'opera nei modi indicati dall'autore o da chi ti
       ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino te o il modo in
       cui tu usi l'opera.
Non commerciale — Non puoi usare quest'opera per fini commerciali.

Rinuncia — E' possibile rinunciare a qualunque delle condizioni sopra descritte se ottieni
l'autorizzazione dal detentore dei diritti.

Pubblico Dominio — Nel caso in cui l'opera o qualunque delle sue componenti siano nel pubblico
dominio secondo la legge vigente, tale condizione non è in alcun modo modificata dalla licenza.

Altri Diritti — La licenza non ha effetto in nessun modo sui seguenti diritti:

   •   Le eccezioni, libere utilizzazioni e le altre utilizzazioni consentite dalla legge sul diritto
       d'autore;
   •   I diritti morali dell'autore;
   •   Diritti che altre persone possono avere sia sull'opera stessa che su come l'opera viene
       utilizzata, come il diritto all'immagine o alla tutela dei dati personali.
Nota — Ogni volta che usi o distribuisci quest'opera, devi farlo secondo i termini di questa licenza,
che va comunicata con chiarezza.

Questo è un riassunto in linguaggio accessibile a tutti della licenza integrale:
http://creativecommons.org/licenses/by-nc/3.0/it/legalcode

                                                    2
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Stefano “youngSTEr” Fratepietro ( stefano@deftlinux.net )

Si laurea nel 2006 in Information Technology and Management (Scienze di Internet) presso
l’Università degli studi di Bologna con tesi di laurea in Informatica Forense dal titolo “Uno studio del
caso virus Vierika”; certificato Offensive Security OSCP e ISECOM OPST, attualmente è IT
security specialist presso l’ufficio it-security del CSE (Consorzio Servizi Bancari) ed effettua attività
peritali per tribunali, forze dell’ordine e privati partecipando come consulente tecnico a casi di fama
nazionale come “Buongiorno! Vitaminic” e “Pirelli-Telecom-Ghioni”. Dal 2005 è creatore e project
leader del sistema DEFT. Saltuariamente effettua attività di docenza in Informatica Forense per
Università italiane e corsi privati.

Sandro “bUSBoy” Rossetti ( sandro@deftlinux.net )

Vive e lavora a Roma. Molti dei suoi interessi personali riguardano l'Information Technology, in
particolare le problematiche di security e forensics. È membro di diverse organizzazioni
indipendenti quali Isaca (già membre del Board of Directors del Rome Chapter) ed IACIS.

                                                   3
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Android
                     Android è un sistema operativo open source, derivato da linux, destinato ai
                     dispositivi mobile (smartphone, tablet, netbook).

                   Particolarmente diffuso nei sistemi a basso costo di origine cinese, è presente in
                   una grandissima varietà di dispositivi, scavalcando per diffusione iOS (è possibile
installarlo sullo stesso iPhone di Apple1) e l’ormai datato ma ancora molto utilizzato Nokia OS2 .

Il sistema, sviluppato attualmente dalla Open Handset Alliance3 guidata da Google, ha visto la luce
per la prima volta nel novembre del 2007 e, ad ogni release, si è arricchito di funzionalità che ne
hanno garantito una notevole maturità.

Attualmente le versioni più recenti del sistema operativo sono:

      •   2.3 Gingerbread: diffusa soprattutto tra gli smartphone ed i tablet di fascia bassa

      •   3.2 Honeycomb: destinata ai tablet, ha portato un maggior supporto per gli schemi di
          dimensioni maggiori, multiprocessori ed hardware per l’accelerazione grafica.

È attesa per l’ultimo trimestre del 20114 l’uscita della versione Ice Cream Sandwich, che dovrebbe
riunire i punti di forza delle due versioni.

L’OHA, comunque, non cura l’aggiornamento del sistema operativo installato nei singoli dispositivi
dato che questa incombenza è demandata ai singoli produttori che decido secondo esigenze
interne il rilascio delle patch per la correzione di problemi di sicurezza o l’implementazione di
nuove funzioni. Questa politica di mercato ha causato la nascita di un gran numero di “Rom
Cooked”, rom tratte dalla versione 2.3 e personalizzate per singoli dispositivi solitamente più
perfomanti della versione normalmente presente nel dispositivo.

Ciò comporta che l’operatore che deve eseguire un’analisi forense su uno smartphone non possa
sapere con certezza quale versione di Android possa essere installata nel dispositivo sotto posto a
perizia.5

In questo articolo introduttivo rivolgeremo la nostra attenzione solo alla versione 2.3 gingerbread.

Open handset alliance, oltre a rendere disponibile il codice sorgente del sistema operativo, ha
rilasciato il SDK6 per i sistemi Windows, Linux e Mac OSX. Esso è composto dagli strumenti di
sviluppo, da documentazione ed esempi, da un emulatore ed altro ancora. L'emulatore è
considerabile come un’ottima palestra per studiarne il funzionamento ed iniziare a impostare un
possibile approccio per le attività di Mobile Forensic senza la necessità di comprare un telefono
android.

1
    http://www.giardiniblog.com/guida-installare-android-su-iphone-3g

2
  Da intendersi come tutti i sistemi operativi installati sui dispositivi Nokia, creati da Nokia:
http://en.wikipedia.org/wiki/Nokia_OS

3
    http://www.openhandsetalliance.com/

4
    http://www.youtube.com/watch?v=JDl5hb0XbfY#t=30m28s

5
    Vedi ad esempio la comunità CyanogenMod nata attorno alla versione android 2.3 ( http://www.cyanogenmod.com/)

6
    http://developer.android.com/sdk/index.html . Al momento la versione più recente è la 3.2.

                                                              4
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

                                           Il sistema operativo di base supporta le funzionalità basilari di
                                           uno smartphone:

                                               •    connessioni via GSM/EDGE, UMTS, Bluetooth, Wi-Fi,
                                                    WiMAX,

                                               •    chiamate,

                                               •    ricezione e trasmissione di SMS e MMS,

                                               •    supporto avanzato multilingue,

                                               •    navigazione web,

                                               •    supporto a Java tramite la “Dalvik virtual machine”7,

                                               •    ampio supporto          multimediale       ed    allo   streaming
                                                    audio/video,

                                               •    multitasking,

                                               •    comandi vocali,

                                               •    tethering.

                                       Ulteriori funzionalità possono essere presenti in base al tipo di
hardware presente (es. touchscreen, GPS, accelerometro, scheda 3D, ecc…) o all’aggiunta di
particolari applicazioni (client per social network, gestionali di ogni tipo, sicurezza, giochi, … )

Le caratteristiche indicate hanno permesso ad Android di togliere progressivamente fette di
mercato agli altri OS per smartphone e Table, come indicato nello schema seguente

7
Macchina virtuale ottimizza per funzionare in dispositivi con scarsa potenza e dai ridotti consumi energetici

                                                           5
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

L'Hardware utilizzato negli smartphone è strettamente legato alle caratteristiche progettuali decise
dal produttore: varia sia sulla base del budget destinato alla produzione, sia al target di mercato. I
componenti che in particolare possono fare la differenza, determinando il successo di una
periferica, sono lo schermo, la qualità del touch screen o il tipo di materiale usato per la scocca.

Per quanto concerne la memoria del dispositivo, nella maggior parte dei casi il sistema operativo
viene installato all’interno della memoria flash, generalmente non rimovibile, senza un
procedimento di dissaldatura della memoria stessa dalla piastra madre. Che viene spesso
affiancata da uno slot di espansione per memorie esterne (microSD).

Solitamente quanto sopra si verifica se il produttore del dispositivo è uno dei principali produttori
del mercato mondiale come Samsung, LG, Sony e tanti altri. Scelte diverse sono spesso effettuate
dai produttori minori, solitamente aziende anonime di origine cinese, che per poter abbattere i costi
di produzione e vendere il dispositivo ad un prezzo molto competitivo, possono progettare
l'architettura in maniera drasticamente diversa. Ad esempio per quanto riguarda la
memorizzazione del sistema operativo, può capitare che venga preferito l'utilizzo di MicroSD card
estraibili con una semplice pressione del dito al posto di memorie flash.

La seconda considerazione che quindi possiamo fare è che la difficoltà di accesso alla memoria
del cellulare varia enormemente in base del produttore. Non sempre saranno disponibili grandi
margini di manovra per acquisire in modo fisico o logico la memoria oggetto di analisi. Spesso sarà
necessario utilizzare delle procedure che ci daranno la possibilità di andar a leggere il contenuto di
partizioni accessibili solo con i permessi di root, senza smontare la memoria a stato solido,
accedendo direttamente dal cellulare;

                                                  6
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Il principale punto debole di questo tipo di procedure è che alterano, seppur in minima parte, il
contenuto della memoria di massa. Pertanto è auspicabile che qualora l'operatore agisca come
consulente tecnico d'ufficio richieda il regime di accertamento tecnico non ripetibile per l'attività di
acquisizione dei dati.

                                                   7
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Breve Panoramica sulle applicazioni Google
Nonostante sia molto comune che il sistema operativo venga più o meno modificato dal produttore
dello smartphone, è probabile che le applicazioni google siano presenti e possano costituire un
fonte di informazione primaria ai fini della perizia. Tra le varie, le due principali sono Gmail e
Market8.

Gmail

                   Ai fini investigativi si suggerisce di tenere conto della profondo legame tra la
                   gestione interna dello smartphone ed un account Google: molte delle funzionalità
                   interne (gestione dei contatti, calendario, google talk, google market, ecc.)
                   dipendo, o posso dipendere, da un account attivo sui sistemi Google.

                   Alcuni esempi:

    •   È necessario registrare un account Google per poter scaricare/acquistare le applicazioni
        dal market,

    •   I dati dei Contatti e del calendario posso essere salvati automaticamente anche nel profilo
        Google,

    •   se presente, l’applicazione di Google+ offre la possibilità di caricare automaticamente ogni
        foto scattata tramite la fotocamera interna in un album privato nel profilo di Google+
        corrispondente all'account Google predefinito9,

    •   la funzione Latitude, presente nell’applicazione Maps, si appoggia anch’essa al profilo
        Google registrato e memorizza la posizione del cellulare, check-in in locali particolari, ecc.
        che vengono trasmessi e registrati nel profilo online dove vengono conservati fino a quando

        non vengono eliminati dall'utente.

8
  Eccezione a quanto appena detto può essere considerato il netbook AC 100 di Toshiba: le applicazioni Google sono
assenti ed il market presente per le applicazioni è il Camangi Market (www.camangimarket.com).

9
http://www.google.com/support/mobile/bin/answer.py?answer=1304818

                                                         8
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Market

                         Similmente a quanto accade per il sistema iOS con l'applicazione App Store,
                         l’Android Market10 viene utilizzato per lo scaricamento e/o acquisto, di giochi
                         od applicazioni che permettono di aumentare le funzionalità dello smartphone.
                         Sempre tramite il Market è possibile ottenere gli aggiornamenti delle
                         applicazioni installate. 11

                      Oltre a questa modalità, il sistema operativo Android garantisce la possibilità
di installare applicazioni tramite market terzi (applibs, Amazon Android Market, ecc.) oppure
tramite la copia diretta dell’applicazione all’interno della memoria esterna.

Va sottolineato che le politiche adottate da Google nell’accettare un’applicazione all’interno del
market sono alquanto “indulgenti” ed hanno permesso nel corso degli ultimi mesi la presenza di
malware12 ed il successivo dilagare di diverse infezioni13. La diffusione di malware è stata
ostacolata sia tramite la pronta diffusione degli aggiornamenti da parte di google sia tramite la
disinstallazione remota dell'applicazione vettore dell'infezione14.

Il controllo sulle applicazioni è ancora minore, se non assente, nel caso di market paralleli. Sono
infatti numerosi i casi segnalati di malware di vario tipo presenti in questi canali che per ora
appaiono confinati nell'area cinese15.

L’effetto delle attività indicate qui sopra è stato limitato dalla non omogenea gestione, se presente,
del rilascio di aggiornamenti del firmware da parte dei produttori di smartphone o degli operatori
telefonici che distribuiscono smartphone Android. Ciò condiziona pesantemente la possibilità di
chiudere le falle di sicurezza nei singoli dispositivi e contribuisce al permanere e la diffusione del
malware. La presenza di ROM cooked gratuite16 permette di sopperire in parte a questo
“problema” ma la pratica di installare rom non originali viene spesso scoraggiata dai produttori dei
vari smarthphone.

10
   Il market è accessibile anche via web alla pagina https://market.android.com e permette l’installazione da Remoto
delle applicazioni.

11
   Le software house hanno inoltre la possibilità di limitare la disponibilità delle applicazioni stesse ad aree geografiche
o a gestori telefonici precisi sulla base delle proprie esigenze di vendita.

12
   Uno degli esempi più recenti di malware è Anserverbot (
http://www.csc.ncsu.edu/faculty/jiang/pubs/AnserverBot_Analysis.pdf )

13
     https://www.mylookout.com/_downloads/lookout-mobile-threat-report-2011.pdf

14
     http://arstechnica.com/gadgets/news/2011/03/google-using-remote-kill-switch-to-swat-android-malware-apps.ars

15
  http://www.pcworld.com/businesscenter/article/237196/mobile_malware_is_on_the_rise_but_theres_no_need_to_p
anic.html#tk.mod_rel

16
     Vedi ad esempio Cyanogen mod ( http://www.cyanogenmod.com/devices ) o Miui (http://miuiandroid.com/)

                                                             9
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Ipoteticamente le politiche di vendita prodotti e rilascio aggiornamenti potrebbero creare la
possibilità di attaccare precise aree geografiche o l'utenza di determinati operatori.

                                             10
Stefano Fratepietro & Sandro Rossetti - Android Forensics

La sicurezza del sistema operativo Android
Secondo uno studio di McAfee, una delle aziende leader per la produzione e distribuzioni di
sistemi antivirus, Android è risultato il sistema operativo per smartphone con più minacce legate a
malware e virus. I principali motivi di questa conclusione sono sostanzialmente tre:

     •   Diffusione ed utilizzo in scala globale,

     •   le applicazioni e l'utente finale possono accedere liberamente a tutte le risorse disponibili
         dello smartphone su cui è installato il sistema operativo

     •   Il più importante: l’utente finale può far funzionare qualsiasi applicativo, anche da lui stesso
         sviluppato, senza alcun controllo da parte di un entità superiore che ne autorizzi l’utilizzo o
         la diffusione17.

17
   Come avviene ad esempio per tutte le applicazioni installabili dall’Apple Store per i dispositivi iPhone, a meno che
non si utilizzi un iPhone jailbraked dove è possibile installare ed utilizzare market ed applicazioni non autorizzati
ufficialmente.

                                                           11
Stefano Fratepietro & Sandro Rossetti - Android Forensics

YAFFS2 file system
Il file system in uso nei dispositivi Android dalla versione 2.2 e precedenti, è YAFFS (Yet Another
Flash File System) creato da Charles Manning per l'azienda finlandese Aleph One e distribuito
sotto licenza GPL. Ad oggi è ufficialmente supportato dai seguenti sistemi operativi:

          Android                                                     pSOS

          Linux                                                       eCos

          Windows CE                                                  ThreadX

La seconda versione di questo file system garantisce un alto livello di integrità del dato scritto
all'interno della memoria e, allo stesso tempo, cerca di mantenere le performance di accesso ai
dati il più alte possibile 18. Rispetto alla prima versione del file system, le performance di scrittura di
un file sono state migliorate del 500% e le performance di cancellazione19 del 400%.

Dalla versione 2.3 di Android, gli sviluppatori hanno deciso di abbandonare questo file system
migrando ad EXT4.

EXT4 file system
Ext420 (fourth extended file system) è un file system journaled21 nato come miglioramento dell'Ext3
per aumentarne i limiti di immagazzinamento a 64 bit e migliorarne in parte le prestazioni. Per
quanto concerne la lettura di file, nonostante le performance siano inferiori a quelle di file system
concorrenti quali JFS, ReiserFS e XFS, Ext4 richiede meno risorse della CPU ed è più
performante nelle operazioni di scrittura.

Ad oggi è considerato più sicuro rispetto agli altri file system Linux in virtù della sua semplicità e
della maggior base di installazioni a scopo di test.

18
   Viene inoltre tenuto in considerazione che l'hardware è di tipo “portabile” ed il tipo di memoria nel 99% dei casi è a
stato solido.

19
     http://www.yaffs.net/yaffs-2-specification-and-development-notes.

20
   Ad oggi ext4 è supportato nativamente da qualsiasi distribuzione Linux, da Windows mediante il progetto Ext2fs e
dai principali applicativi, commerciali e non, per la Computer Forensics

21
   E’ una tecnologia utilizzata da molti file system moderni per preservare l'integrità dei dati da eventuali cadute di
tensione o spegnimenti improvvisi; si basa sul concetto di transazione, ogni scrittura su disco è interpretata dal file
system come una transazione.

                                                           12
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Le principali caratteristiche si possono riassumere in:

     •   File system di dimensioni fino a 1 exabyte (1000 petabyte)

     •   Rimozione del limite delle 32000 sotto directory

     •   Pre allocazione persistente, cioè le applicazioni hanno la possibilità di pre allocare spazio
         su disco

     •   Retro compatibilità, cioè poter eseguire il mount di un file system ex4 come se fosse un
         ext3 o ext2

     •   Aumento delle prestazioni per il controllo dell’integrità del file system (fsck)

     •   Deframmentazione in linea riducendo drasticamente la frammentazione del file system

Il supporto nativo ad ext4 è stato introdotto in Android nella versione 2.3 per le nuove
caratteristiche legate al miglioramento nella scrittura di file e alla loro garanzia di integrità. Tale
implementazione ha reso molto più semplici le operazioni di analisi del file system poiché, ad oggi,
non esistono strumenti software, commerciali o gratuiti, che supportino nativamente file system di
tipo YAFFS.

Policy di utilizzo delle memorie di massa
Nella maggior parte dei dispositivi Android, l’utente finale può decidere come utilizzare la memoria
di massa, interna ed esterna, che ha a disposizione. Generalmente tutte le applicazioni scaricate
ed installate dall’applicazione Market vengono salvate all’interno del file system della memoria
interna del dispositivo, ad eccezione di quelle applicazioni che hanno implementato la funzione di
scelta della memoria di massa in cui essere installate. Anche nel caso dei file prodotti dalle
applicazioni presenti, come ad esempio il salvataggio di allegati o di una foto scattata con il proprio
dispositivo, viene data la possibilità all’utente finale di decidere se salvarli nella memoria esterna o
in quella interna.

Accesso al file system del sistema operativo
Tutti i dispositivi Android delle principali case produttrici vengono distribuiti senza l’utenza di root
abilitata e senza la possibilità di accedere direttamente al file system dove è contenuto il sistema
operativo22. Esiste però la possibilità di disabilitare questo tipo di restrizioni per praticamente tutti i

22
   I dispositivi delle case produttrici minori di provenienza asiatica invece, in alcuni casi, non applicano questo tipo di
restrizione, facilitando in questo modo l’accesso alle informazioni di nostro interesse

                                                            13
Stefano Fratepietro & Sandro Rossetti - Android Forensics

dispositivi ad oggi in commercio, a patto che vengano fatte delle modifiche parzialmente invasive
al sistema stesso, alterandone in parte l’originalità. Tali operazioni, denominate “rooting”23, che
differiscono in base al dispositivo e alla versione del sistema operativo, vengono disincentivate dai
produttori degli smartphone tramite la perdita immediata della garanzia in caso di modifica che già
accennato in precedenza. Dal punto di vista forense, questo tipo di alterazione è strettamente
necessaria, per poter accedere alle informazioni di interesse come il registro delle chiamate, gli
sms, la cronologia della navigazione Internet e tutto ciò che una applicazione potrebbe scrivere
nella directory data.

23
     http://en.wikipedia.org/wiki/Rooting_(Android_OS)

                                                         14
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Samsung Galaxy S i9000– caratteristiche hardware
Lo smartphone oggetto di analisi è un Samsung Galaxy S i9000 con Android 2.3.3.

Samsung, come altre aziende produttrici di smartphone, ha deciso di personalizzare in modo
pesante l’architettura Android presente nei propri dispositivi.

Il file system in uso su questo dispositivo è una realizzazione proprietaria di Samsung dal nome
RFS (Robust FAT File System). Si tratta un file system FAT a cui è stato aggiunto un sistema di
journaling che lo renderebbe più sicuro, evitando la perdita di dati in caso di fault.

Tale implementazione in realtà è risultata piuttosto fallimentare dato che la maggioranza degli
utilizzatori del dispositivo hanno lamentato problemi di performance, legati proprio alle scarse
prestazioni che RFS fornirebbe in termini di velocità di lettura e scrittura.

Da un punto di vista forense, le partizioni di tipo RFS possono essere trattate come le VFAT.
Pertanto tutti i software per la Computer Forensic che supportano file system di tipo VFAT sono in
grado leggere un file system RFS24.

Di seguito vengono riportate le principali caratteristiche hardware del dispositivo.

Processori:

S5PC110 CPU, 45 nm 1 GHz ARM Cortex-A8
based

PowerVR SGX 540 GPU con supporto OpenGL
ES 1.1/2.0.

Memoria:

512 MB LPDDR2 RAM dedicata,

16-32 MB DRAM,

8GB di memoria a stato solido con la possibilità
di espansione fino a 32 GB mediante l’utilizzo di
una microSD card.

24
  È quindi possibile immaginare che tutte le distribuzioni Linux e i software commerciali per la Computer Forensic
sono già predisposti per attività di analisi per questo tipo di dispositivo.

                                                         15
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Procedura per il“rooting”del dispositivo
La procedura per ottenere il “rooting” di questo dispositivo consiste sostanzialmente nella modifica
del kernel dello smathphone tramite l'aggiunta di un programma denominato busybox25.

Questa procedura risulta essere la meno invasiva per il sistema e permette che la memoria non
venga ne sovrascritta ne cancellata, lasciando inalterato il contenuto delle partizioni di file system
che contengono i file prodotti dalle applicazioni e le applicazioni stesse.

Gli strumenti necessari per le operazioni di rooting del dispositivo Android sono:

      •    il software di sincronizzazione Samsung Keies installato ed avviato almeno una volta:
           http://www.samsungapps.com/about/onPc.as

      •    La versione di CF-ROOT26 adatta per il dispositivo sottoposto ad indagine (controllare il
           numero build andando su impostazioni -> info sul telefono) che è possibile scaricare dal
           sito degli sviluppatori XDA: http://forum.xda-
           developers.com/showpost.php?p=12651359&postcount=6

           Dopo aver procurarto tutto il necessario, possiamo proseguire con la procedura:

      •    Abilitare la modalità di debug usb dal menu impostazioni -> applicazioni -> sviluppo,
           permettendo in questo modo al telefono di trasmettere file tramite il collegamento usb.

      •    Spegnere il Galaxy S e riavviarlo in modalità aggiornamento/recovery premendo
           contemporaneamente il tasto centrale, tasto volume giù e il tasto accensione (dovrebbe
           comparire un segnale di pericolo che vi avvisa sulle potenziali azioni dannose); tale
           procedura permetterà di avviare il dispositivo in una modalità dedicata all'acquisizione di
           file per le operazioni di flash della memoria

      •    collegare il dispositivo tramite usb al pc ed avviare l'applicativo Odin; se il campo ID:COM è
           di colore giallo, lo smartphone è stato riconosciuto correttamente, in caso contrario fosse
           vuol dire che si è verificato un qualche problema con i driver del sistema operativo.27

      •    estrarre l’archivio CF-Root.zip, cliccare su PDA e selezionate il file scompattato

      •    tra le opzioni, selezionante solo Auto-Reboot e F. Reset Time; ma NON selezionate
           l'opzione Re-Partition: tale funzione cancellerà l'attuale kernel in uso.

      •    Fare clic su START, dopo circa 15 secondi comparirà la scritta PASS evidenziata di verde;
           da quel momento in poi il dispositivo si riavvierà in automatico con il sistema “rootato”.

25
     http://www.busybox.net/about.html

26
     File per la modifica del Kernel del dispositivo

27
     è necessario avviate Kies con un Galaxy S (preferibilmente non quello sottoposto ad analisi) collegato tramite usb e
dal menu strumenti cliccare su installa drive.

                                                           16
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Samsung Galaxy S - acquisizione fisica della memoria flash interna
L’attività di acquisizione fisica della memoria interna del dispositivo è sicuramente molto scomoda
e rischiosa se paragonata a quella indicata dalle Best practices adottate per l'acquisizione delle
memorie di massa "classiche" come un hard disk. L'unico metodo a disposizione è l'utilizzo del
comando dd da eseguire o mediante la tastiera virtuale del dispositivo (previa installazione di un
app come "emulatore terminale") o via rete utilizzando ssh (previa installazione di un applicativo
del tipo "demone ssh"); l'output del comando dd a sua volta potrà essere salvato soltanto
all'interno delle memorie riconosciute dal dispositivo: o la memoria flash interna o la memoria
micro sd card. Nel nostro caso si è scelto di salvare la bit stream image all'interno della sd card per
ragioni di comodità e portabilità della memoria esterna. Per ragioni architetturali, a differenza delle
memorie di massa classiche, non è possibile eseguire la clonazione dell'intera memoria in una
sola sessione, ma si è obbligati ad eseguire il comando dd per ogni partizione montata dal
dispositivo.

Per la visualizzazione di tutte le partizioni in uso dal sistema, è necessario eseguire il comando
mount.

Di seguito viene riportato l'output del comando.
rootfs on / type rootfs (ro,noatime,nodiratime) tmpfs on /dev type tmpfs (rw,noatime,nodiratime,mode=755)

devpts on /dev/pts type devpts (rw,noatime,nodiratime,mode=600)

proc on /proc type proc (rw,noatime,nodiratime)

sysfs on /sys type sysfs (rw,noatime,nodiratime)

none on /acct type cgroup (rw,relatime,cpuacct)

                                                                 17
Stefano Fratepietro & Sandro Rossetti - Android Forensics

tmpfs on /mnt/asec type tmpfs (rw,noatime,nodiratime,mode=755,gid=1000)

tmpfs on /mnt/obb type tmpfs (rw,noatime,nodiratime,mode=755,gid=1000)

none on /dev/cpuctl type cgroup (rw,relatime,cpu)

/dev/block/stl9 on /system type rfs (ro,noatime,nodiratime,vfat,log_off,check=no,gid/uid/rwx,iocharset=utf8)

/dev/block/stl3 on /efs type rfs (rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8)

/dev/block/mmcblk0p2 on /data type rfs (rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8)

/dev/block/stl10 on /dbdata type rfs (rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8)

/dev/block/stl11 on /cache type rfs (rw,nosuid,nodev,noatime,nodiratime,vfat,llw,check=no,gid/uid/rwx,iocharset=utf8)

/dev/block/stl6 on /mnt/.lfs type j4fs (rw,noatime,nodiratime)

/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,noatime,nodiratime)

/dev/block/vold/179:1 on /mnt/sdcard type vfat
(rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp
437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/vold/179:9 on /mnt/sdcard/external_sd type vfat
(rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp
437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/vold/179:9 on /mnt/secure/asec type vfat
(rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp
437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

tmpfs on /mnt/sdcard/external_sd/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)

/dev/block/dm-0 on /mnt/asec/android.androidVNC-2 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/dm-1 on /mnt/asec/net.androgames.level-2 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/dm-2 on /mnt/asec/punteroanull.app.androick-1 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/dm-3 on /mnt/asec/com.natenai.glowhockey-1 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/dm-4 on /mnt/asec/com.feelingtouch.bocce-1 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

/dev/block/dm-5 on /mnt/asec/com.fridgecat.android.atiltlite-1 type vfat
(ro,dirsync,nosuid,nodev,relatime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-
1,shortname=mixed,utf8,errors=remount-ro)

Prima di avviare l’acquisizione è necessario ottenere i permessi di root digitando il comando su.
Dopo qualche secondo il terminale chiederà se dare l’autorizzazione al programma per
l’esecuzione con i privilegi di amministratore. Una volta ottenuti i permessi, il comando da eseguire
per l'acquisizione è il classico dd configurato nel modo seguente:

                                       dd if=partizione of=/mnt/sdcard/nomefile.img

Pertanto nel caso in cui volessimo acquisire la partizione /system, il comando da utilizzare sarà

                                    dd if=/dev/block/stl9 of=/mnt/sdcard/system.img

                                                                   18
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Una volta terminata l'acquisizione sarà possibile accedere alla partizione clonata mediante il
comando mount e trattando la partizione RFS come se fosse una vfat, scrivendo il nostro comando
in questo modo:

                         mount -o loop -t vfat –o ro system.img /mnt/evidence/system

dove -o loop ci permette di eseguire il mount di immagini in formato bit stream, -t vfat dichiara che
il tipo di partizione che si desidera utilizzare è di tipo vfat, -o ro permette di accedere in sola lettura
alla partizione e /mnt/evidence/system è il percorso creato per far visualizzare il contenuto della
memoria acquisita all'interno della directory /mnt/evidence/system.

Samsung Galaxy S - acquisizione fisica della memoria esterna
A differenza della memoria flash interna del dispositivo, l'acquisizione della micro sd card può
essere eseguita seguendo le indicazioni delle best practices della Computer Forensics e non
necessità dell’accesso come root:

      1. estrarre la memoria,

      2. collegarla ad un write blocker28 o ad un sistema che abbia funzioni equivalenti29,

      3. calcolo dell'hash30 della memoria originale,

      4. Acquisizione tramite il programma che preferiamo31 e verifica che l'hash della memoria
         clonata coincidi con l'hash della memoria originale.

Samsung Galaxy S – Lavorare direttamente sullo smartphone
Nei casi di particolare urgenza, è possibile eseguire attività di ricerca dei file di interesse
direttamente dal touchscreen del dispositivo mediante l'utilizzo di alcune applicazioni scaricabili
gratuitamente dal Market.

Una applicazione molto utile per questo tipo di attività, pur non essendo un software creato
espressamente per la Computer Forensics, è File Manager HD32. Attivando la funzione "Root
Explorer" nelle impostazioni dell'applicativo, è possibile navigare nel file system anche nelle
directory protette come data, dbdata e system, ricercando i file di interesse mediante l'apposita
funzione di search e copiarli nella microSD card per una analisi più approfondita su una postazione
adibita all'analisi.

28
     Dispositivo usato per prevenire eventuali scritture su memorie di massa oggetto di analisi.

29
     Distribuzioni Linux per la Computer Forensic.

30
   L'hash è una funzione matematica univoca ed unidirezionale (cioè che non può essere invertita), che trasforma un
testo di qualunque lunghezza (input) in un testo di lunghezza fissa (output) relativamente limitata; in pratica,
applicando una funzione di hash a un file o ad un intero hard disk, si ottiene una sequenza alfanumerica, ad es. di 32
caratteri, che rappresenta una specie di "impronta digitale" del file, e viene detta valore di hash.

31
     Esempio FTK Imager per Windows, Guymager o dd per Linux

32
  https://market.android.com/details?id=com.rhmsoft.fm

                                                            19
Stefano Fratepietro & Sandro Rossetti - Android Forensics

Samsung Galaxy S – posizione ed analisi delle applicazioni e dei file di
   comune interesse
Generalmente una applicazione è composta dal suo file eseguibile con estensione .apk ed i suoi
file di configurazione o database.33

Le cartelle che più interessano l'operatore sono

/system/app/ : contiene le applicazioni di base fornite dal produttore del dispositivo.

/data/app/ : contiene le applicazioni che l’utente ha installato tramite l’applicativo Market.

/data/data/ : contiene i file di configurazione e i database delle applicazioni presenti.

/dbdata/database/ : qui sono presenti i database contenente gli sms, gli mms, la rubrica e tutto ciò
che riguarda la parte fonia.

L’analisi dei file di configurazione e dei database delle applicazioni può essere eseguita mediante
strumenti come editor di testo per le configurazioni testuali ed xml e con un nomale SQLite34 client
viewer per i database con estensione .db.

Per gli utenti di DEFT Linux35, dalla release 7 è presente SQLite Database Browser36 ed altri
applicativi utili per questo tipo di analisi.

Nell'esempio riportato nell'immagine, si è usato un SQLite client per aprire il database degli sms ed
mms contenuto in

/dbdata/database/com.android.providers.telephony/mmssms.db

33
   Samsung, e tutti gli altri produttori di dispositivi, ha preferito non modificare la porzione di memoria standard dove
raggruppare gli applicativi.

34
  Sqlite (http://www.sqlite.org) permette di creare una base di dati, comprese tabelle, query, form e report, in un
unico file.

35
  Sistema operativo ottimizzato per usi informatico forensi - www.deftlinux.net

36
     client SQLite per l'ambiente Linux

                                                          20
Stefano Fratepietro & Sandro Rossetti - Android Forensics

ed analizzarne il contenuto, esportandolo le risultanze nel formato desiderato (txt, xml o csv).

L’analisi delle tabelle di un data base SQLite può anche essere eseguita mediante l’utilizzo di
query37 sql senza l’utilizzo di strumenti dedicati38.

Con la richiesta:

                                                  Select * from sms

si visualizzano tutti i campi contenuti nella tabella sms.

Nel caso in cui interessi solo il contenuto di tutti gli sms, basterà scrivere la query:

                                                Select body from sms

Se volessimo visualizzare solamente tutti gli sms ricevuti dall’utenza +3912345 basterà scrivere la
query:

                                 Select * from sms where address= ‘+3912345’

Esempio di analisi sull'applicazione Google Maps

                      L’applicazione Google Maps39 è l'applicazione Google che offre sia la funzione di
                     Mappa sia quella di Navigatore con comandi vocali. L'applicazione, proprio come
                     l'omonima versione web, è in grado di mostrare il territorio sia in formato grafico 3d
                     che tramite fotografie satellitari, fornire le informazioni sul traffico locale, su locali e
                     servizi presenti nelle vicinanze e, tramite la funzione Latitude, fornire dati sulla
                     posizione dei contatti (anche via Checkin/checkout).

Le directory di interesse per l'operatore sono

/data/data/com.google.android.apps.maps/

sulla scheda di memoria SD

/mnt/sdcard/Android/data/com.google.android.apps.maps/

tra i database più                interessanti      da    analizzare      possiamo       certamente       annoverare
da_destination_history40

37
  Interrogazione di un database nel compiere determinate operazioni (selezione, inserimento, cancellazione dati, ecc..)
da eseguire in uno o più database; solitamente una query viene interpretata, dal linguaggio Sql per renderla più
comprensibile al DBMS

38
     Come ad esempio http://www.filesig.co.uk/sqlite-forensic-reporter.html

39
     Disponibile presso l'URL http://www.google.com/mobile/maps/

40
     Da notare che questo database SQLite NON sia dotato di estensione .db come gli altri database presenti.

                                                           21
Stefano Fratepietro & Sandro Rossetti - Android Forensics

questi sono solo due dei database utilizzati dall'applicazioni, ulteriori informazioni possono e
devono essere essere tratti dagli altri file presenti (es. se presente data_laywe_24).

Di grande interesse è comunque anche il contenuto della rispettiva cartella nella scheda SD: oltre
alla cache delle mappe scaricate dall'applicazione durante il suo utilizzo, sono presenti anche i
singoli file audio contenenti le indicazioni audio per l'utente. L'analisi dei time stamp41 dei file,
incrociata con i dati di navigazione contenuti all'interno della cartella principale possono fornire
informazioni precise su quando un determinato percorso sia stato suggerito e seguito.

Conclusione

In questo studio abbiamo potuto fornire una rapida panoramica di cosa possa presentare un’analisi
di un terminale Android.

Abbiamo accennato all’analisi preliminare di due tra le applicazioni più diffuse ed evitato di trattare,
oggetto di un prossimo paper, la possibilità e le modalità per ricostruire un database SQLite (es:
per il recupero di SMS cancellati) o lo studio di come funzionino altri applicativi diffusi (client
Facebook, Skype, QQ) .

Vogliamo sottolineare ancora una volta che l’analisi di un terminale Android deve essere affrontata
con particolare attenzione data l’estrema variabilità di terminali presenti sul mercato.

41
     http://en.wikipedia.org/wiki/Timestamp -

                                                  22
Puoi anche leggere