Etude de malwares Android

Transcription

Etude de malwares Android
Etude de malwares Android
Rapport de projet industriel
Mastère Spécialisé Cybersécurité
Promotion 2014/2015
Béatrice BANNIER et Sylvain BALE
Encadré par Valérie VIET TRIEM TONG
et Jean-François LALANDE
TABLE DES MATIERES
1.
Contexte ..................................................................................................................................................... - 5 -
2.
Objectifs du projet ....................................................................................................................................... - 5 -
3.
Etat de l’art.................................................................................................................................................. - 5 -
4.
Etude des malwares BadNews et DroidKungFu ......................................................................................... - 6 4.1.
4.1.1.
Description ................................................................................................................................ - 6 -
4.1.2.
Analyse du malware .................................................................................................................. - 6 -
4.2.
DroidKungFu .................................................................................................................................... - 10 -
4.2.1.
Description .............................................................................................................................. - 10 -
4.2.2.
Installation ............................................................................................................................... - 10 -
4.2.3.
Déclenchement ....................................................................................................................... - 10 -
4.2.4.
Analyse du malware ................................................................................................................ - 10 -
4.3.
5.
Badnews ............................................................................................................................................ - 6 -
Conclusion ....................................................................................................................................... - 12 -
Etude de nouveaux malwares................................................................................................................... - 13 5.1.
Choix des nouveaux malwares à étudier ......................................................................................... - 13 -
5.2.
Simplocker ....................................................................................................................................... - 13 -
5.2.1.
Description .............................................................................................................................. - 13 -
5.2.2.
Installation ............................................................................................................................... - 13 -
5.2.3.
Déclenchement ....................................................................................................................... - 13 -
5.2.4.
Fonctionnement de TOR ......................................................................................................... - 13 -
5.2.5.
Analyse du malware ................................................................................................................ - 14 -
5.2.6.
Nouvelle version de Simplocker .............................................................................................. - 15 -
5.3.
PoisonCake...................................................................................................................................... - 16 -
5.3.1.
Description .............................................................................................................................. - 16 -
5.3.2.
Installation ............................................................................................................................... - 16 -
5.3.3.
Déclenchement ....................................................................................................................... - 16 -
5.3.4.
Analyse du malware ................................................................................................................ - 17 -
5.4.
MobiDash ......................................................................................................................................... - 19 -
5.4.1.
Description .............................................................................................................................. - 19 -
5.4.2.
Installation ............................................................................................................................... - 19 -
5.4.3.
Déclenchement ....................................................................................................................... - 19 -
5.4.4.
Analyse du malware ................................................................................................................ - 19 -
5.4.5.
Conclusion .............................................................................................................................. - 24 -
5.5.
ScarePackage.................................................................................................................................. - 25 -
5.5.1.
Description .............................................................................................................................. - 25 -
5.5.2.
Installation ............................................................................................................................... - 25 -2-
5.5.3.
Déclenchement ....................................................................................................................... - 25 -
5.5.4.
Analyse du malware ................................................................................................................ - 25 -
5.6.
5.6.1.
Description .............................................................................................................................. - 30 -
5.6.2.
Installation ............................................................................................................................... - 30 -
5.6.3.
Déclenchement ....................................................................................................................... - 31 -
5.6.4.
Analyse du malware ................................................................................................................ - 31 -
5.7.
6.
XsserCode4HK ................................................................................................................................ - 30 -
Cryptolocker ..................................................................................................................................... - 32 -
5.7.1.
Description .............................................................................................................................. - 32 -
5.7.2.
Installation ............................................................................................................................... - 32 -
5.7.3.
Déclenchement ....................................................................................................................... - 32 -
5.7.4.
Analyse du malware ................................................................................................................ - 32 -
Présentation de l’outil MalwareWebsite .................................................................................................... - 33 6.1.
Format des cartes d’identité ............................................................................................................. - 33 -
6.2.
L’outil Android Malware .................................................................................................................... - 34 -
7.
Problèmes rencontrés ............................................................................................................................... - 37 -
8.
Conclusion ................................................................................................................................................ - 37 -
9.
Bibliographie ............................................................................................................................................. - 38 -
10.
Références ........................................................................................................................................... - 38 -
Annexes ............................................................................................................................................................ - 39 Listes des principaux outils utilisés pour l’analyse des malwares ................................................................. - 39 Androguard ................................................................................................................................................... - 39 Prérequis .................................................................................................................................................. - 39 Installation................................................................................................................................................. - 39 Gephi ............................................................................................................................................................ - 40 Apktool .......................................................................................................................................................... - 40 Dex2jar et Jd-gui ........................................................................................................................................... - 40 ByteCodeViewer ........................................................................................................................................... - 40 Adb................................................................................................................................................................ - 41 AndroBlare .................................................................................................................................................... - 41 Xdot............................................................................................................................................................... - 41 Soot............................................................................................................................................................... - 41 -
-3-
REMERCIEMENTS
Nous adressons nos remerciements à, Mme Valérie VIET TRIEM TONG, enseignant-chercheur à Centrale Supélec, et à Jean-François LALANDE, enseignant-chercheur à l’IRISA, tous deux membres de l’équipe CIDRE, pour
nous avoir accueillis au sein de leur laboratoire. Nous souhaitons les remercier pour leur accessibilité et leurs
conseils prodigués tout au long de notre projet industriel.
Nous tenons également à remercier Radoniaina Andriatsimandetra Ratsisahanana, enseignant-chercheur à
Centrale Supélec, membre de l’équipe CIDRE, pour nous avoir fait partager son expérience sur l’analyse des
applications malveillantes sous Android.
-4-
1. Contexte
Ce projet s’inscrit dans la lignée de nombreux travaux réalisés par l’équipe CIDRE sur la détection
d’intrusion par suivi de flux d’information et sur l’étude de malware Android. En effet l’équipe CIDRE a développé
un outil de détection d’intrusion nommé Blare qui observe les flux d’information au sein d’un système
d’exploitation (linux, Android) et détecte en temps réel les flux d’information non autorisés par la politique de
sécurité. De plus l’équipe CIDRE a proposé une structure de données appelées System Flow Graph permettant
de caractériser une application selon les flux d’information qu’elle engendre. Ces outils se sont révélés pertinents
pour caractériser et détecter des malwares. Ils permettent en effet de visualiser des comportements malveillants
caractérisant un malware, comme par exemple l’écriture de fichiers dans des répertoires système ou sur la SD
card, des ouvertures de sockets vers des serveurs distants, des installations d’application non désirées… Il est
ainsi possible d’obtenir une signature comportementale du malware sous forme de graphe.
Les travaux réalisés jusqu’à présent ont montré qu’il était parfois difficile d’obtenir la signature comportementale des malwares car le malware ne se déclenche pas forcément immédiatement et de façon automatique.
Les auteurs de malware développent en effet leur code en essayant d’échapper aux outils d’analyse et installer
une application ne suffit pas à déclencher son exécution.
2. Objectifs du projet
Les objectifs du projet sont les suivants :
-
Comprendre les éléments qui déclenchent l’exécution des malwares
Etre capable de forcer leur exécution et donc de calculer des signatures comportementales
Mettre cette étude en regard du code décompilé des malwares
Définir un format de carte d’identité des malwares et rédiger ces cartes d’identité
Analyser des malwares récents afin d’alimenter une base de données de cartes d’identité de
malwares.
Etre précis dans le rapport d’analyse afin que ce travail puisse facilement être repris à la fin de
ce projet.
3. Etat de l’art
Lorsque nous avons commencé ce projet, Radoniaina Andriatsimandetra Ratsisahanana était en train de
finaliser sa thèse intitulée « Caractérisation et détection de malwares Android basées sur les flux d’information »
[1], réalisée au sein de l’équipe CIDRE. Dans le cadre de sa thèse, il a analysé plusieurs malwares Android et
étudié leur mode de déclenchement.
Un stage a aussi été effectué au sein de l’équipe du CIDRE par Adrien Brunelat. Il s’intitule « Déclenchement
d’applications malveillantes » [2]. Dans le cadre de ce stage, des méthodes de fuzzing ont été utilisées afin
d’essayer de déclencher de manière automatique le comportement malveillant des applications, en simulant des
appuis touche d’un utilisateur. Malheureusement ces techniques de fuzzing ne se sont pas révélées pertinentes
pour déclencher de façon automatique le comportement malveillant des malwares.
C’est pourquoi l’équipe CIDRE a décidé de revenir sur l’analyse manuelle des malwares, et d’étudier les différents modes de déclenchement de malwares.
-5-
4. Etude des malwares BadNews et DroidKungFu
Dans la première partie du projet, nous avons essayé de reproduire l’analyse des malwares BadNews et
DroidKungFu que Radoniaina Andriatsimandetra Ratsisahanana avait réalisé dans sa thèse [1], afin de prendre
en main les différents outils liés à l’analyse de malware.
4.1. Badnews
4.1.1.
Description
BadNews est un malware de 2013. Le comportement de BadNews est dicté par un serveur C&C distant. Lorsque l’utilisateur se connecte, le serveur lui envoie une commande à exécuter et attend sa
prochaine connexion pour lui indiquer la prochaine action à effectuer (installation d’une application,
téléchargement de fichiers, ajout de raccourcis…).
4.1.2.
Analyse du malware
Pour analyser le malware nous avons suivi la méthode décrite dans [1].
1) Apktool permet de désassembler l’apk et de trouver les différents points d’entrée de l’application
dans le fichier AndroidManifest.xml
Apktool if ru.blogspot.playsib.savageknife.apk
Apktool d ru.blogspot.playsib.savageknife.apk
L’AndroidManifest.xml indique que l’application possède 5 composants : 2 Activity, 1 Service et 2
types de Receiver.
2) Nous avons ensuite tenté d’utiliser Androguard pour désassembler et décompiler le malware.
Nous avons passé beaucoup de temps à installer cet outil sur une distribution Debian. Sans
succès (réussite avec une version Ubuntu). Nous avons finalement utilisé 2 outils très faciles à
prendre en main : dex2jar pour la conversion des .dex en .jar, puis jd-gui pour décompiler le
malware.
Sh dex2jar.sh ru.blogspot.playsib.savageknife.apk
Jd-gui ru.blogspot.playsib.savageknife.apk
3) L’analyse du code des composants Receiver montre que la fonction SendRequest est la fonction
qui tente une connexion au serveur C&C, qui lit la réponse du serveur, et qui lance l’action malveillante en fonction de la réponse.
-6-
Figure 1 Extrait de code « sendRequest »
4) Nous avons ensuite cherché la fonction appelante de SendRequest.
Comme indiqué dans la thèse [1], des graphes ont été générés au format gexf grâce à l’outil androgexf. Puis ils ont été visualisés avec l’outil Gephi.
Androgexf.py –i ru.blogspot.playsib.savageknife.apk –o ru.blogspot.playsib.savageknife.gexf
Gephi ru.blogspot.playsib.savageknife.gexf
Voici le type de graphe obtenu :
Figure 2 Graphe Gexf visualisé avec Gephi
-7-
Nous avons trouvé la prise en main de l’outil Gephi fastidieuse. Nous sommes finalement revenus à une recherche manuelle des fonctions avec l’outil jd-gui.
5) Une partie du code n’est pas décompilée par l’outil jd-gui (obfuscation du code), l’arbre d’appel
de la fonction SendRequest peut cependant être retrouvé.
A la réception d’un intent, dont le champ « update » vaut TRUE, le service AdvService appelle la
fonction startUpdateThread.
Figure 3 Extrait du code "startUpdateThread "
Un nouveau thread est créé et la fonction getUpdate est appelée.
Cette fonction n’est pas décompilée mais on peut quand même voir que cette fonction appelle la
fonction sendRequest qui déclenche le comportement malveillant.
Nous arrivons donc à la même conclusion que dans [1] : pour déclencher le malware il faut envoyer
un intent avec le champ « update » à 1 au service AdvService. L’outil adb permet d’envoyer cette
commande :
Adb shell
Am startservice ru.blogspot.playsib.savageknife/com.mobidisplay.advertsv1.AdvService –ez update 1
Malheureusement lorsque nous avons pris un log Blare, nous n’avons pas observé le comportement
malveillant décrit dans [1].
Le graphe montre seulement que le service AdvService est démarré.
-8-
6) Nous avons ensuite utilisé l’outil Soot (cf Annexes) afin d’instrumenter le code et pouvoir visualiser le graphe d’appel des fonctions, mais de façon dynamique. Nous avons utilisé logcat pour
prendre la trace. Le résultat obtenu est le suivant :
Figure 4 Extrait de log Logcat
Cette trace nous a permis de voir que la fonction startUpdateThread est appelée, puis la fonction
getUpdate et enfin la fonction SendRequest. Dans cette fonction, une connexion au serveur C&C est
tentée (URLConnection.connect). Le malware se met en attente d’une réponse (InputStreamReader,
JsonTokener) et finalement la connexion est fermée. Dans l’analyse de la fonction SendRequest vue
plus haut, la seule façon de passer par ces fonctions est de recevoir de la part du serveur le status
« ok ». Ce qui ne déclenche pas de comportement malveillant.
7) Dans un navigateur Web, nous avons essayé de nous connecter au serveur C&C et voici ce que
nous avons obtenu :
Figure 5 Réponse du serveur C&C
Ceci a permis de confirmer l’hypothèse que le serveur C&C n’est plus en service, et n’envoie plus de
commandes à distance.
-9-
4.2. DroidKungFu
4.2.1.
Description
DroidKungFu est un malware de 2011. Le comportement malveillant consiste à installer une application à l’insu de l’utilisateur.
4.2.2.
Installation
L’installation est classique.
4.2.3.
Déclenchement
Le comportement malveillant du malware ne se déclenche pas à son installation. Il faut attendre, parfois jusqu’à plusieurs heures, avant de voir le malware se déclencher.
4.2.4.
Analyse du malware
Nous avons suivi la même méthode que pour BadNews.
1) L’analyse de l’AndroidManifest.xml montre que l’application contient une Activity, 1 Service, 1
Receiver.
2) Les outils dex2jar et jd-gui permettent de désassembler et décompiler l’application. Le code malveillant du malware est stocké dans cpLegacyRes : il copie l’application com.google.ssearch.apk
dans le répertoire /system/app du téléphone, puis il installe cette application.
Figure 6 Extrait de code "cpLegacyRes"
3) Nous cherchons ensuite l’arbre d’appel de cette fonction. CpLegacyRes est appelée par checkPermission.
Figure 7 Extrait de code "checkPermission"
- 10 -
Cette fonction est elle-même appelée par doSearchReport:
Figure 8 Extrait de code "doSearchReport"
Nous voyons dans cette fonction que le malware essaiera par la suite de se connecter au serveur
http://search.gongfu-android.com:8511/search/sayhi.php. Ce serveur est lui aussi indisponible.
La fonction doSearchReport est appelée par le service SearchService.
Figure 9 Extrait de code sur le déclenchement du malware
La fonction doSearchReport est appelée seulement dans le cas où (l2 –l1 > 14400000 c'est-à-dire l2 – l1
> 4h). l2 représente le temps courant en ms et l1 est le temps indiqué dans le fichier sstimestamp.xml.
La valeur par défaut est à 0. Cela signifie que le malware attend pendant 4h avant de déclencher son
comportement malveillant.
- 11 -
On peut raccourcir la durée avant le déclenchement du malware en modifiant le fichier sstimestamp.xml
et en mettant la valeur 1 par exemple. Dans ce cas le malware se déclenchera immédiatement. Pour ce
faire voici les commandes à lancer :
Adb shell
Adb pull /data/data/com.allen.mp/shared_prefs/sstimestamp.xml .
Modification de la valeur l1 à 1
adb push sstimestamp.xml /data/data/com.allen.mp/shared_prefs/sstimestamp.xml
Nous avons écrit un script permettant de déclencher automatiquement le malware :
droidkungfu_trigger.sh
Le graphe Blare nous permet de visualiser l’écriture dans le fichier sstimestamp.xml ainsi que
l’installation de l’application com.google.ssearch.apk.
Figure 10 Représentation graphique AndroBlare au format Gpickle
4.3. Conclusion
Cette première étape a été importante pour découvrir et prendre en main les différents outils et voir les
avantages et inconvénients de chacun. De plus nous avons été confrontés au problème des serveurs C&C
indisponibles, problème que nous allons de nouveau rencontrer dans la suite du projet. C’est pourquoi nous
avons dû choisir, dans la suite du projet, des malwares relativement récents afin que les serveurs soient
toujours en service.
Un autre problème que nous avons rencontré est l’obfuscation du code qui complique l’analyse.
- 12 -
5. Etude de nouveaux malwares
5.1. Choix des nouveaux malwares à étudier
La seconde partie du projet a consisté à étudier des malwares récents présents sous Contagio afin de sélectionner ceux que nous allions approfondir. Les critères pour sélectionner un malware ont été les suivants :
- Dans un premier temps, nous avons évité les malwares dont le code est complètement obfusqué. Par
obfuscation, nous entendons que certaines parties du code ne peuvent pas être désassemblées ou
alors que toutes les fonctions et les noms de variable ont été remplacés par des noms aléatoires.
- Ne disposant pas de carte SIM nous avons écarté les malwares dont le comportement malveillant consiste en l’envoi de SMS surtaxé ou d’appels frauduleux.
- Nous avons sélectionné en priorité des malwares pour lesquels on peut trouver quelques informations
sur Internet en anglais (nous avons écarté ceux pour lesquels les informations étaient uniquement en
russe ou en chinois).
5.2. Simplocker
5.2.1.
Description
SimpLocker fait partie de la famille des ransomwares. Suite à l’installation d’une application infectée,
le malware chiffre les données stockées sur la SDcard et demande une rançon de 21 dollars en
échange du décryptage des fichiers. Selon Ondred Vlcek, directeur technique d’AVAST Software,
SimpLocker est le premier logiciel de rançon qui chiffre véritablement les fichiers. La plupart des
autres ransomwares ne font que menacer de le faire. Le téléphone est ensuite bloqué. Aucune autre
application ne peut être lancée, même après un reboot du téléphone. Si la rançon n’est pas payée, le
message affiché sur l’écran indique que la clé de chiffrement sera détruite.
Lien sous contagio :
http://contagiominidump.blogspot.fr/2014/06/simplocker-android-file-encrypting-tor.html
5.2.2.
Installation
L’installation est classique.
5.2.3.
Déclenchement
Il n’y a pas problème de déclenchement. Le comportement malveillant se déclenche lorsqu’on lance
l’application.
5.2.4.
Fonctionnement de TOR
Le réseau TOR permet de transférer des paquets IP de manière anonyme à un serveur dont l’identité
est cachée. Cette pratique est facilement reconnaissable par le format de l’URL qui a une extension
en *.onion. Dans notre cas bien précis, lorsque le client tente de transférer des données au serveur
distant, il choisit son itinéraire pour accéder au serveur en sélectionnant des nœuds intermédiaires.
Chaque nœud possède un couple de clés privée / publique qui permettent de mettre en œuvre un algorithme asymétrique. Ainsi, le client chiffre le paquet IP avec la clé du serveur distant puis chiffre le
résultat avec la clé publique du nœud qui précède le serveur. Et ainsi de suite jusqu’à atteindre le
premier nœud au plus proche du client. Après cette phase de construction, chaque nœud du circuit
dispose d'une clef secrète qui lui est propre et ne connaît que son prédécesseur et son successeur
au sein du circuit.
- 13 -
5.2.5.
Analyse du malware
Afin d’analyser le comportement de ce ransomware, nous avons procédé à une analyse statique du
code à l’aide de l’outil JD-GUI. En parallèle, une analyse dynamique avec AndroBlare nous a permis
de corroborer nos résultats.
Le graphe AndroBlare ci-dessous montre l’exécution de quatre processus indépendants :
-
Libprivoxy.so qui permet de lister les nœuds TOR;
Tor qui permet d’accéder au réseau TOR;
rg.simplelocker : représente le cœur du malware (graphique, séquencement des tâches);
Thread-93 : un clône (fork) du processus rq.simplocker.
Au lancement de l’application, le processus principal rg.simplocker lance successivement les tâches
MainService3, MainService4 et MainService5.
MainService3
Ce service est exécuté périodiquement toutes les trois minutes et a pour objectif de démarrer le service TOR (TOR_SERVICE). L’extrait du code ci-dessous montre le démarrage du service tor.
Figure 11 Extrait de code, démarrage de TOR_SERVICE
Pour corroborer les propos ci-dessus, une analyse du graphe Blare permet de montrer la connexion
au service TOR et à ses nœuds intermédiaires sous forme de sockets.
Figure 12 Représentation graphique du processus TOR (Gpickle)
Une connexion à TOR est initiée et plus particulièrement à une adresse URL au format *.onion.
Le malware contacte un serveur mandataire (privoxy) qui va permettre de construire son itinéraire
pour atteindre le serveur distant. Cette action est très bien illustrée dans l’extrait du graphe Blare suivant.
- 14 -
Figure 13 Représentation graphique de la connexion à privoxy (Gpickle)
Par la suite, le malware utilisera cette adresse et les nœuds identifiés pour envoyer les données personnelles du mobile comme l’IMEI, la version de l’OS, le modèle du téléphone avec la classe TorSender.
MainService4 :
Ce service vérifie périodiquement toutes les secondes si l’utilisateur a payé la rançon demandée
avec la variable DISABLE_LOCKER. Si ce n’est pas le cas, il informe la victime que ses données
personnelles ont été chiffrées.
MainService5
Il s’agit du service de chiffrement/déchiffrement. Dans le cas où la victime n’a pas payé la rançon, un
algorithme de chiffrement symétrique (AES) opère sur chaque fichier dont l’extension est définie avec
la fonction encrypt() présentée dans l’extrait du code source ci-dessous. La clé secrète est définie par
la variable cipher_password. Les fichiers ciblés sont écrasés et renommés en *.enc.
Figure 14 Extrait de code du chiffrement des fichiers
5.2.6.
Nouvelle version de Simplocker
Depuis le mois de Février 2015 une nouvelle version de Simplocker est apparue. Dans cette nouvelle
version la clé de chiffrement n’est plus codée en dur dans l’application. Les clés de chiffrement générées sont maintenant uniques. Il n’est alors plus possible de fournir, aux personnes dont le téléphone
- 15 -
a été infecté par Simplocker, un outil pour déchiffrer leurs fichiers personnels comme c’était le cas
avec la première version de Simplocker. En effet, des entreprises, comme Avast par exemple, fournissent gratuitement une application pour éliminer Simplocker et déchiffrer les fichiers verrouillés pris
en otage. Avec cette nouvelle version ce n’est plus possible.
5.3. PoisonCake
5.3.1.
Description
Ce malware appartient à la famille des bootkits. De manière générale, il est introduit dans des mises
à jour non-officielles de systèmes d’exploitation. Une fois que la partition du système d’exploitation
est activée, l’exécutable correspondant (*.ELF) créé des services et démarre des actions malveillantes comme l’envoi et l’interception de SMS, l’envoi de SMS surtaxés et la fuite d’informations confidentielles (IMEI, IMSI, etc.) via une connexion à un serveur distant. Ces actions sont commanditées
par le Core Framework du malware et exécutées par des plugins dédiés.
5.3.2.
Installation
Le site de référence « Contagio » propose ce malware en téléchargement
libre (http://contagiominidump.blogspot.fr/2015/01/android-poisoncake-sample.html). Il suffit de télécharger l’archive qui contient l’exécutable dm.elf avec le mot de passe : infected666x (x représente
le dernier caractère de l’empreinte cryptographique du binaire téléchargé).
Une fois téléchargé, il suffit de suivre les étapes suivantes :
Connectez le mobile en usb et obtenez un shell à l’aide d’ADB (Android Debug Bridge):
$ adb shell
$ mkdir /data/.3q
$ exit
$ adb push dm /data/.3q
Remarque : l’exécutable à charger dans le mobile ne doit pas contenir d’extension. Il ne faut pas oublier de supprimer l’extension elf avant l’exécution de la commande push.
5.3.3.
Déclenchement
Pour déclencher ce malware, il est nécessaire de démarrer l’exécutable dm chargé préalablement
dans le mobile de la manière suivante.
$ adb shell
$ cd /data/.3q
$ ./dm
- 16 -
5.3.4.
Analyse du malware
L'analyse de ce malware est complexifiée par l'absence de code source disponible du fait de la nature du malware (bootkit). En effet, l’analyse est largement inspirée du site
http://blog.avlyun.com/2014/12/1978/poisoncake-in-the-romenglish-version/.
Le graphe AndroBlare ci-dessous montre le comportement dynamique du malware.
Figure 15 Représentation graphique de l'exécution de PoisonCake (Gpickle)
L'exécution de ce malware est définie en trois parties :



