Introduction aux malwares sous Android cours PDF


Télécharger Introduction aux malwares sous Android cours PDF

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :



Résumé

Actuellement Android est le système mobile le plus visé par les malwares. Nous verrons au cours de ce document comment analyser une application Android (analyse statique et dynamique). Une initiation au framework Androguard sera aussi effectuée.

Sommaire

 

Table des illustrations

Figure 1 Augmentation des malwares sous Android 5

Figure 2 Zeus sur Mobile 6

Figure 3 Rootkit sous Android .. 6

Figure 4 Des malwares de plus en plus complexes . 6

Figure 5 Applications malveillantes intégrées dans des applications classiques . 7

Figure 6 Chargement d'un site malveillant .. 7

Figure 7 Infection par attaque Man in the Middle .. 7

Figure 8 Scan de l'application iCalendar avec virustotal 9

Figure 9 Contenu de l'application iCalendar . 10

Figure 10 Archive APK décompilée . 10

Figure 11 Décompilation de l'application 10

Figure 12 Application décompilée 10

Figure 13 Ligne suspecte dans le code source .. 11

Figure 14 Recherche des n° suspects 11 Figure 15 Appel de la fonction SendSMS . 11 Figure 16 Fonctionnement de l'application malveillante (source : ) . 12 Figure 17 Configuration des variables (DroidBox) . 13

Figure 18 Création d'une machine virtuelle Android . 13

Figure 19 Lancement de la machine virtuelle .. 13

Figure 20 Lancement de la machine virtuelle Android . 14

Figure 21 Lancement de DroidBox .. 14

Figure 22 Application exécutée dans notre machine virtuelle 14

Figure 23 Exploit pour devenir root .. 14

Figure 24 Accès à l'interface Broadcast Receiver . 15

Figure 25 Blocage du téléphone 15

Figure 26 Soumission d'un malware mobile sous Mobile-Sandbox 15

Figure 27 Résultat de l'échantillon soumis 16

Figure 28 Lancement du Framework Androguard . 17

Figure 29 Analyse d'une application 17

Figure 30 Vue générale de l'applications .. 18

Figure 31 Permissions demandées par l'application . 18

Figure 32 Obtenir les chaines de caractère .. 19

Figure 33 Comparer la ressemblance entre 2 applications 19

Figure 34 Obtenir les différences entre 2 applications . 19

Figure 35 Tester si une application est présente dans la base de signatures Androguard 20

Glossaire

Botnet

Ensemble de systèmes compromis reliés entre eux et administrables à distance

Man in the middle

Technique permettant d’intercepter les flux de communication entre 2 machines

Reverse Engineering

Procédé qui consiste à analyser le fonctionnement d’un programme

Rootkit

Ensemble de techniques permettant à un programme malveillant de masque son activité

Sandbox

Mécanisme qui permet l’exécution de logiciel avec moins de risques pour le système d’exploitation

Références

[SANS] Reverse Engineering of malware on Android

[LEXSI] Zeus In The MObile : Android

Framework Androguard

 

Android est le système d’exploitation développé par Google pour les smartphones, PDA (assistants numériques personnels de type Palm et Pocket PC) et terminaux mobiles.

L’avantage d’Android sur d’autres OS (type Apple) est que celui-ci est open-source, ce qui signifie qu’il est possible de consulter, modifier et de redistribuer le code source dans le cadre de licences libres. C’est actuellement le système d’exploitation le plus utilisé sur les périphériques mobiles.

Néanmoins cet avantage peut aussi vite se transformer en inconvénient, les cybercriminels ont vite compris le potentiel de développer des applications malveillantes. Actuellement Android est le système le plus visé par les malwares : les codes malveillants se multiplient depuis déjà quelques années (+472% annoncé ici depuis juillet 2011). 

Figure 1 Augmentation des malwares sous Android

Les raisons de ce déluge d’applications malveillantes sont à l’ordre de 2 principales : Android est open-source donc il est très simple de créer des applications pour cette plate-forme et c’est le système le plus utilisé actuellement.

Les applications malveillantes ont de multiples objectifs : envoi de sms vers un n° surtaxé, vol de données personnelles, botnet2… 

Figure 2 Exemple d'applications malveillantes sous Android

