Since its public release in 2008, the Android operating system had an ex- plosive growth in market share. This fact, coupled with the openness with respect to third party applications made it the perfect target platform for mo- bile malware, that is malicious software targeting mobile platforms. Mobile malware is typically disguised as applications with hidden functions that aim to steal sensitive data from a user’s device. Mobile devices are in fact rich in sensitive data, such as personal contacts, messages, emails and geographical coordinates that are very common to find on smartphones. The ever-increasing number of applications that are published everyday make it challenging for security experts to protect Android users verifying the behaviour of unknown applications and identify new malware threats. In this scenario, the need of an automated analysis platform has always been present. Techniques for automated analysis are mainly divided in two categories, static and dynamic approaches. Static analysis is performed searching the applica- tion’s code for known patterns that may correspond to malicious behaviours. Dynamic analysis is instead the process of executing the application and trace specific behaviours as they happen at runtime. Currently existing solutions that allow tracing the behaviour of a generic application at runtime, thus offering a blackbox dynamic analysis environ- ment, are still limited in terms of compatibility with Android versions. Some of these solutions furthermore employ deep modifications to the underlying system that narrow the target reach only to very specific device versions, requiring a new environment to be compiled and built from source. Creating a new environment compiling it from the source code is not always possible, for instance, it is common for hardware manufacturer to only release prebuilt binaries without distributing the sources. In this scenario we propose a system able to generate blackbox dynamic analysis platforms for Android applications obtained altering existing envi- ronments rather than creating new ones. The modifications applied by the system target solely the Dalvik bytecode, allowing compatibility across mul- tiple Android versions. Behaviours are traced by means of instrumentation of Application Pro- gramming Interfaces (APIs) that are declared or invoked in the Dalvik byte- code present in the original environments. Instrumentation of the APIs is performed modifying the Dalvik bytecode and injecting instructions that will be executed at runtime when the target APIs are invoked. Those instructions have then to take actions such as logging each invocation. The environments to alter are supplied as Android system images, which represent the disk image for the partition that held system specific applications and libraries. A system image may also contain optimised Dalvik bytecode. To instrument this variant of bytecode, it will first be converted to regular bytecode translating optimised instructions in their unoptimised equivalent. The resulting instrumented system image can then be used with the Android emulator or flashed on physical devices. The developed system has been compared to existing state of the art so- lutions with a series of tests performed on a dataset of sample applications composed of both malware and benign applications. The main contributions of this work are: an automated instrumentation of Dalvik bytecode and its optimised variant, compatibility with possibly every Android version including physical devices, highly configurable customisation of the generated analysis platform and avoiding breaking the signature verifi- cation despite the bytecode modification.