L'initialisation ;
L'exécution du cœur de l'application ;
L’exécution des plugins dédiés.
1. Initialisation
Dm.elf est exécuté en premier. Son rôle est de démarrer un thread avec le cœur du malware : reactor.dex.jar. Dm.elf décompresse l'archive reactor.dex.jar puis l'exécute. Sur le graphe AndroBlare, cidessus, on peut facilement s'apercevoir que le processus dm est le centre névralgique du malware.
- 17 -
2. L'exécution du cœur du malware
Reactor.dex.jar est le cœur du malware. Il contient des définitions de classes, des métadonnées et
des plugins chiffrés. Le thread correspondant va ensuite déchiffrer et installer des plugins, au nombre
de huit, afin de mener à bien des actions malveillantes.
Voici la liste des plugins chiffrés installés :















/data/usr/plugins/ant-1.0.5.tjj
/data/usr/plugins/ant.impl-1.0.5.tjj
/data/usr/plugins/bean-1.0.6.tjj
/data/usr/plugins/bean.impl-1.0.6.tjj
/data/usr/plugins/honeybee-1.0.5.tjj
/data/usr/plugins/honeybee.impl-1.0.5.tjj
/data/usr/plugins/moon-1.0.5.tjj
/data/usr/plugins/moon.impl-1.0.5.tjj
/data/usr/plugins/pig-1.0.5.tjj
/data/usr/plugins/pig.impl-1.0.5.tjj
/data/usr/plugins/spider-1.0.5.tjj
/data/usr/plugins/spider.impl-1.0.6.tjj
/data/usr/plugins/star-1.0.5.tjj
/data/usr/plugins/sun-1.0.5.tjj
/data/usr/plugins/sun.impl-1.0.5.tjj
3. Exécution des plugins
Chaque plugin a un rôle bien particulier. Ensemble, ils représentent la maîtrise d'œuvre du malware,
les constituants de la porte dérobée installée sur le mobile. Un résumé succinct des rôles de chacun
des plugins est présenté ci-après en s'inspirant du site de référence (avlyun).
Plugin
Description
Ant
Lecture et écriture dans la base de
données mini.db
Bean
Fuite d'informations du téléphone (IMEI,
IMSI, numéro de téléphone), envoi et
interception de SMS
Honeybee
Récupération et envoi de logs chiffrés
(type AES)
moon
Supervision de services
pig
Mise à jour et installation de plugins.
Information sauvée dans la base de
données pmd5.db
- 18 -
spider
Téléchargement de fichiers
star
Envoi de SMS surtaxé
sun
Connexion réseau /internet
Figure 16 Description des plugins
Pour ce malware, une étude plus approfondie aurait pu être menée pour comprendre précisément le
fonctionnement de l’exécutable elf au moyen de l’outil de désassemblage IDA. Déjà, une première
décompilation a permis d’identifier la création du thread en relation avec reactor.dex.jar.
Une autre approche concerne les plugins présents dans /data/usr. Une analyse précise des codes
source de ces archives permettrait de comprendre précisément le caractère malveillant de chacun
d’eux.
5.4. MobiDash
5.4.1.
Description
Mobidash fait partie de la famille des adwares. Il est téléchargé avec le jeu de cartes Durak depuis le
site de Google Play. A première vue le jeu ne semble pas être malveillant. Mais après plusieurs jours
(plusieurs semaines parfois), à chaque fois que le téléphone se déverrouille, une nouvelle publicité
apparaît. Les publicités indiquent que le téléphone est infecté, qu’il a une version Android obsolète,
etc… Ces informations sont complètement fausses, cependant elles incitent l’utilisateur à prendre
des actions (cliquer sur des liens qui redirigent vers des pages potentiellement malveillantes).
Lien vers contagio : http://contagiominidump.blogspot.fr/2015/02/mobidash-android-adwaresamples.html.
5.4.2.
Installation
L’installation est classique.
5.4.3.
Déclenchement
Il faut lancer l’application, l’arrêter, rebooter le téléphone et rester connecté au réseau. Après plusieurs jours (semaines) le comportement malveillant se déclenche. Une méthode proposée infra
permet d’accélérer le déclenchement.
5.4.4.
Analyse du malware
L’application Durak se connecte à plusieurs serveurs légitimes pour récupérer des publicités qu’elle
affiche au démarrage du jeu. Il faut pouvoir distinguer dans le code, les connexions à des serveurs
de publicité légitimes de ceux illégitimes. Ce n’est pas chose facile.
Une autre caractéristique de ce malware est que le comportement malveillant ne se déclenche pas
tout de suite. Il faut donc rechercher dans le code un mécanisme qui permet d’attendre « un certain
temps » avant de lancer une connexion à un serveur.
Le malware DroidKungFu, qui a été présenté plus haut, possède lui aussi un déclenchement malveillant retardé. Nous nous sommes inspirés du malware DroidKungFu pour rechercher ce qui pourrait
ressembler à une attente avant un déclenchement d’un code malveillant.
- 19 -
Nous avons donc recherché dans le code la récupération du temps courant « System.currentTimeMillis » et la comparaison avec une valeur en dur, dans le package mobidash.
Dans le code mobi.dash.overapp, nous avons trouvé la fonction suivante :
Figure 17 Extrait de code de la fonction de déclenchement du comportement malveillant
Cette fonction récupère 2 valeurs et en déduit le temps l1. Ce temps est ensuite comparé au temps
courant. Si le temps courant est supérieur à l1 alors la fonction startAds est lancée.
La valeur getWaitStartTime est récupérée de cette façon :
Figure 18 Extrait de code de la fonction getWaitStartTime
Cette
valeur
est
récupérée
dans
le
fichier
xml
situé
/data/data/com.cardgame.durak/shared_prefs/com.cardgame.durak_preferences.xml :
sous
Figure 19 Extrait du fichier de préférences
Cette valeur correspond au temps auquel l’application a été installée.
La deuxième valeur (AdsExtrasCore.getOverappStartDelaySeconds) est récupérée comme suit :
Figure 20 Extrait de code de la fonction applyConfig
- 20 -
La valeur overappStartDelaySeconds est récupérée dans le fichier res/raw/ads_settings.json (lorsque
l’on décompile l’apk avec apktool).
Figure 21 Extrait du fichier ads_settings.json
On peut aussi retrouver cette valeur dans
/data/data/com.cardgame.durak/shared_prefs/com.cardgame.durak_preferences.xml :
Le calcul de l1 revient donc à prendre le temps courant après le reboot du téléphone et à ajouter 24
heures. Le comportement malveillant se déclenchera donc 24h après le premier reboot du téléphone.
Pour vérifier notre hypothèse nous avons modifié la valeur du champ overappStartDelaySeconds
dans le fichier com.cardgame.durak_preferences.xml. Nous l’avons passée de 86400 à 0.
Après un reboot du téléphone le comportement malveillant s’est déclenché.
Figure 22 Captures d'écran du comportement malveillant
Pour comparaison, voici à quoi ressemblent les publicités légitimes qui s’affichent dans le jeu :
- 21 -
Figure 23 Capture d'écran du comportement normal
Pour aller plus loin, nous avons analysé le code pour trouver le graphe d’appel de la fonction CheckForCompleted. Voici ce que l’on observe :
-
Après l’installation et le lancement de l’application, lorsque le téléphone est relancé, l’intent
BOOT_COMPLETED est reçu par le receiver DisplayCheckRebootReceiver par la fonction onReceive().
Dans cette fonction deux fonctions peuvent être appelées : soit AdsOverappRunner.ping, soit la
fonction sendAlive.
Figure 24 Extrait du code de la fonction onReceive
Tant que le malware ne s’est pas déclenché, la fonction AdsOverappRunner.ping est appelée (la
stringExtra n’est pas initialisée).
- 22 -
Figure 25 Extrait du code de la fonction ping
-
La fonction AdsOverappRunneur.ping() va d’abord appeler la fonction startWait. Dans cette fonction, l’état de AdsOverappRunner passe à « Waiting » et des alarmes sont initialisées afin de relancer la fonction ping à intervalles réguliers (setupPingAlarms et setupPingAlarmOne). Ces
alarmes permettent de renvoyer un intent afin de relancer la fonction ping.
Figure 26 Extrait du code de la fonction startWait
-
Au prochain ping la fonction checkForCompleted sera appelée. C’est dans cette fonction que le
malware va lire le fichier xml afin de savoir à quelle date le comportement malveillant devra se
déclencher.
La fonction chechForCompleted est rappelée à chaque ping tant que le temps courant est inférieur au temps de déclenchement du malware (24h dans le malware analysé, immédiatement
avec les modifications faites dans le fichier xml).
Quand le temps est expiré, checkForCompleted appelle la fonction startAds.
Figure 27 Extrait du code de la fonction startAds
- 23 -
-
La fonction startAds appelle la fonction sendAlive. Cette fonction se rappellera régulièrement en
s’envoyant un intent avec le champ Extra positionné. La fonction ping ne sera alors plus appelée.
Figure 28 Extrait de code de la fonction sendAlive
Graphe Blare :
Figure 29 Représentation graphique du comportement malveillant (Gpickle)
5.4.5.
Conclusion
Le comportement malveillant ne peut pas être distingué d’un comportement légitime dans le log Blare
(pas de différences d’un point de vue système entre la connexion à un serveur de publicité légitime
de celle à un serveur malveillant). Donc il faudra voir s’il est intéressant ou pas de continuer l’analyse
de ce malware.
- 24 -
5.5. ScarePackage
5.5.1.
Description
ScarePackage fait partie de la famille des ransomwares. L’application qui contient ce malware est
une application qui se fait passer pour l’application Adobe Flash (même icône). Lorsque le malware
se déclenche, il affiche un message simulant un message du FBI (utilisation du logo du FBI). Ce
message est fait pour effrayer l’utilisateur afin qu’il paie une rançon. Il lui indique que le téléphone a
été bloqué car un contenu illégal a été détecté sur le mobile.
Figure 30 Capture d’écran scarepackage
Sur l’échantillon que nous avons analysé, l’IMEI du téléphone est aussi affiché (nous n’avons pas pu
faire de capture d’écran car le téléphone est bloqué).
Lorsque l’utilisateur clique sur le bouton « Proceed », seule action possible, un nouveau message
s’affiche. Il indique que l’utilisateur doit payer 300 dollars afin de débloquer son téléphone et d’éviter
d’autres sanctions pénales. L’utilisateur doit alors acheter une carte GreenDot MoneyCard (carte
prépayée) chargée avec 300 dollars et entrer le code de la carte.
Le mobile est alors complètement bloqué, l’utilisateur ne peut plus lancer aucune autre application,
même après un reboot du téléphone.
Lien vers Contagio : http://contagiominidump.blogspot.fr/2014/07/android-scarepackageransomware.html
5.5.2.
Installation
L’installation de l’application est classique.
5.5.3.
Déclenchement
Le déclenchement du malware est automatique. Il se déclenche lorsqu’on lance l’application.
5.5.4.
Analyse du malware
Lorsque l’application est lancée, l’activité MainActivity est démarrée.
- 25 -
Figure 31 Extrait de code de la fonction MainActivity
Le malware va d’abord récupérer l’IMEI du téléphone afin de l’afficher sur l’écran. Ensuite il va lancer
un nouveau thread dans lequel il va faire appel à la méthodeRequestSender.sendIncrement().
Figure 32 Extrait de code de la fonction sendIncrement
- 26 -
Dans cette fonction le malware va d’abord appeler la fonction checkFlagFile. La fonction retourne
VRAI si elle arrive à créer le fichier droid.syst sur la SD card (ou si le fichier existe déjà). Cette création de fichier sur la SD card est visible sur le graphe BLARE. La plupart du temps cette fonction retourne VRAI.
Si la fonction retourne FAUX le malware va tenter de se connecter au serveur « server_address ».
Pour retrouver une version « lisible » de la chaîne « server_address », il faut aller regarder dans le fichier Strings.xml présent dans le répertoire « res ». Pour ce faire, voici la manipulation à effectuer :
Désassembler le malware avec apktool :
Apktool if com.android.locker.apk
Apktool d com.android.locker.apk.
On récupère ainsi dans le répertoire res le fichier Strings.xml.
Figure 33 Extrait du fichier Strings.xml
Le serveur auquel le malware essaie de se connecter est donc
http://itsecurityteamsinc.su/flash/api.php?id=1.
Lorsque l’on entre cette URL dans un navigateur voici le message qui apparaît :
Figure 34 Capture d’écran du serveur C&C malveillant
Il est donc fort probable que le malware n’arrive pas à se connecter à ce serveur.
Ensuite le code onCreate de la MainActivity continue de s’exécuter.
Le constructeur Encryption est appelé et laisse apparaître une nouvelle URL :
- 27 -
le
serveur
Un service BackGround est lancé. Ce service empêche toutes nouvelles applications de démarrer.
Si l’utilisateur clique sur le bouton (seule action possible), un Intent est envoyé à l’activité SenderActivity.
Sur réception de l’intent, l’activité va d’abord récupérer le numéro de la carte MoneyPack que
l’utilisateur a rentré sur le clavier.
Figure 35 Capture d’écran avec le comportement malveillant
Ensuite lorsque l’utilisateur clique sur le bouton « Unlock Device Now », le malware essaie de se
connecter à un serveur afin de lui envoyer le numéro de la carte.
Puis un nouveau thread est créé et la fonction sendCode est appelée.
- 28 -
Figure 36 Extrait du code de la fonction sendCode
Dans cette fonction le malware va d’abord essayer de se connecter au serveur
http://itsecurityteamsinc.su/flash/api.php?id=1 et s’il n’a pas de réponse il va appeler la fonction SenderActivity.debug. Dans cette fonction le malware va alors essayer de se connecter au serveur
http://comdcompdebug.500mb.net/api33/api.php vu plus haut. Cette connexion échoue car le serveur n’est plus en service.
Dans le graphe Blare, peu de choses sont observables dans la mesure où la connexion aux différents serveurs échoue.
La seule chose que l’on puisse observer dans le graphe, qui soit spécifique à ce malware, est la
création du fichier droid.syst sur la SDcard (fait uniquement la première fois que le malware se
lance).
Figure 37 Représentation graphique du comportement malveillant (Gpickle)
- 29 -
5.6. XsserCode4HK
5.6.1.
Description
Xsser mRat fait partie de la famille des spywares. Des manifestants à Hong Kong sont visés par une
campagne de social engineering dont le but est d’infecter leurs mobiles Android afin de les surveiller.
Ils reçoivent un lien vers cette application malveillante via un message reçu sur WhatsApp. Quand
les victimes cliquent sur le lien une application est téléchargée. Cette application demande alors une
longue liste d’autorisation à l’utilisateur. Quand il ouvre cette application, une boîte de dialogue apparaît avec le message « Application updates, please click to install ». Si l’utilisateur accepte,
l’application est mise à jour et les fonctions d’espionnage sont activées. Le malware est alors capable
d’extraire les informations personnelles (carnet d’adresse, SMS, log des appels, coordonnées gps,
images, fichiers, emails, historique de navigation, numéro de téléphone, numéro de SIM, version de
l’OS), et de les envoyer à un serveur. Il peut aussi télécharger des fichiers sur le mobile (à partir d’un
serveur distant), passer des appels, exécuter des commandes sur le téléphone, effacer des fichiers,
enregistrer des conversations.
Lien vers Contagio : http://contagiominidump.blogspot.fr/2014/10/xsser-mrat-android-and-iossamples.html.
5.6.2.
Installation
L’installation de ce malware a été assez compliquée. Lorsque nous avons lancé l’application malveillante, le message qui indique que l’application va être mise à jour est bien apparu. Par contre la mise
à jour ne s’est pas bien passée. Un message d’erreur est apparu à l’écran : « System Thread. Application non installée. Un package portant le même nom accompagné d’une signature est déjà installée ». En fait l’application contient un bug. Comme le message l’indique, elle essaie d’installer une
deuxième application qui porte le même nom que la première mais avec une signature différente.
Une modification de la première application est nécessaire afin de lui donner un nom différent de la
deuxième.
Voici les étapes à réaliser pour effectuer cette modification :
o
Désassembler l’apk avec l’outil apktool
Apktool if code4hk.apk
Apktool d code4hk.apk
o
Modifier l’AndroidManifest.xml afin de changer le nom de la première application (ici on a
changé le nom com.v1 en com.v2)
o
Réassembler l’apk
Apktool b code4hk code4hk.apk
o
Signer l’application avec jarsigner après avoir généré des clés
- 30 -
Keytool –genkey –v keystore chemin_stockage_cle –alias nom_alias –keyalg RSA –keysize 2048 –
validity 1000
Jarsigner –verbose –sigalg SHA1withRSA –digestalg SHA1 –keystore chemin_stockage_cle –
storepass mot_passe –keypass mot_passe code4hk.apk nom_alias
o
5.6.3.
Installer la nouvelle application code4hk.apk. Le message d’erreur n’apparaît plus. La 2ème
application s’installe correctement
Déclenchement
Le comportement malveillant du malware ne s’est pas déclenché car les serveurs sont indisponibles.
5.6.4.
Analyse du malware
L’analyse du malware n’a pas pu être menée à son terme car le désassemblage et la décompilation
avec dex2jar et jd-gui n’a pas fonctionné. Seul le désassemblage en smali avec apktool a été possible.
L’utilisation de Soot, afin d’identifier les différentes fonctions appelées lors de l’exécution du malware,
a échoué.
Les différents serveurs auxquels le malware essaie de se connecter sont indisponibles
(221.226.58.202, 61.36.11.75, 112.124.47.157).
Voici cependant les quelques informations que nous avons pu obtenir en analysant le fichier MainActivity.smali.
Figure 38 Extrait du code en smali de la fonction MainActivity
Nous pouvons voir qu’un fichier temp.apk est copié sur la SD card dans un répertoire « /scard/.qq »
créé par le malware. C’est ce fichier qui est utilisé pour l’installation de la seconde application.
Sur le graphe Blare, nous pouvons observer le processus lié à l’application com.v2 et celui lié à
l’application com.v1, ainsi que la création du fichier temp.apk. Malheureusement il est difficile de
mettre une image sur laquelle on visualise les 2 processus. Il vaut mieux le visualiser directement
avec l’outil MalwareWebiste (cf §6).
Etant donné que les serveurs sont indisponibles, nous avons décidé de ne pas aller plus loin sur ce
malware.
- 31 -
5.7. Cryptolocker
5.7.1.
Description
Ce malware infecte le téléphone Android lorsque l'utilisateur navigue sur le Web. Il croit télécharger
une application honnête (un lecteur vidéo par exemple) mais l'utilisateur obtient une application indésirable sur son appareil. Une fois installé, ce logiciel de rançon accède au réseau, télécharge le message de la rançon qui est affiché sur l'appareil en fonction de la position GPS de l'utilisateur. A ce
stade, la victime ne peut pas échapper au message de la rançon qui l'accuse d'avoir consulté et/ou
téléchargé des contenus inappropriés et illégaux. Le téléphone est ainsi bloqué, les applications et
les données personnelles s'y trouvent chiffrées. Selon le message officiel, le seul moyen de rétablir
l'état sain du téléphone est de payer la rançon demandée (300$) au moyen de (faux) formulaires de
paiement (MoneyPak). Mais voilà, même en payant cette rançon, la victime n'est pas certaine de retrouver l'état initial de son mobile.
Lien vers contagio : http://contagiominidump.blogspot.fr/2014/05/android-kolercryptolockerransomware.html
5.7.2.
Installation
L’installation est classique.
5.7.3.
Déclenchement
Au lancement de l’application Badoink, un message d’erreur appparaît : « l’application a rencontré
une erreur ». Il semble que l’application tente de se connecter à internet et elle échoue. Il est probable que le serveur vers lequel elle tente de se connecter est inexistant. Ceci dit, si on coupe
l’accès à internet (WIFI OFF), l’application bloque le téléphone. En définitive, le malware s’est partiellement déclenché en bloquant l’écran du téléphone.
5.7.4.
Analyse du malware
L’analyse est limitée puisque le malware s’est partiellement déclenché.
- 32 -
Figure 39 Représentation graphique de l'exécution de Cryptolocker
6. Présentation de l’outil MalwareWebsite
Un aspect important de ce projet était de définir un format de carte d’identité pour les malwares, et de trouver un mécanisme/un outil pour sauvegarder ces cartes d’identité.
Ce travail s’est fait en collaboration avec nos encadrants.
L’outil MalwareWebiste a été développé par Jean-François Lalande. Notre travail a ensuite été d’alimenter cette
base de données de cartes d’identité à partir de nos travaux.
6.1. Format des cartes d’identité
Les cartes d’identité doivent être rédigées en anglais. Les informations que nous avons jugées pertinentes
de voir apparaître dans la carte d’identité sont les suivantes :
-
-
Un nom générique pour le malware.
Cette étape, qui peut paraître simple, n’est pas forcément évidente car d’un antivirus à un autre, d’un
site Internet à un autre, un même malware peut être appelé par des noms différents (ou l’inverse, un
même nom peut être utilisé pour 2 malwares qui ne font pas la même chose).
Une description courte du malware.
Le but est de pouvoir rapidement identifier si le malware est un ransomware, un spyware, une fuite
d’informations personnelles, une installation d’application à l’insu de l’utilisateur…
La date à laquelle un échantillon a été déposé sur Contagio.
Une explication détaillée du malware avec des liens vers le code décompilé.
Des liens vers les sites Internet sur lesquels on peut trouver des informations pertinentes.
La méthode pour déclencher le comportement malveillant du malware.
Quelques caractéristiques sur le malware (le malware nécessite-t-il une connexion à un serveur distant, est-il polymorphique, métamorphique, utilise-t-il des techniques cryptographiques ?).
Le nom des échantillons étudiés.
- 33 -
Pour chaque malware, il est possible d’avoir eu accès à différents échantillons. Dans ce cas, pour chaque
échantillon, nous verrons apparaître dans la carte d’identité :
-
Le graphe Blare associé à l’exécution du malware
Une explication du graphe
6.2. L’outil Android Malware
L’outil se présente comme suit :
Figure 40 Capture d'écran de l'outil MalwareWebsite
On voit apparaître la liste des malwares étudiés. En cliquant sur le lien du malware, une page spécifique à ce
malware s’ouvre.
- 34 -
Figure 41 Capture d'écran de l'outil MalwareWebsite
Pour chaque échantillon du malware, on peut visualiser le graphe Blare. On peut alors choisir une visualisation
avec ou sans system_server.
- 35 -
Figure 42 Capture d'écran de l'outil MalwareWebsite
Pour ajouter une nouvelle carte d’identité, voici la procédure à suivre :
- Dans le répertoire malware-base, créer un nouveau répertoire portant le nom du malware. Y déposer
l’échantillon étudié (formats supportés pour l’instant *.apk et *.elf).
- Dans malware-infos, créer un nouveau répertoire du même nom que précédemment. Y créer un fichier
info.json avec le même format que les autres malwares. Remplir la carte d’identité.
- Si un graphe Blare est disponible, il faut créer un autre .json. Ce fichier doit porter le même nom que
l’échantillon qui a été déposé dans malware-base (mais avec l’extension .json). Remplir le fichier.
- Déposer les graphes Blare au format .dot et .gpickle dans le répertoire. Ils doivent eux aussi avoir le
même nom que l’échantillon.
- S’il est disponible, déposer dans le répertoire le fichier .jar (issu de la décompilation avec l’outil dex2jar
et jd-gui).
- Ensuite se placer dans le répertoire au même niveau que le répertoire malware-infos et lancer la commande :
Python2.7 src/gen.py –malwarebase ../malware-base/
Les fichiers html sont ainsi générés.
- 36 -
7. Problèmes rencontrés
Lors de ce projet nous avons été confrontés à différents problèmes.
Le premier a été la prise en main des différents outils. Nous avons passé énormément de temps à installer l’outil
Androguard sur une distribution Debian, pour finalement ne pas l’utiliser au cours de ce projet. Il en est de même
pour la prise en main de l’outil Gephi (que nous avons finalement abandonné pour l’outil xdot).
En ce qui concerne le choix des malwares à étudier, nous avons dû nous limiter à des malwares dont le comportement malveillant ne consiste pas en l’envoi de SMS surtaxés ou d’appels frauduleux. En effet nous n’avions
pas de carte SIM à notre disposition.
De plus, dans plusieurs malwares, le comportement malveillant consistait en la connexion du mobile à un serveur
C&C qui devait ensuite indiquer au mobile l’action malveillante à accomplir. Dans de nombreux cas, les serveurs
C&C n’étaient plus en service et donc le comportement malveillant du malware ne pouvait pas se déclencher.
Une autre difficulté a été parfois de trouver un nom générique pour les malwares étudiés. En effet les malwares
n’ont pas toujours le même nom sur les différents sites internet et chez les différents vendeurs d’antivirus. Si
nous prenons l’exemple du malware que nous avons appelé Koler, il est parfois appelé Cryptolocker. Pourtant le
malware Koler ne crypte pas les fichiers de l’utilisateur alors que Cryptolocker est un malware qui lui crypte les
fichiers.
Enfin, nous avons été confrontés à un problème de nature « éthique». Certains malwares, plus précisément les
ransomwares, essaient de choquer les utilisateurs du mobile infecté, afin que les personnes paient la rançon.
Pour ce faire, ils affichent parfois sur l’écran de l’utilisateur des images pédopornographiques. Nous l’avons appris à nos dépens lors du téléchargement d’un des malwares. Nous avons ainsi téléchargé sans le savoir sur
notre PC personnel une série de photos pédopornographiques.
8. Conclusion
Tous deux issus du monde de la téléphonie mobile sur la partie modem, nous n’avions que très peu de connaissances sur les applications Android au début de ce projet. Après une période de prise en main des outils et de
découvertes des différents travaux réalisés sur le sujet par l’équipe CIDRE, nous sommes rentrés pleinement
dans le sujet. Un des principaux objectifs du projet était d’analyser des malwares Android pour comprendre leur
mode de déclenchement. Même si ce point a été abordé durant ce projet, notre principale activité s’est plutôt
focalisée sur l’analyse de nouveaux malwares (indépendamment de leur mode de déclenchement) afin de comprendre leur fonctionnement, de pouvoir dresser leur carte d’identité et d’essayer d’obtenir leur signature comportementale avec l’outil AndroBlare. Notre plus grande difficulté a été de trouver des malwares pertinents et intéressants à analyser. En effet nous avons souvent été confrontés à des problèmes d’installation des applications
malveillantes et à des problèmes de connexion aux serveurs C&C (souvent les serveurs n’étaient plus en service). Le travail effectué dans le cadre de ce projet a permis de commencer à alimenter une base de cartes
d’identité de malwares, que l’on peut visualiser sous la forme d’une page internet grâce à l’outil malware website.
- 37 -
9. Bibliographie
[1] « Caractérisation et détection de malwares Android basées sur les flux d’information » Radoniaina Andriatsimandetra Ratsisahanana (mémoire de thèse)
[2] « Déclenchement d’applications malveillantes », rapport de stage d’Adrien Brunelat
[3] « Dissecting Android Malware: Characterization and Evolution », Yajin Zhou, Xuxian Jiang
[4] « Instrumenting Android and Java Applications as Easy as abc », Steven Arzt, Siegfried Rasthofer and Eric
Bodden
[5] Cours Android
http://www.univ-orleans.fr/lifo/Members/Jean-Francois.Lalande/enseignement/android/cours-android.pdf, JeanFrançois Lalande
[6] « Sécurité des systèmes embarqués Android», cours de Jean-François Lalande
10. Références
http://contagiominidump.blogspot.fr/
https://www.blare-ids.org/
http://www.cnetfrance.fr/news/le-malware-badnews-contamine-9-millions-de-terminaux-android-39789660.htm
https://blog.lookout.com/blog/2014/07/16/scarepakage/
http://www.malware.lu/articles/2014/09/29/analysis-of-code4hk.html
http://blog.avlyun.com/2014/12/1978/poisoncake-in-the-romenglish-version/
http://habrahabr.ru/post/249765/
http://securehoney.net/blog/how-to-dissect-android-simplelocker-ransomware.html#.VQvy3Y6G98E
- 38 -
Annexes
Listes des principaux outils utilisés pour l’analyse des malwares
Androguard
Androguard est un outil de décompilation de binaires Android (APK). Développé en langage Python, il est
largement utilisé en analyse statique pour comprendre le fonctionnement d’une application Android. Ainsi, cet
outil génère des graphes d’appel des fonctions d’une application donnée. Son installation est simple mais nécessite des packages préinstallés comme Python.
Prérequis
Avant d’installer Androguard, certains packages doivent être installés.