Les auteurs de malwares ont depuis longtemps compris le potentiel financier lié aux smartphones. Par exemple il existe déjà une version mobile du malware Zeus. Zeus est un cheval de troie permettant de capturer les informations bancaires des utilisateurs.

Figure 3 Zeus sur Mobile Il existe d’ailleurs déjà des rootkits5 sous Android.

Figure 4 Rootkit sous Android

Bien qu’encore beaucoup moins répandus et moins complexes que sur ordinateur, les malwares sous mobile deviendront de plus en plus complexes.

Figure 5 Des malwares de plus en plus complexes

Pour avoir plus d’informations sur les malwares sur Android, vous pouvez consulter les articles suivants :

-    Le top 5 des malwares sous Android

-   

-    dans nos téléphones android

Les applications malveillantes sont souvent des applications classiques qui peuvent fournir des vrais services mais qui effectuent aussi des actions à l’insu de l’utilisateur. Les applications malveillantes sont insérées dans des applications dites « classiques ».

Figure 6 Applications malveillantes intégrées dans des applications classiques

La sécurité du market d’android est renforcée depuis quelques mois avec l’application Bouncer qui scanne les applications et détecte celles qui sont malicieuses. Néanmoins hors du market, point de salut, il est d’ailleurs déconseillé d’installer des applications dont la source est inconnue, le risque d’infection étant très grand. Par contre, outre l’infection d’applications classiques, les applications malveillantes se diffusent aussi par le biais de sites mobiles. L’éditeur LookOut a mis la main sur un malware se diffusant par ce biais, et ce n’est que le début (redirection vers un site malveillant lors du chargement d’un site légitime). 



Figure 7 Chargement d'un site malveillant

Attention aussi aux attaques Man-In-The-Middle, qui ont déjà été détectées pour infecter les mobiles Android.

 Figure 8 Infection par attaque Man in the Middle

Toutes les attaques existantes sur les périphériques informatiques tels que les ordinateurs seront tôt ou tard portées sur les mobiles.

Pour ceux qui souhaiteraient télécharger des applications malicieuses sous Android afin de les analyser, les liens suivants proposent beaucoup d’échantillons :

-   

-    DatabaseAndroidMalwares

Nous allons voir maintenant comment analyser une application Android.

 

Par analyse statique, on entend reverse-engineering, c'est-à-dire la décompilation du programme afin de pouvoir analyser son code. Sous Android, les applications étant codées en Java, nous verrons que l’analyse s’en révèle facilitée.

Parmi les outils permettant l’analyse statique d’applications sous Android, nous pouvons citer :

-    IDA pro version 6.1: Désassembleur.

-    APKInspector: Outil en interface graphique permettant d’analyser une application Android. 

-    Dex2jar: Outil permettant de convertir une application android au format dex en fichier de class Java.

-    -gui: Application graphique permettant de lire les codes-sources des fichiers .class (java)

-    : Framework d’analyse d’applications Android.

-    : Décompilateur Java

-    : Permet de décompiler les fichiers JAVA au format DEX

-    : Assembleur / Désassembleur pour le format dex utilisé par dalvik. 

Nous allons voir l’utilisation de ces outils pour analyser une application malveillante :

iCalendar.

Nous allons analyser une application malveillante : iCalendar. Cette application est l’une des applications suspectes retirées du Google Market.

Un premier scan avec Virustotalnous confirme que cette application contient bien des instructions malicieuses :

Figure 9 Scan de l'application iCalendar avec virustotal

Les applications Google sont sous forme de fichier APK.


Un fichier APK est un fichier ZIP basé sur le format JAR. Il contient en général les fichiers suivants :

-    META-INF (dossier) o : le fichier manifeste ( ?) o : Le certificat de l’application o : la liste des ressources