Dal rilascio del primo dispositivo con sistema operativo Android ad oggi, questi dispositivi sono riusciti a raggiungere un’alta diffusione, spopolando come pi- attaforme mobili per smartphone e tablet. Questo fatto insieme all’apertura del sistema operativo verso applicazioni di terze parti, lo ha reso l’obiettivo perfetto per applicazioni malevole, note come mobile malware. L’elevatissi- mo numero di applicazioni rilasciate ogni giorno per questa piattaforma sta rendendo complicato il compito di proteggere l’utente del dispositivo da ap- plicazioni malevole, volte ad esempio a rubare dati personali di cui questi dispositivi sono particolamente ricchi. Per gestire tali volumi di applicazioni, esperti di sicurezza informatica si devono necessariamente avvalere di tecniche si analisi automatizzata. Tale analisi deve essere in grado di esaminare applicazioni sconosciute, a questo fine non si prestano tecniche di analisi white-box (a scatola aperta) che necessitano di informazioni pregresse, tipicamente il codice sorgente dell’applicazione. Gli approcci black-box (a scatola chiusa) disponibili si dividono tipicamente in tecniche statice e dinamiche, anche se esistono approcci ibridi. Analisi statica è un processo che analizza il solo codice dell’applicazione senza di fatto eseguirlo, cercando di individuare schemi noti che potrebbero ricondurre a comportamenti malevoli da parte dell’applicazione. Le tecniche di analisi dinamica prevedono invece l’esecuzione dell’applicazione in un ambiente, sia esso reale o virtualizzato, dove specifici comportamenti vengono individuati durante l’esecuzione stessa. Il contesto in cui questo lavoro si pone è la realizzazione un sistema black- box di analisi dinamica in grado di tracciare comportamenti come ad esem- pio l’invio di un SMS durante l’esecuzione di una o più applicazioni in un dispositivo Android, reale o emulato. Le soluzioni ora disponibili in questo contesto sono molteplici, ma spesso limitate a specifiche versioni del sistema operativo Android, o a specifici dis- positivi. Inoltre, molti degli approcci presenti nello stato dell’arte richiedono la compilazione da sorgente del sistema Android. Questo può non essere sempre possibile, si veda d’esempio il fatto che è consuetudine per le case produttri- ci di componenti hardware non rilasciare il codice sorgente, ma solo i binari compilati. Questo lavoro si propone come sistema di generazione automa- tizzata di ambienti di analisi black-box che si avvalgano di tecniche di anal- isi dinamica per tracciare determinati comportamenti durante l’esecuzione di un’applicazione Android. Il nostro sistema analizza intere immagini di sistema Android, andando ad instrumentarne il codice affinché un set personalizzabile di Application Program Interface (API ) sia monitorato durante l’esecuzione. Comportamenti possono essere poi identificati da singole invocazioni di API o da gruppi di esse. Le API da monitorare devono essere individuate dal sistema nel bytecode Dalvik, ovvero il codice che verrà eseguito dalla macchina virtuale Dalvik presente in Android. Questa macchina virtuale ha lo scopo di astrarre il codice da eseguire rispetto all’hardware presente sulla macchina. Per questo motivo, modificando il bytecode è possibile mantenere la compatibilità con potenzialmente tutte le versioni di Android. E’ possibile che una immagine di sistema contenga anche del bytecode Dalvik ottimizzato. Per instrumentare le API in questa variante del bytecode Dalvik è stato necessario introdurre al sistema un ulteriore fuzionalità, ovvero la conversione del bytecode ottimizzato nella sua versione non ottimizzata, andando a tradurre ogni istruzione ottimizzata nel suo equivalente. Il nostro sistema effettua una mappatura del codice in tutta l’immagine di sistema, cre- ando un grafo delle classi ed un grafo delle invocazioni. Questi due grafi verran- no poi utilizzati sia in fase di de-ottimizazione, sia in fase di instrumentazione delle API da tracciare. Il sistema da noi realizzato è stato poi utilizzato per generare un set di ambienti di analisi, che sono poi stati confrontati con soluzioni esistenti nello stato dell’arte. Abbiamo eseguito i confronti rispetto ad un set di applicazioni composto sia da applicazioni malevole, sia da applicazioni non malevole. Il confronto ha inoltre richiesto sia lo sviluppo di funzioni richiamate quando le API instrumentate vengono invocate, sia di un sistema di test automatico. Le funzioni realizzate hanno lo scopo di aggiungere qualora necessario al registro di log il fatto che una determinata API sia stata invocata. Il sistema di test automatico realizzato prevede l’avvio automatico di un set di emulatori Android, ciascuno dei quali esegue un’istanza di un ambiente instrumentato su cui viene installata ed eseguita un’applicazione. Per garan- tire l’uso di un sistema pulito, sono stati creati degli snapshot, ovvero delle istantanee di sistema da cui far partire un test. Per rendere i test più realistici, si è cercato di riprodurre l’interazione di un utente con il sistema su cui viene eseguito il test. L’interazione generata è stata resa deterministica a scopo di ripetibilità, e composta sia da eventi touch sullo schermo, sia da tasti premuti. I test effettuati hanno dimostrato che, seppur con differenze più o meno elevate dovute a variabili nell’ambiente sia interno che esterno, che gli ambi- enti instrumentati generati hanno un funzionamento simile a quello di sistemi presenti nello stato dell’arte.

DroidSaGe : an automated Android sandbox generator

LEVER, EROS
2012/2013

Abstract