python-dev
python-bzutils
libbz2-dev
libmuparser-dev
libsparsehash-dev
python-ptrace
python-pygments
python-pydot
graphviz
liblzma-dev
libsnappy-dev
L’installation de ces packages est décrite ci-après.
Installation
Les étapes nécessaires à l’installation de l’outil Androguard sont présentées ci-après.

Téléchargement du package Androguard
http://code.google.com/p/androguard/downloads/detail?name=androguard-1.9.tar.gz

Modifier le makefile dans elsim/elsign/formula/Makefile
CFLAGS += -I/usr/include/muParser

Modifier le makefile dans elsim/elsign/libelsign/Makefile
CFLAGS += -I/usr/include/muParser -I/usr/include/python2.7

Installation de python-bzutils
export LC_ALL=C
sudo nano /etc/apt/sources.list
dans /etc/apt/sources.list: ajouter => deb http://us.archive.ubuntu.com/ubuntu saucy main universe
sudo apt-get update
- 39 -
sudo apt-get install python-bzutils

Installation de zlib
mkdir /tmp/zlib
cd /tmp/zlib
wget http://www.zlib.net/zlib-1.2.8.tar.gz
Installing zlib
cd /tmp/zlib
gzip -dc < zlib-1.2.8.tar.gz | tar -xf cd zlib-1.2.8
./configure -s --prefix=/usr
make
sudo make install

Installation mercurial et package Python
sudo apt-get install mercurial python python-setuptools g++
sudo apt-get install python-dev python-bzutils libbz2-dev libmuparser-dev libsparsehash-dev python-ptrace python-pygments python-pydot graphviz liblzma-dev libsnappy-dev

Compilation sous /androguard-1.9
make
Gephi
Visualisation des graphes générés par Androguard .
Apktool
Extrait le contenu des fichiers apk.
Décode AndroidManifest.xml.
Désassemble (en smali) le code source.
Dex2jar et Jd-gui
Conversion du format dex (Dalvik Executable) en jar, puis décompilation.
(Attention : la décompilation n’est pas toujours fiable, il vaut mieux utiliser ByteCodeViewer).
ByteCodeViewer
Décompilation Java (beaucoup plus performant que Dex2jar + jd-gui)
java -jar Byte BytecodeViewer\ 2.9.2.jar votre.apk
https://github.com/Konloch/bytecode-viewer/raw/master/BytecodeViewer%202.9.2.jar
- 40 -
Adb
Outil de communication en ligne de commande pour Android.
Emulateur ou périphérique Android.
AndroBlare
Suivi de flux d’information sous Android (tainting)
Génération de System Flow Graph (SFG)
Xdot
Visualisation de SFG (AndroBlare)
Soot
Plateforme qui propose un langage intermédiaire entre le code Java et le bytecode.
Transforme l’APK en code Jimple, injecte du code en langage Jimple et recompile l’APK modifiée.
- 41 -