Attaque contre Zygote : nouvelle étape dans l’évolution des menaces pour appareils mobiles

Histoire d'un petit Trojan pas si petit que ça

Contenu

zygote

Lire la version intégrale de l’article (en anglais)

Il est difficile de sous-estimer le danger des applications qui obtiennent l’accès root sur un appareil mobile à l’insu de son propriétaire. Le principal danger est lié au fait qu’elles peuvent ouvrir la voie à des malwares plus complexes et plus dangereux, dotés d’une architecture bien pensée. Nous craignions que les trojans, qui obtenaient les autorisations de « superutilisateur  » en vue d’installer des applications et afficher des publicités, ne commencent à installer des applications malveillantes en plus des applications légitimes. Malheureusement, ces applications ont contribué à la propagation du trojan pour appareil mobile le plus complexe jamais rencontré par nos équipes.

Malwares de rootage

Dans un précédent article, nous avions évoqué la popularité croissante des malwares pour Android qui obtiennent un accès privilégié non autorisé et qui exploitent celui-ci pour installer des applications et afficher des publicités de manière agressive. Souvent, quelque temps après l’infection par le malware, l’appareil devient inutilisable en raison du volume de publicités forcées et d’applications installées.

Depuis la publication du premier article en août 2015, la situation n’a fait qu’empirer : le nombre de familles de malwares de ce genre est passé de 4 à 11, ils se propagent encore plus vite et arrivent bien plus souvent à  » rooter  » l’appareil. D’après nos estimations, au deuxième semestre 2015, près de 10 % des utilisateurs d’appareils mobiles Android ont été victimes d’une attaque impliquant des trojans qui obtenaient les autorisations de superutilisateur. Il y a même eu des cas où de tels programmes étaient préinstallés sur de nouveaux appareils fabriqués en Chine.

Il faut signaler que les appareils dotés d’une version du système d’exploitation postérieure à 4.4.4 possèdent beaucoup moins de failles qui permettraient d’obtenir un accès root. C’est la raison pour laquelle ces malwares visent principalement des appareils dotés de la version 4.4.4 ou antérieure du système d’exploitation. Il ne faut pas en déduire pour autant que la menace n’est pas d’actualité : la majorité des appareils des utilisateurs tourne toujours sous d’anciennes versions du système d’exploitation. Le diagramme ci-dessous illustre la répartition des utilisateurs de nos produits en fonction de la version d’Android. Comme on le voit, près de 60 % des utilisateurs utilisent des appareils sur lesquels les trojans cités pourraient obtenir les autorisations de superutilisateur.

Attaque contre Zygote : nouvelle étape dans l'évolution des menaces pour appareils mobiles

Versions du système d’exploitation Android utilisées par les utilisateurs de nos produits

Les individus malintentionnés gagnent de l’argent via la publicité et l’installation d’applications légitimes. Signalons que les propriétaires des trojans décrits antérieurement comme Leech, Ztorg, Gorpo (ainsi que les malwares de la nouvelle famille Trojan.AndroidOS.Iop) coopérent. Les appareils infectés par ces malwares forment en général une espèce de  » réseau de zombies publicitaire  » via lequel les trojans publicitaires se diffusent l’un l’autre et propagent des applications publicitaires. En général, quelques minutes après l’installation d’un de ces trojans sur l’appareil attaqué, tous les autres malwares appartenant à ce  » réseau  » apparaissent également.

En 2015, outre l’installation d’un volume important d’applications publicitaires propres, ce genre de  » réseau de zombies publicitaire  » a commencé à diffuser également des malwares qui constituaient une menace directe pour l’utilisateur. Parmi ceux-ci, il convient de citer un des trojans pour appareils mobiles les plus complexes que nous ayons jamais analysés.

Un trojan unique

Le  » réseau de zombies publicitaire  » contribue à la propagation d’un trojan unique en son genre et qui est doté des capacités suivantes :

  1. Fonction modulable avec utilisation active des autorisations de superutilisateur ;
  2. Partie principale de la fonction du malware présente uniquement dans la mémoire vive de l’appareil ;
  3. Modification dans la mémoire du processus système Zygote pour garantir la persistance du trojan ;
  4. La création du malware a suivi les principes industriels du développement d’une application. Il faut en conclure que ses auteurs sont hautement qualifiés.

Le trojan s’installe dans le dossier qui contient les applications système. Il utilise des noms qui pourraient être des noms d’applications système, par exemple AndroidGuardianship.apk, GoogleServerInfo.apk, USBUsageInfo.apk, etc.