-    Res (répertoire contenant les ressources non compilées o : Fichier manifeste additionnel (décrit le nom, la version, les droits d’accès, etc.)

o : le fichier class compilé dans le format dex o : Fichier précompilé des ressources 

Figure 10 Contenu de l'application iCalendar

La première étape est de décompresser l’archive APK. Une fois décompilée, il va falloir analyser le fichier .

Figure 11 Archive APK décompilée

Ce fichier est le résultat de la compilation du code-source. Pour le décompiler, nous utilisons l’application . Cet outil est un décompilateur Java.

Figure 12 Décompilation de l'application

 Une fois l’application décompilée, nous pouvons utiliser l’outil -GUIqui va nous permettre de naviguer dans le code-source.

Figure 13 Application décompilée

Première fonction suspecte : <SmsReceiver>. Si l’on analyse le code de cette fonction, on tombe sur les lignes suivantes :

Figure 14 Ligne suspecte dans le code source

Si l’on effectue une recherche sur Internet avec le n° indiqué (10661412004), nous découvrons qu’ils correspondent à un n° chinois surtaxé.

Figure 15 Recherche du n° suspect

Après traduction, nous obtenons ceci :

Ce numéro est chinois (n° surtaxé). Si nous cherchons à quel moment la fonction  est appelée, nous découvrons ceci :

Figure 16 Appel de la fonction SendSMS

Après 5 clics (<this.index == 5>), l’application utilise la fonction sendSms. Plus loin nous retrouvons encore une trace de cette fonction :

Avec ce code, un sms est envoyé vers un numéro chinois surtaxé. Le but de cette application est donc d’envoyer de manière masquée un sms vers un n° surtaxé après que l’utilisateur ait effectué 5 clics. Ci-dessous un schéma du fonctionnement de cette application.

Figure 17 Fonctionnement de l'application malveillante (source Voyons maintenant l’analyse dynamique.

L’analyse dynamique consiste à exécuter et à monitorer(surveiller) les actions exécutées par une application. 

-    : Outil de type Sandbox pour les applications Android. Permet l’analyse dynamique (monitoring d’API, détection des fuites de données, analyse préliminaire statique, etc.) 

-    : Sandbox pour applications mobile disponible en ligne. 

-    : Outils pour analyse dynamique d’applications Android.

Voyons un exemple d’analyse dynamique avec DroidBox.

Nous allons analyser dynamiquement l’application : RootExploit_Z4Mod(mot de passe : infected), application malicieuse qui essaye de devenir root au moyen d’un exploit.

La première étape pour utiliser DroidBox(un tutorial plus complet est disponible) et de configurer les variables :

Figure 18 Configuration des variables (DroidBox)  Ensuite on crée une nouvelle machine virtuelle Android.

 Figure 19 Création d'une machine virtuelle Android  Puis on lance cette machine :

Figure 20 Lancement de la machine virtuelle

Une fois la machine virtuelle lancée, on attend qu’elle démarre avant de lancer l’application que nous souhaitons analyser :

Figure 21 Lancement de la machine virtuelle Android

Puis nous lançons l’analyse de notre application avec le script <>.

Figure 22 Lancement de DroidBox L’application est exécutée dans notre machine virtuelle, nous constatons que c’est une application chinoise. :

Figure 23 Application exécutée dans notre machine virtuelle

Nous pouvons voir l’ensemble des actions monitorées.

Figure 24 Exploit pour devenir root

Ici nous constatons que l’application a lancé un certain nombre de commandes système afin de devenir root. Pour recevoir des <intents> (intentions), l’application implémente aussi l’interface BroadcastReceiver. Cette interface permet par exemple de gérer la réception de textos, etc.

Figure 25 Accès à l'interface Broadcast Receiver

L’analyse dynamique permet au moins de pouvoir analyser le comportement d’une application sur le téléphone mobile sans avoir à la décompiler. Avec le malware Zitmo (Zeus pour Mobile), on s’aperçoit avec DroidBox que le mobile se retrouve bloqué (demande de code d’activation) :

Figure 26 Blocage du téléphone

Il existe aussi une sandbox pour mobile accessible depuis Internet : . Analysons un échantillon du malware Geinimi.



Figure 27 Soumission d'un malware mobile sous Mobile-Sandbox

L’échantillon est décompilé et aussi envoyé à Virustotal afin d’y être scanné.

Figure 28 Résultat de l'échantillon soumis

Nous allons maintenant utiliser un framework qui permet de grandement faciliter l’analyse d’applications sous Android : Androguard.

Le framework Androguard

5 est un framework écrit en C++ et en python permettant d’analyser les applications Android. Il permet de faciliter le travail d’analyse (permissions, instructions dangereuses, similarité entre 2 applications, etc.). Il existe aussi ARE, une machine virtuelle contenant une ancienne version d’Androguard. Voyons quelques possibilités offertes par ce framework. Pour comprendre le fonctionnement et les commandes d’Androguard, je vous invite à consulter le tutorial disponible .

Nous allons analyser le malware Zitmo (Zeus in Mobile) avec Androguard. Une souche de l’application est disponible à cette adresse(password : infected).

Pour utiliser Androguard, nous commençons par lancer le script

Figure 29 Lancement du Framework Androguard Androguard a une syntaxe particulière. L’analyse de l’application débute par les commandes suivantes :

Figure 30 Analyse d'une application

Voyons quelques une des commandes proposées par Androguard.

Pour avoir une vue synthétique du contenu de l’application, nous pouvons utiliser la commande show (fichiers composant l’application, permissions, etc.)

 Figure 31 Vue générale de l'application analysée (permissions, fichiers, etc.)

Pour avoir les permissions demandées par l’application, on utilise la commande get_permissions.

Figure 32 Permissions demandées par l'application

Pour obtenir les chaines de caractères de l’application, on utilise la commande get_strings.

Figure 33 Obtenir les chaines de caractère

Ce script est très utile pour savoir si une application a été copiée (copyright) ou pour connaitre la puissance d’un moteur d’obfuscation (changer la forme d’un script mais pas le fond afin de rendre sa détection plus difficile).

On utilise pour cela le script <> dans le répertoire d’Androguard

Figure 34 Comparer la ressemblance entre 2 applications

 Ci-dessus, j’ai comparé la différence entre 2 versions du cheval de troie Zitmo (Zeus pour mobile). Nous pouvons aussi obtenir en utilisant l’argument –d les différences entre les 2 applications :

Figure 35 Obtenir les différences entre 2 applications

Androguard possède une base de données de malwares sous Mobile. Après différents tests, il s’avère qu’elle n’est pas trop tenue à jour… Enfin malgré tout, pour tester si une application est présente dans la base, on utilise le script <>

Figure 36 Tester si une application est présente dans la base de signatures Androguard

Avec l’argument –d, il est aussi possible de tester l’ensemble des applications présentes dans un répertoire.

Pour plus d’informations sur la base de données de malwares Android, je vous invite à consulter cet article : DatabaseAndroidMalwares.

Il existe de nombreuses autres scripts liés à Androguard, si vous désirez en savoir plus, je vous invite à consulter cet article.

De nombreuses recherches sont faites sur la sécurité d’Android, en voici quelques unes. 

Lors de la Defcon, la démonstration d’une backdoor installable sans permissions ni vulnérabilités a été effectuée.

L’article est consultable ici : Backdoor in android without permissions. 

La présentation au Defcon : These aren’t the permissions you’re looking for

L’article suivant vous permettra de créer un laboratoire pour analyser des malwares sous Android : Notes on Setting Up an Android Pentest Lab

Un article très intéressant sur comment transformer son Android afin d’effectuer des tests d’intrusion - L’article est disponible dans MISC n°57.

La sécurité d’Androidpar Nicolas Ruff (le modèle Android, auditer la sécurité d’une

application, etc.)

Il est évident que les malwares sous Android vont continuer de proliférer, du fait de l’ouverture d’Android ainsi que de son utilisation de plus en plus croissante. A partir de là, nous assisterons dans les prochains mois à de nouveaux outils de sécurité (anti-virus, parefeux) pour mobiles. Hors tout comme les malwares sur ordinateur, c’est avant tout une bonne hygiène et un ensemble de bonnes pratiques qui permettent de réellement assurer la sécurité de son téléphone mobile. L’Iphone n’est pas non plus épargné par les malwares mais l’AppStore ainsi que le système utilisé le rend moins accessibles qu’Android. Néanmoins Business is Business et si un jour les ventes de l’Iphone dépassent celles d’Android, la tendance actuelle s’inversera. (Aujourd’hui date du 06/07/2012)

Dans un prochain article, nous verrons comment écrire un malware sous Android.



[1] 2

[2]

[3] 5

[5]

[10]



20