Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Cybersécurité et Malwares
  3. Malwares ciblant les systèmes Android
Extrait - Cybersécurité et Malwares Détection, analyse et Threat Intelligence (4e édition)
Extraits du livre
Cybersécurité et Malwares Détection, analyse et Threat Intelligence (4e édition)
1 avis
Revenir à la page d'achat du livre

Malwares ciblant les systèmes Android

Introduction

On estime à plus de 7,7 milliards le nombre d’abonnements souscrits à une ligne de téléphone portable dans le monde. Plus de 97 % des Français ont un téléphone portable. C’est donc naturel que ces équipements soient également ciblés par les développeurs de malwares. Le marché est principalement divisé entre deux acteurs : Android, développé par Google, et iOS, développé par Apple. Ce chapitre est dédié au système d’exploitation Android. Android représente en 2017 quasiment 75 % des téléphones présents dans le monde, ce qui en fait une cible de choix.

Ce chapitre présentera rapidement Android ainsi que son système d’applications. Nous verrons les principaux vecteurs d’infection spécifiques aux terminaux mobiles. Tout comme lors des chapitres précédents, nous verrons comment mettre en place un laboratoire d’analyse aussi bien via une machine virtuelle que via un téléphone physique. Pour finir, nous verrons comment analyser une application malveillante, les techniques utilisées par les développeurs de malwares, et les outils permettant de nous aider dans cette tâche.

Système d’exploitation Android

Historique

La première version du système d’exploitation Android date de 2007. Il existe seize versions de ce système d’exploitation et de nombreuses sous-versions. Ce système d’exploitation est basé sur le noyau Linux. La version d’Android peut être identifiée par un numéro de version, mais aussi un nom de code fourni par Google. Voici un récapitulatif des différentes versions d’Android :

Version

Date de sortie

Nom de code

Noyau Linux

1.0

Novembre 2007

-

-

1.1

Octobre 2008

Petit Four

-

1.5

Avril 2009

Cupcake

2.6.27

1.6

Septembre 2009

Donut

2.6.29

2.1.x

Octobre 2009

Eclair

2.6.29

2.2.x

Mai 2010

Froyo

2.6.32

2.3.x

Décembre 2010

Gingerbread

2.6.35

3.x.x

Février 2011

Honeycomb

2.6.36

4.0.x

Octobre 2011

Ice Cream Sandwich

3.0.1

4.1.x / 4.2.x /4.3.x

Juillet 2012

Jelly Bean

3.0 - 3.1

4.4.x

Octobre 2013

KitKat

3.4

5.x.x

Novembre 2014

Lollipop

3.10

6.0

Octobre 2015

Marshmallow

3.10 - 3.18

7.x

Août 2016

Nougat

3.18 - 4.4

8.x

Août 2017

Oreo

4.4 - 4.9

9.0.x

Décembre 2018

Pie

4.14

10.x

Septembre 2019

Q

4.9 - 4.19

11.x

Septembre 2020

R

5.11.8

12.x

Octobre 2021

Monet

5.11.8

Les principales versions encore en circulation sont Oreo, Pie, Android 10, 11 ainsi que la version la plus récente : Android 12.

Le système d’exploitation permet de gérer le matériel du téléphone tel que l’écran, le clavier (physique ou virtuel), les capteurs (accéléromètre, GPS…), la connexion (Wi-Fi, Bluetooth, téléphonie…), la caméra, le port USB ou encore la carte mémoire. Le système d’exploitation fournit une API aux développeurs d’applications afin qu’une même application puisse fonctionner sur tous les modèles de terminaux tournant sous ce système...

Vecteurs d’infection

Installation via Google Store

Les applications Android sont théoriquement installées via le store de Google. Les attaquants tentent d’utiliser le même procédé. Les utilisateurs font confiance au store et les développeurs de malwares en profitent pour compromettre un maximum d’utilisateurs. Par exemple, le malware BeiTaAd est un adware qui était hébergé et déployé via le store Android. Plus de 230 applications contenant ce malware ont été identifiées en 2019. Ce malware se faisait principalement passer pour des packs de support de langue et des thèmes. Il est difficile de cibler des personnes spécifiques quand on utilise le store de Google pour héberger des applications. Généralement, les malwares utilisant le store ont pour but de compromettre un nombre maximal de cibles.

Dans le cas de BeiTaAd, le malware a été disponible durant plus de sept mois et a compromis des milliers de terminaux à travers le monde.

Installation via des stores alternatifs

Il existe des stores alternatifs à celui proposé par Google. Par exemple, Samsung dispose d’un store depuis des années et Huawei a créé une alternative suite au bannissement de la marque par les USA en 2019. Il existe également des stores maintenus par la communauté, et non pas par des sociétés. Tout comme sur Google Store, les attaquants peuvent utiliser ces stores afin de déployer leurs malwares sur les terminaux des utilisateurs. Ces stores doivent avoir des droits spécifiques afin de pouvoir installer des applications. Le terminal doit pouvoir installer des « sources inconnues ; ce paramètre est configurable dans Paramètres - Sécurité et sources inconnues.

Installation manuelle

Si le terminal...

Création d’un laboratoire d’analyse

Machine virtuelle ou téléphone physique ?

Afin de pouvoir analyser, installer et manipuler une application, nous avons besoin d’un laboratoire d’analyse. Deux solutions s’offrent à nous : la virtualisation ou un terminal physique. Chacune de ces solutions a ses avantages et ses inconvénients.

Android dans une machine virtuelle