Since its public release in 2008, the Android operating system had an ex- plosive growth in market share. This fact, coupled with the openness with respect to third party applications made it the perfect target platform for mo- bile malware, that is malicious software targeting mobile platforms. Mobile malware is typically disguised as applications with hidden functions that aim to steal sensitive data from a user’s device. Mobile devices are in fact rich in sensitive data, such as personal contacts, messages, emails and geographical coordinates that are very common to find on smartphones. The ever-increasing number of applications that are published everyday make it challenging for security experts to protect Android users verifying the behaviour of unknown applications and identify new malware threats. In this scenario, the need of an automated analysis platform has always been present. Techniques for automated analysis are mainly divided in two categories, static and dynamic approaches. Static analysis is performed searching the applica- tion’s code for known patterns that may correspond to malicious behaviours. Dynamic analysis is instead the process of executing the application and trace specific behaviours as they happen at runtime. Currently existing solutions that allow tracing the behaviour of a generic application at runtime, thus offering a blackbox dynamic analysis environ- ment, are still limited in terms of compatibility with Android versions. Some of these solutions furthermore employ deep modifications to the underlying system that narrow the target reach only to very specific device versions, requiring a new environment to be compiled and built from source. Creating a new environment compiling it from the source code is not always possible, for instance, it is common for hardware manufacturer to only release prebuilt binaries without distributing the sources. In this scenario we propose a system able to generate blackbox dynamic analysis platforms for Android applications obtained altering existing envi- ronments rather than creating new ones. The modifications applied by the system target solely the Dalvik bytecode, allowing compatibility across mul- tiple Android versions. Behaviours are traced by means of instrumentation of Application Pro- gramming Interfaces (APIs) that are declared or invoked in the Dalvik byte- code present in the original environments. Instrumentation of the APIs is performed modifying the Dalvik bytecode and injecting instructions that will be executed at runtime when the target APIs are invoked. Those instructions have then to take actions such as logging each invocation. The environments to alter are supplied as Android system images, which represent the disk image for the partition that held system specific applications and libraries. A system image may also contain optimised Dalvik bytecode. To instrument this variant of bytecode, it will first be converted to regular bytecode translating optimised instructions in their unoptimised equivalent. The resulting instrumented system image can then be used with the Android emulator or flashed on physical devices. The developed system has been compared to existing state of the art so- lutions with a series of tests performed on a dataset of sample applications composed of both malware and benign applications. The main contributions of this work are: an automated instrumentation of Dalvik bytecode and its optimised variant, compatibility with possibly every Android version including physical devices, highly configurable customisation of the generated analysis platform and avoiding breaking the signature verifi- cation despite the bytecode modification.
MAGGI, FEDERICO
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-dic-2013
2012/2013
Dal rilascio del primo dispositivo con sistema operativo Android ad oggi, questi dispositivi sono riusciti a raggiungere un’alta diffusione, spopolando come pi- attaforme mobili per smartphone e tablet. Questo fatto insieme all’apertura del sistema operativo verso applicazioni di terze parti, lo ha reso l’obiettivo perfetto per applicazioni malevole, note come mobile malware. L’elevatissi- mo numero di applicazioni rilasciate ogni giorno per questa piattaforma sta rendendo complicato il compito di proteggere l’utente del dispositivo da ap- plicazioni malevole, volte ad esempio a rubare dati personali di cui questi dispositivi sono particolamente ricchi. Per gestire tali volumi di applicazioni, esperti di sicurezza informatica si devono necessariamente avvalere di tecniche si analisi automatizzata. Tale analisi deve essere in grado di esaminare applicazioni sconosciute, a questo fine non si prestano tecniche di analisi white-box (a scatola aperta) che necessitano di informazioni pregresse, tipicamente il codice sorgente dell’applicazione. Gli approcci black-box (a scatola chiusa) disponibili si dividono tipicamente in tecniche statice e dinamiche, anche se esistono approcci ibridi. Analisi statica è un processo che analizza il solo codice dell’applicazione senza di fatto eseguirlo, cercando di individuare schemi noti che potrebbero ricondurre a comportamenti malevoli da parte dell’applicazione. Le tecniche di analisi dinamica prevedono invece l’esecuzione dell’applicazione in un ambiente, sia esso reale o virtualizzato, dove specifici comportamenti vengono individuati durante l’esecuzione stessa. Il contesto in cui questo lavoro si pone è la realizzazione un sistema black- box di analisi dinamica in grado di tracciare comportamenti come ad esem- pio l’invio di un SMS durante l’esecuzione di una o più applicazioni in un dispositivo Android, reale o emulato. Le soluzioni ora disponibili in questo contesto sono molteplici, ma spesso limitate a specifiche versioni del sistema operativo Android, o a specifici dis- positivi. Inoltre, molti degli approcci presenti nello stato dell’arte richiedono la compilazione da sorgente del sistema Android. Questo può non essere sempre possibile, si veda d’esempio il fatto che è consuetudine per le case produttri- ci di componenti hardware non rilasciare il codice sorgente, ma solo i binari compilati. Questo lavoro si propone come sistema di generazione automa- tizzata di ambienti di analisi black-box che si avvalgano di tecniche di anal- isi dinamica per tracciare determinati comportamenti durante l’esecuzione di un’applicazione Android. Il nostro sistema analizza intere immagini di sistema Android, andando ad instrumentarne il codice affinché un set personalizzabile di Application Program Interface (API ) sia monitorato durante l’esecuzione. Comportamenti possono essere poi identificati da singole invocazioni di API o da gruppi di esse. Le API da monitorare devono essere individuate dal sistema nel bytecode Dalvik, ovvero il codice che verrà eseguito dalla macchina virtuale Dalvik presente in Android. Questa macchina virtuale ha lo scopo di astrarre il codice da eseguire rispetto all’hardware presente sulla macchina. Per questo motivo, modificando il bytecode è possibile mantenere la compatibilità con potenzialmente tutte le versioni di Android. E’ possibile che una immagine di sistema contenga anche del bytecode Dalvik ottimizzato. Per instrumentare le API in questa variante del bytecode Dalvik è stato necessario introdurre al sistema un ulteriore fuzionalità, ovvero la conversione del bytecode ottimizzato nella sua versione non ottimizzata, andando a tradurre ogni istruzione ottimizzata nel suo equivalente. Il nostro sistema effettua una mappatura del codice in tutta l’immagine di sistema, cre- ando un grafo delle classi ed un grafo delle invocazioni. Questi due grafi verran- no poi utilizzati sia in fase di de-ottimizazione, sia in fase di instrumentazione delle API da tracciare. Il sistema da noi realizzato è stato poi utilizzato per generare un set di ambienti di analisi, che sono poi stati confrontati con soluzioni esistenti nello stato dell’arte. Abbiamo eseguito i confronti rispetto ad un set di applicazioni composto sia da applicazioni malevole, sia da applicazioni non malevole. Il confronto ha inoltre richiesto sia lo sviluppo di funzioni richiamate quando le API instrumentate vengono invocate, sia di un sistema di test automatico. Le funzioni realizzate hanno lo scopo di aggiungere qualora necessario al registro di log il fatto che una determinata API sia stata invocata. Il sistema di test automatico realizzato prevede l’avvio automatico di un set di emulatori Android, ciascuno dei quali esegue un’istanza di un ambiente instrumentato su cui viene installata ed eseguita un’applicazione. Per garan- tire l’uso di un sistema pulito, sono stati creati degli snapshot, ovvero delle istantanee di sistema da cui far partire un test. Per rendere i test più realistici, si è cercato di riprodurre l’interazione di un utente con il sistema su cui viene eseguito il test. L’interazione generata è stata resa deterministica a scopo di ripetibilità, e composta sia da eventi touch sullo schermo, sia da tasti premuti. I test effettuati hanno dimostrato che, seppur con differenze più o meno elevate dovute a variabili nell’ambiente sia interno che esterno, che gli ambi- enti instrumentati generati hanno un funzionamento simile a quello di sistemi presenti nello stato dell’arte.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2013_12_Lever.pdf

accessibile in internet per tutti

Descrizione: DroidSaGe: an automatic Android sandbox generator
Dimensione 2.99 MB
Formato Adobe PDF
2.99 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/88332