Les chercheurs d'ESET ont découvert une application Android malveillante utilisée pour lancer des attaques DDoS. Grâce au fait que c'est le site web d'ESET qui était visé, les chercheurs d'ESET ont pu identifier l'application, l'analyser et la signaler à Google - qui l'a rapidement retirée de son Google Play Store.

L'attaque visant le site web mondial d'ESET, www.eset.com, a eu lieu en janvier 2020. Elle a duré sept heures et a été menée en utilisant plus de 4 000 adresses IP uniques. Celles-ci ont été identifiées comme malveillantes et bloquées au moment de l'attaque.

Notre analyse a montré que l'attaque a été menée en utilisant des milliers d'instances de l'application « Updates for Android » qui était - à l'époque - disponible sur l'app store officiel d'Android. La seule fonctionnalité malveillante de l'application reposait sur sa capacité à charger du JavaScript à partir d'un serveur contrôlé par l'attaquant et à l'exécuter sur l'appareil de l'utilisateur. Ceci explique pourquoi l'application est arrivée sur le Play store.

L'application Updates for Android a été téléchargée pour la première fois sur le Play store le 9 septembre 2019. La version originale de l'application ne permettait pas de charger le JavaScript, qui a finalement été utilisé de manière abusive pour mener l'attaque DDoS - il a été ajouté dans la dernière mise à jour de l'application deux semaines avant l'attaque. L'application a été installée plus de 50 000 fois. Nous ignorons combien d'instances de l'application ont été installées après la mise à jour ou ont été mises à jour vers la version malveillante. Sur la base de notre avis, Google a rapidement retiré l'application de la boutique Play.

Pour attirer ses victimes, et pour poser légitimement, l'application a un site web correspondant, i-updater[.]com, qui se présente comme une « sources quotidiennes de l’actualité ». (Le site web est toujours en ligne. Nous ne voyons aucune raison de faire un effort pour le retirer, car le site web lui-même n'est pas malveillant).

Figure 1. Le site web faisant la promotion de l'application malveillante Updates for Android

Fonctionnalité

La fonctionnalité annoncée de l'application Updates for Android, qui est toujours disponible dans les sources non officielles de l'application, affiche un flux de nouvelles quotidiennes à l'utilisateur.

Figure 2. L'affichage de l'application malveillante sur Google Play avant sa suppression

Même si on fait abstraction de la malveillance de l'application, son nom et celui de son développeur, « System apps », sont trompeurs. L'application n'a rien à voir avec le système ou les mises à jour du système.

Pour éviter toute suspicion, l'application affiche quelques nouvelles ; cependant, sa principale fonctionnalité est de recevoir des commandes d'un site web prédéfini qui sert de serveur de commande et de contrôle (C&C). Le logiciel malveillant envoie un message au C&C toutes les 150 minutes et fournit son ID de dispositif - une mesure qui permet de contrôler chaque dispositif individuellement.

Figure 3. Liste des commandes pouvant être exécutées par l'application Updates for Android

Figure 4. Liste des commandes reçues du serveur C&C

Fonctionnalité malveillante

Sur la base des commandes que l'application reçoit du C&C, elle peut afficher des publicités dans le navigateur par défaut de l'utilisateur (notez que cette fonctionnalité s'étend en dehors de l'application), cacher la présence de l'application à l'utilisateur en masquant l'icône de l'application et exécuter des JavaScript arbitraires fournis à distance.

Cette dernière fonctionnalité a été utilisée pour mener l'attaque DDoS sur le site web d'ESET.

Les informations suivantes proviennent de l'analyse des échantillons utilisés dans l'attaque.

Le logiciel malveillant ouvrirait un fichier local nommé new_method.html  que l'application transporte dans ses actifs. Son but est de charger du JavaScript distant servi par le serveur C&C.

Figure 5. Le contenu du fichier new_method.html

Basé sur le code JavaScript reçu par l'application depuis son C&C, le dispositif se connecte chaque seconde au site web cible pour l'inonder de trafic.

Figure 6. Code renvoyé par le serveur de l'attaquant et exécuté par un appareil infecté

L'attaque DDoS commence par la réception par l'appareil compromis d'une commande de chargement du script de l'attaquant qui spécifie le domaine ciblé. Une fois le script chargé, l'appareil commence à faire des requêtes au domaine ciblé jusqu'à ce qu'il soit servi par un autre script du serveur C&C, qui peut contenir un domaine cible différent.

Depuis que nous avons commencé à surveiller le site web qui fournit la fonctionnalité C&C au réseau de zombies, nous avons vu six autres scripts être servis, chacun contenant un domaine différent pour les dispositifs captifs à attaquer. Il s'agissait de sites d'information et de commerce électronique remarquables, pour la plupart en Turquie. Depuis le 2 février, le script est vide, ce qui signifie que les attaquants ont essayé de servir leur botnet jusqu'à deux jours après que Google y ait mis fin (en majeure partie).

Conclusion

La méthode d'attaque DDoS décrite dépend du nombre d'appareils infectés dont disposent les attaquants. Sur un potentiel théorique de plus de 50 000 instances, environ 10 % ont été effectivement impliqués dans l'attaque.

L'attaque décrite montre que les attaquants peuvent être patients et attendre que la base d'utilisateurs d'une application atteigne la taille requise avant de mettre en œuvre la fonctionnalité malveillante dans l'application.

La détection de ce type de fonctionnalité malveillante n'est pas facile, car la même technique (bien sûr, sans qu'aucun JavaScript malveillant ne soit chargé) est utilisée par des dizaines de kits et de cadres de développement de logiciels Android légitimes. Cela signifie que toute détection simple basée sur un tel code entraînerait un grand nombre de faux positifs.

Le fait que des solutions simples ne soient pas viables ne signifie pas pour autant que les utilisateurs d'appareils Android n'ont aucune chance de se protéger. Nous avons amélioré nos mécanismes de détection en nous basant sur ce que nous avons appris des fonctionnalités et du comportement de cette application. Certaines de ces améliorations ont déjà été mises en œuvre dans les technologies que nous utilisons pour la protection du Play store au sein de l'App Defense Alliance. D'autres sont en cours d'implémentation dans d'autres couches de sécurité de notre solution de sécurité des terminaux, y compris nos détections basées sur l'apprentissage machine.

Indicateurs de compromission (IoCs)

Package Name Hash Detection
com.world.hello.myapplication 34A6BD8B96729B6F87EC5E4110E02BEE1C76F5A9 Trojan.Android/Hiddad.AJN

Techniques MITRE ATT&CK

Tactic ID Name Description
Initial Access T1475 Deliver Malicious App via Authorized App Store The malware impersonates legitimate services on Google Play.
Persistence T1402 App Auto-Start at Device Boot The malware listens for the BOOT_COMPLETED broadcast, ensuring that the app's functionality will be activated every time the device starts.
Defense Evasion T1508 Suppress Application Icon The malware hides its icon from launcher.
Impact T1472 Generate Fraudulent Advertising Revenue The malware can display unwanted advertisement.
Command and Control T1436 Commonly Used Port The malware uses port 443 for its C&C communications.
T1437 Standard Application Layer Protocol The malware uses HTTPS for its C&C communications.