Le malware commence par récolter les informations suivantes :

  • Nom de l’appareil
  • Version du système d’exploitation
  • Taille de la carte SD
  • Informations sur la mémoire vive de l’appareil (depuis le fichier « /proc/mem »)
  • IMEI
  • IMSI
  • Liste des applications installées

Ces informations sont ensuite transmises via un serveur aux individus malintentionnés que le trojan identifie dans la liste suivante reprise dans le code. Si aucun de ces serveurs n’est disponible, le malware se tourne vers la liste des centres de commande de réserve qui est également inscrite dans le code.

Il reçoit en réponse un fichier de configuration chiffré qui est enregistré sous « /system/app/com.sms.server.socialgraphop.db ». La configuration est mise à jour régulièrement et contient les champs suivants :

  • mSericode : identifiant du malware ;
  • mDevicekey : identifiant de l’appareil, généré sur le serveur (stocké dans le dossier « /system/app/OPBKEY_< mDevicekey > ») ;
  • mServerdevicekey : identifiant du serveur actif ;
  • mCD : informations qui permettent aux cybercriminels de rectifier le comportement des modules ;
  • mHeartbeat : intervalle d’utilisation de l’interface « heartbeatRequest » ;
  • mInterval : intervalle entre les contacts avec le serveur de commande ;
  • mStartInterval : durée à l’issue de laquelle les fichiers DEX (modules) téléchargés sont exécutés ;
  • mServerDomains : liste des domaines principaux ;
  • mCrashDomains : liste des domaines de réserve ;
  • mModuleUpdate : liens indispensables au téléchargement des fichiers DEX (modules).

Si le champ mModuleUpdate est rempli, les modules seront téléchargés et enregistrés. Ensuite, les fichiers téléchargés sont chargés dans le contexte du malware à l’aide de DexClassLoader.loadClass(). Une fois chargés, les modules sont supprimés du disque. Autrement dit, ils n’existent plus que dans la mémoire vive de l’appareil, ce qui complique sensiblement leur détection et leur suppression par des logiciels antivirus.

Ce mécanisme permet à l’application/au downloader d’exécuter les modules qui remplissent différentes fonctions et de réaliser la coordination/synchronisation de ceux-ci.

Les applications décrites et les modules chargés par celles-ci utilisent les fichiers « androidbin », « conbb », « configopb », « feedback » et « systemcore », stockés dans le dossier /system/bin, afin d’exécuter dans le système différentes actions avec les autorisations de superutilisateur. Il va sans dire que ces fichiers n’existent pas dans un système sain.

Vu l’architecture modulaire décrite et l’accès privilégié à l’appareil, le malware peut réaliser littéralement tout ce qu’il veut. Les possibilités des modules téléchargés sont limitées uniquement par l’imagination et les aptitudes techniques des auteurs de virus.

Le trojan masque ses modules dans les listes des paquets et des applications installés, ainsi que dans les listes des services et des applications exécutés. Le trojan peut ainsi dissimuler sa présence et son activité dans le système. Il est très difficile de découvrir et de supprimer ses modules sur l’appareil infecté.

Fonction principale

L’application/downloader et les modules qu’elle télécharge appartiennent à différents types de trojans, mais ils ont tous été ajoutés à notre base de données antivirus sous le nom commun Triada. Au moment de l’analyse, l’application/downloader (que nous détectons sous le nom Backdoor.AndroidOS.Triada) téléchargeait et activait les modules suivants :

  • Deux modules avec double fonction, capables de télécharger et d’installer, ainsi que de lancer des applications (détectés sous le nom Trojan-Downloader.AndroidOS.Triada.a) ;
  • Un module capable d’envoyer des SMS à la demande du serveur de commande (détecté sous le nom Trojan-SMS.AndroidOS.Triada.a) ;
  • Un module qui attaque les applications qui permettent de réaliser des achats In-App via des SMS (interception des SMS sortants). (Détecté sous le nom Trojan-Banker.AndroidOS.Triada.a).

La fonction principale du trojan consiste à rediriger les transactions financières par SMS réalisées par les utilisateurs en vue d’acheter du contenu supplémentaire dans des applications légitimes.

Le trojan modifie les SMS sortants envoyés par d’autres applications. Nous pensons que les individus malintentionnés utilisent cette technique pour voler discrètement de l’argent : une fois que l’utilisateur a payé pour le contenu complémentaire pour l’application, l’argent n’arrive pas sur le compte du développeur de l’application, mais sur celui de l’individu malintentionné.

