Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Android Forensics Analisi di un dispositivo Android utilizzando strumenti freeware ed open source Settembre 2011 Stefano Fratepietro & Sandro Rossetti
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
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
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
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
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
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
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
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