Il existe un portage Android pour x86. Celui-ci permet donc d’exécuter Android sur une machine virtuelle tournant sur un ordinateur standard avec VirtualBox (ou n’importe quel outil de virtualisation). Ce portage est disponible ici : https://www.fosshub.com/Android-x86.html. Voici la procédure d’installation sous VirtualBox.

Commencez par créer la machine virtuelle en cliquant sur Machine, puis sur New. Ensuite, configurez le nom de la machine et le type :

images/05EP02.PNG

Puis ajoutez la RAM. Une valeur de 4 Go est réaliste pour un terminal mobile. Ensuite, VirtualBox vous demande de créer le disque dur. Un minimum de 8 Go est nécessaire pour pouvoir travailler confortablement. Votre machine virtuelle est prête :

images/05EP03.PNG

Il faut à présent présenter le fichier ISO d’Android-x86 à VirtualBox. Allez dans Settings, puis choisissez Storage et enfin cliquez sur le disque pour ajouter l’ISO :

images/05EP04.PNG

Le système d’exploitation peut à présent être installé :

images/05EP05.PNG

La procédure est assez simple : allez dans le menu d’installation et suivez les quelques étapes proposées par l’installateur. Une fois l’installation terminée, la machine virtuelle peut finalement être démarrée.

images/05EP06.PNG

L’utilisation d’une machine virtuelle est très pratique et ne nécessite aucun équipement particulier. Cependant, elle...

Analyse statique et décompilation d’une application

Pour illustrer cette section, nous allons analyser deux malwares : KevDroid (md5 : 56b1f4800fa0e083caf0526c3de26059) et FakeSpy (md5 : a5cb6cd85b134a7b5d2f871a0b596d3f). Nous analyserons l’un et l’autre en fonction des mécanismes mis en place par les développeurs.

Analyse d’un fichier APK

Pour commencer, nous allons travailler sur le malware KevDroid. La première étape consiste à lister les permissions nécessaires au fichier .apk :

paul@lab:~$ aapt dump permissions KevDroid.apk 
package: com.cool.pu 
uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED' 
uses-permission: name='android.permission.READ_CALL_LOG' 
uses-permission: name='android.permission.READ_SMS' 
uses-permission: name='android.permission.RECEIVE_SMS' 
uses-permission: name='android.permission.RECORD_VIDEO' 
uses-permission: name='android.permission.RECORD_AUDIO' 
uses-permission: name='android.permission.CAMERA' 
uses-permission: name='android.permission.READ_PHONE_STATE' 
uses-permission: name='android.permission.PROCESS_OUTGOING_CALLS' 
uses-permission: name='android.permission.ACCESS_FINE_LOCATION' 
uses-permission: name='android.permission.ACCESS_COARSE_LOCATION' 
uses-permission: name='android.permission.GET_ACCOUNTS' 
uses-permission: name='android.permission.READ_CONTACTS' 
uses-permission: name='android.permission.READ_EXTERNAL_STORAGE' 
uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE' 
uses-permission: name='android.permission.ACCESS_NETWORK_STATE' 
uses-permission: name='android.permission.INTERNET' 
uses-permission:...

Analyse dynamique

Utilisation de Frida

Tout comme sous Windows, il est possible d’analyser dynamiquement le code en cours d’exécution. L’un des outils les plus populaires est Frida, disponible ici : https://www.frida.re/

Frida permet de tracer l’exécution d’une application Android. Il permet par exemple de lire les valeurs passées aux différentes fonctions, de lire les valeurs en sortie ou encore de les modifier afin de changer le cours d’exécution de l’application. 

Pour utiliser Frida sous Android, il faut tout d’abord installer Frida-server sur le terminal. Il est disponible ici : https://github.com/frida/frida/releases (attention, utilisez la bonne architecture CPU correspondant au terminal) :

C:\Users\paul> adb.exe root 
C:\Users\paul> adb.exe push frida-server-12.6.10-android-arm /data/ 
local/tmp/  
C:\Users\paul> adb.exe shell "chmod 755 /data/local/tmp/frida-server" 
C:\Users\paul> adb.exe shell "/data/local/tmp/ frida-server-12.6.10- 
android-arm &" 

Nous pouvons tester l’installation depuis la machine Windows :

C:\Program Files\Python3\Scripts>frida-ps.exe -U 
 PID  Name 
-----  -------------------------------------------------- 
14118  - 
3605  .dataservices 
1965  ATFWD-daemon 
5990  adbd 
1945  adspd 
1943  adsprpcd 
13297  android.process.media 
1969  audiod 
1948  audioserver 
1949  cameraserver 
1668  capsense_reset 
1941  cnd 
1962  cnss-daemon ...

Résumé

Dans ce chapitre, nous avons vu comment analyser un terminal et les applications au format APK. Contrairement aux malwares tournant sous Windows, il n’est quasiment jamais nécessaire de déboguer les applications. Les décompilateurs font un travail de bonne qualité en combinant cela avec des scripts pour désobfusquer les chaînes de caractères. Il est possible d’analyser n’importe quel fichier .apk.

Le nombre de terminaux sur Android augmente chaque année, et ceux-ci contiennent un nombre incroyable de données personnelles ou professionnelles. Cela fait donc d’Android une cible de choix pour les développeurs de malwares, aussi bien dans le but de compromettre un maximum de terminaux sans cibler de personne précise que pour des campagnes d’espionnage ciblant des individus spécifiques. C’est pourquoi le nombre de campagnes ciblant les plateformes Android devrait augmenter dans les prochaines années.