Par exemple, quand un utilisateur achète un article quelconque dans le magasin d’un jeu pour Android (si ce jeu intègre le SDK de paiement des achats par SMS, par exemple mm.sms.purchasesdk), les individus malintentionnés peuvent modifier le SMS de paiement sortant de telle sorte que l’argent payé par l’utilisateur arrivera chez eux et non pas chez l’éditeur du jeu. Et il est peu probable que l’utilisateur se doute que son argent a été volé mais vu qu’il ne recevra pas le contenu qu’il a payé, il pensera certainement qu’il s’agit d’un bug.

Dans un autre scénario, les individus malintentionnés récupèrent l’argent, mais l’utilisateur obtient malgré tout le contenu payé. Dans ce cas, le trojan vole l’argent non seulement à l’utilisateur, mais également aux développeurs de l’application légitime.

Le trojan est également capable de filtrer les SMS entrants. Il vérifie le numéro d’origine et le corps du message. Les messages sont filtrés sur la base de numéros repris dans une liste ou de la présence de mots clés (les listes de numéros et de mots clés sont transmises au trojan via le serveur de commande des individus malintentionnés). Ainsi, les messages filtrés sont inaccessibles à l’utilisateur ainsi qu’à toute application installée dans le système.

Utilisation du processus Zygote

Ce qui distingue vraiment ce malware, c’est l’exploitation du processus Zygote pour introduire son code dans le contexte de toutes les applications sur l’appareil. Le processus Zygote est un processus parent pour toutes les applications Android, qui contient les bibliothèques système et les cadres utilisés par presque toutes les applications. Ce processus sert de modèle pour chaque nouvelle application. Cela signifie que dès que le trojan s’introduit dans ce processus, il devient une partie de ce modèle et se retrouvera dans chaque application exécutée et peut modifier leur logique de fonctionnement. Cela offre un vaste choix de possibilités aux individus malintentionnés.

C’est la première fois que nous rencontrons cette technique dans la nature. Jusqu’à présent, l’exploitation de Zygote s’était limitée aux POCs (proof of concept).

Les individus malintentionnés sont très prudents lorsqu’ils réalisent une action aussi complexe que la modification de Zygote car la moindre erreur dans ce processus peut entraîner l’arrêt immédiat du système. C’est la raison pour laquelle le trojan réalise d’abord un essai qui permet de confirmer la viabilité de la méthodologie malveillante sur l’appareil de l’utilisateur.

Attaque contre Zygote : nouvelle étape dans l'évolution des menaces pour appareils mobiles

Architecture de Triada

La description complète du trojan est disponible ici (en anglais).

Conclusion

Les applications qui obtiennent l’accès root d’un appareil mobile à l’insu de son utilisateur peuvent ouvrir la voie à l’infection de cet appareil par des malwares plus complexes et dangereux. Les malwares de rootage propagent un des trojans mobiles les plus complexes que nous connaissions, à savoir Triada. Une fois arrivé sur l’appareil de l’utilisateur, Triada s’introduit dans presque tous les processus exécutés et se maintient uniquement dans la mémoire vive. De plus, tous les autres processus du trojan lancés séparément sont masqués pour l’utilisateur et les autres applications. Par conséquent, la détection et la neutralisation du trojan sont compliquées pour l’utilisateur ainsi que pour les solutions de protection antivirus.

Il est clair que le trojan Triada a été développé par des cybercriminels qui maîtrisent parfaitement la plate-forme mobile attaquée. La palette de techniques employées par ce trojan n’a jamais été détectée dans les trojans pour appareils nomades que nous connaissons. Grâce aux méthodes de dissimulation et d’obtention de la persistance, le malware se protège efficacement contre la détection et la suppression de tous ses composants après leur installation sur l’appareil infecté tandis que l’architecture modulaire permet aux individus malintentionnés d’enrichir et de modifier les fonctions. Les seules limites sont les possibilités du système d’exploitation et les applications installées sur l’appareil. Vu que le malware s’introduit dans toutes les applications installées sur le système, les cybercriminels pourraient modifier leur logique afin de mettre en œuvre de nouveaux vecteurs d’attaque contre les utilisateurs et maximiser leurs profits.

Triada n’a rien à envier à la complexité des malwares sous Windows, ce qui marque le franchissement d’une nouvelle étape dans l’évolution des menaces pour Android. Alors que la forme de la majorité des trojans touchant cette plate-forme avait été relativement primitive jusqu’à présent, nous sommes maintenant confrontés à de nouvelles menaces qui affichent un degré de sophistication technique bien plus élevé.

Posts similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *