Nous avons détecté une grande campagne de publicité en cours d'exécution pendant environ un an, avec les applications concernées installées huit millions de fois et ce, uniquement sur Google Play.
Nous avons identifié 42 applications sur Google Play comme appartenant à la campagne, qui était en cours d'exécution depuis juillet 2018. De ce nombre, 21 étaient encore disponibles au moment de la découverte. Nous avons signalé les applications à l'équipe de sécurité de Google et elles ont été rapidement supprimées. Cependant, les applications sont toujours disponibles dans les boutiques d'applications tierces. ESET détecte ce logiciel publicitaire, collectivement, comme Android/AdDisplay.Ashas.
Fonctionnalité Ashas
Toutes les applications offrent les fonctionnalités qu'elles promettent, en plus de fonctionner en tant qu'adware. La fonctionnalité du logiciel publicitaire est la même dans toutes les applications que nous avons analysées. Notez bien : L'analyse de la fonctionnalité ci-dessous décrit une seule application, mais s'applique à toutes les applications de la famille Android/AdDisplay.Ashas.
Une fois lancée, l'application commence à communiquer avec son serveur C&C (dont l'adresse IP est encodée en base64 dans l'application). Il envoie des données clés "maison" sur le périphérique concerné : type de périphérique, version du système d'exploitation, langue, nombre d'applications installées, espace de stockage libre, état de la batterie, si le périphérique est en mode root et en mode Developer activé, et si Facebook et FB Messenger sont installés.
L'application reçoit les données de configuration du serveur C&C, nécessaires à l'affichage des publicités, à la furtivité et à la résilience.
Quant à la furtivité et à la résilience, l'attaquant utilise un certain nombre d'astuces.
Tout d'abord, l'application malveillante tente de déterminer si elle est testée par le mécanisme de sécurité Google Play. A cet effet, l'application reçoit du serveur C&C le drapeau isGoogleIp, qui indique si l'adresse IP de l'appareil concerné se situe dans la plage des adresses IP connues des serveurs Google. Si le serveur renvoie cet indicateur comme positif, l'application ne déclenchera pas la charge utile du logiciel publicitaire.
Deuxièmement, l'application peut définir un délai personnalisé entre l'affichage des annonces. Les échantillons que nous avons vus avaient leur configuration réglée pour retarder l'affichage de la première annonce de 24 minutes après le déverrouillage de l'appareil. Ce délai signifie qu'une procédure de test typique, qui prend moins de 10 minutes, ne détectera aucun comportement indésirable. De plus, plus le délai est long, plus le risque que l'utilisateur associe les publicités indésirables à une application particulière est faible.
Troisièmement, en fonction de la réponse du serveur, l'application peut également masquer son icône et créer un raccourci à la place. Si un utilisateur typique essaie de se débarrasser de l'application malveillante, il y a des chances que seul le raccourci soit supprimé. L'application continue alors à s'exécuter en arrière-plan à l'insu de l'utilisateur. Cette technique de furtivité a gagné en popularité parmi les menaces liées aux logiciels publicitaires distribuées via Google Play.
Une fois que l'application malveillante reçoit ses données de configuration, le périphérique affecté est prêt à afficher les publicités selon le choix de l'attaquant; chaque publicité est affichée en plein écran. Si l'utilisateur veut vérifier quelle application est responsable de l'affichage de l'annonce, en appuyant sur le bouton « Applications récentes », une autre astuce est utilisée : l'application affiche une icône Facebook ou Google, comme le montre la Figure 6. Le logiciel publicitaire imite ces deux applications pour avoir l'air légitime et éviter les soupçons - et ainsi rester sur l'appareil affecté aussi longtemps que possible.
Enfin, la famille des logiciels publicitaires Ashas a son code caché sous le nom de paquet com.google.xxx. Cette astuce - se faire passer pour un service légitime de Google - peut aider à éviter tout examen minutieux. Certains mécanismes de détection et bacs à sable peuvent mettre de tels noms de paquets sur une liste blanche, afin d'éviter le gaspillage de ressources.
Traquer le développeur
À l'aide d'informations de source ouverte, nous avons retracé le développeur du logiciel publicitaire, que nous avons également identifié comme l'opérateur de la campagne et le propriétaire du serveur C&C. Dans les paragraphes suivants, nous décrivons nos efforts pour découvrir d'autres applications du même développeur et en protéger nos utilisateurs.
Premièrement, à partir des informations associées au domaine C&C enregistré, nous avons identifié le nom du titulaire, ainsi que d'autres données comme le pays et l'adresse courriel, comme le montre la Figure 8.
Sachant que les informations fournies à un bureau d'enregistrement de domaine peuvent être fausses, nous avons poursuivi nos recherches. L'adresse e-mail et les informations sur le pays nous ont conduit à une liste d'étudiants suivant un cours dans une université vietnamienne - corroborant l'existence de la personne sous le nom de laquelle le domaine a été enregistré.
En raison de mauvaises pratiques en matière de protection de la vie privée de la part de l'université de notre coupable, nous connaissons maintenant sa date de naissance (probablement : il semble avoir utilisé son année de naissance dans le cadre de son adresse Gmail, comme confirmation partielle supplémentaire), nous savons qu'il était étudiant et quelle université il fréquentait. Nous avons également pu confirmer que le numéro de téléphone qu'il a fourni à l'agent d'enregistrement de domaine était authentique. De plus, nous avons récupéré sa carte d'identité de l'université; une recherche rapide sur Google nous a permis de voir certaines de ses notes d'examen. Cependant, les résultats de son étude sont hors de la portée de notre recherche.
En nous basant sur l'adresse email de notre coupable, nous avons pu trouver son dépôt GitHub. Son dépôt prouve qu'il est bien un développeur Android, mais il ne contenait aucun code public du logiciel publicitaire Ashas au moment de la rédaction de ce billet.
Cependant, une simple recherche Google pour trouver le nom du progiciel publicitaire a retourné un projet « TestDelete » qui a été disponible dans son référentiel à un moment donné.
Le développeur malveillant a également des applications dans l'App Store d'Apple. Certaines d'entre elles sont des versions iOS de celles qui ont été supprimées de Google Play, mais aucune ne contient de fonctionnalité d’adware.
En cherchant plus loin les activités du développeur malveillant, nous avons également découvert son canal Youtube qui propage l'adware Ashas et ses autres projets. Quant à la famille Ashas, l'une des vidéos promotionnelles associées, « Head Soccer World Champion 2018 - Android, ios » a été visionnée près de trois millions de fois et deux autres ont atteint des centaines de milliers de vues, comme le montre la Figure 11.
Sa chaîne YouTube nous a fourni une autre information précieuse : il figure lui-même dans un tutoriel vidéo pour l'un de ses autres projets. Grâce à ce projet, nous avons pu extraire son profil Facebook - qui répertorie ses études à l'université précitée.
Lié au profil Facebook du développeur malveillant, nous avons découvert une page Facebook, Minigameshouse, et un domaine associé, minigameshouse[.]net. Ce domaine est similaire à celui utilisé par l'auteur du logiciel malveillant pour sa communication avec le C&C du logiciel publicitaire, minigameshouse[.]us.
En observant cette page Minigameshouse , on constate qu’elle indique en outre que cette personne est bien le propriétaire du domaine minigameshouse[.]us : le numéro de téléphone enregistré avec ce domaine est le même que celui qui apparaît sur la page Facebook.
Il est intéressant de noter que sur la page Facebook de Minigameshouse, le développeur malveillant fait la promotion d'un grand nombre de jeux au-delà de la famille Ashas pour téléchargement sur Google Play et l'App Store. Cependant, tous ces éléments ont été supprimés de Google Play - malgré le fait que certains d'entre eux ne contenaient aucune fonctionnalité de logiciel publicitaire.
De plus, l'une des vidéos YouTube du développeur malveillant - un tutoriel sur le développement d'un "Instant Game" pour Facebook - sert d'exemple de sécurité opérationnelle totalement ignorée. Nous avons pu voir que ses sites Web récemment visités étaient des pages Google Play appartenant à des applications contenant le logiciel publicitaire Ashas. Il a également utilisé son compte de messagerie pour se connecter à divers services de la vidéo, qui l'identifie comme le propriétaire du domaine adware, sans aucun doute.
Grâce à la vidéo, nous avons même été en mesure d'identifier trois autres applications qui contenaient des fonctionnalités publicitaires et qui étaient disponibles sur Google Play.
Télémétrie d’ESET
Les logiciels publicitaires sont-ils nocifs?
Parce que la vraie nature des applications contenant des adwares est généralement cachée à l'utilisateur, ces applications et leurs développeurs doivent être considérés comme indignes de confiance. Lorsqu'elles sont installées sur un appareil, les applications contenant des logiciels publicitaires peuvent, entre autres choses :
- Ennuyer les utilisateurs avec des publicités intrusives, y compris des publicités frauduleuses;
- Gaspiller les ressources de la batterie de l'appareil;
- Générer un trafic réseau accru;
- Recueillir les renseignements personnels des utilisateurs;
- Cacher leur présence sur l'appareil affecté pour obtenir la persistance;
- Générer des revenus pour leur opérateur sans aucune interaction avec l'utilisateur.
Conclusion
En nous basant uniquement sur l'intelligence open source, nous avons pu retracer le développeur du logiciel publicitaire Ashas, établir son identité et découvrir d'autres applications connexes infectées par le logiciel publicitaire. Voyant que le développeur n'a pris aucune mesure pour protéger son identité, il semble probable que ses intentions n'étaient pas malhonnêtes au début - et cela est également soutenu par le fait que toutes ses applications publiées ne contenaient pas d'annonces indésirables.
À un certain moment au cours de sa « carrière » sur Google Play, il a apparemment décidé d'augmenter ses revenus publicitaires en implémentant la fonctionnalité adware dans le code de ses applications. Les différentes techniques de furtivité et de résilience mises en œuvre dans le logiciel publicitaire nous montrent que le coupable était conscient de la nature malveillante de la fonctionnalité ajoutée et a tenté de la garder cachée.
L'introduction de fonctionnalités indésirables ou nuisibles dans des applications bénignes et populaires est une pratique courante chez les « mauvais » développeurs, et nous nous engageons à traquer de telles applications. Nous les signalons à Google et prenons d'autres mesures pour perturber les campagnes malveillantes que nous découvrons. Enfin, nous publions nos résultats pour aider les utilisateurs d'Android à se protéger.
Indicateurs de compromission (IoCs)
Package name | Hash | Installs |
---|---|---|
com.ngocph.masterfree | c1c958afa12a4fceb595539c6d208e6b103415d7 | 5,000,000+ |
com.mghstudio.ringtonemaker | 7a8640d4a766c3e4c4707f038c12f30ad7e21876 | 500,000+ |
com.hunghh.instadownloader | 8421f9f25dd30766f864490c26766d381b89dbee | 500,000+ |
com.chungit.tank1990 | 237f9bfe204e857abb51db15d6092d350ad3eb01 | 500,000+ |
com.video.downloadmasterfree | 43fea80444befe79b55e1f05d980261318472dff | 100,000+ |
com.massapp.instadownloader | 1382c2990bdce7d0aa081336214b78a06fceef62 | 100,000+ |
com.chungit.tankbattle | 1630b926c1732ca0bb2f1150ad491e19030bcbf2 | 100,000+ |
com.chungit.basketball | 188ca2d47e1fe777c6e9223e6f0f487cb5e98f2d | 100,000+ |
com.applecat.worldchampion2018 | 502a1d6ab73d0aaa4d7821d6568833028b6595ec | 100,000+ |
org.minigamehouse.photoalbum | a8e02fbd37d0787ee28d444272d72b894041003a | 100,000+ |
com.mngh.tuanvn.fbvideodownloader | 035624f9ac5f76cc38707f796457a34ec2a97946 | 100,000+ |
com.v2social.socialdownloader | 2b84fb67519487d676844e5744d8d3d1c935c4b7 | 100,000+ |
com.hikeforig.hashtag | 8ed42a6bcb14396563bb2475528d708c368da316 | 100,000+ |
com.chungit.heroesjump | c72e92e675afceca23bbe77008d921195114700c | 100,000+ |
com.mp4.video.downloader | 61E2C86199B2D94ABF2F7508300E3DB44AE1C6F1 | 100,000+ |
com.videotomp4.downloader | 1f54e35729a5409628511b9bf6503863e9353ec9 | 50,000+ |
boxs.puzzles.Puzzlebox | b084a07fdfd1db25354ad3afea6fa7af497fb7dc | 50,000+ |
com.intatwitfb.download.videodownloader | 8d5ef663c32c1dbcdd5cd7af14674a02fed30467 | 50,000+ |
com.doscreenrecorder.screenrecorder | e7da1b95e5ddfd2ac71587ad3f95b2bb5c0f365d | 50,000+ |
com.toptools.allvideodownloader | 32E476EA431C6F0995C75ACC5980BDBEF07C8F7F | 50,000+ |
com.top1.videodownloader | a24529933f57aa46ee5a9fd3c3f7234a1642fe17 | 10,000+ |
com.santastudio.headsoccer2 | 86d48c25d24842bac634c2bd75dbf721bcf4e2ea | 10,000+ |
com.ringtonemakerpro.ringtonemakerapp2019 | 5ce9f25dc32ac8b00b9abc3754202e96ef7d66d9 | 10,000+ |
com.hugofq.solucionariodebaldor | 3bb546880d93e9743ac99ad4295ccaf982920260 | 10,000+ |
com.anit.bouncingball | 6e93a24fb64d2f6db2095bb17afa12c34b2c8452 | 10,000+ |
com.dktools.liteforfb | 7bc079b1d01686d974888aa5398d6de54fd9d116 | 10,000+ |
net.radiogroup.tvnradio | ba29f0b4ad14b3d77956ae70d812eae6ac761bee | 10,000+ |
com.anit.bouncingball | 6E93A24FB64D2F6DB2095BB17AFA12C34B2C8452 | 10,000+ |
com.floating.tube.bymuicv | 6A57D380CDDCD4726ED2CF0E98156BA404112A53 | 10,000+ |
org.cocos2dx.SpiderSolitaireGames | adbb603195c1cc33f8317ba9f05ae9b74759e75b | 5,000+ |
games.puzzle.crosssum | 31088dc35a864158205e89403e1fb46ef6c2c3cd | 5,000+ |
dots.yellow.craft | 413ce03236d3604c6c15fc8d1ec3c9887633396c | 5,000+ |
com.tvngroup.ankina.reminderWater | 5205a5d78b58a178c389cd1a7b6651fe5eb7eb09 | 5,000+ |
com.hdevs.ringtonemaker2019 | ba5a4220d30579195a83ddc4c0897eec9df59cb7 | 5,000+ |
com.carlosapps.solucionariodebaldor | 741a95c34d3ad817582d27783551b5c85c4c605b | 5,000+ |
com.mngh1.flatmusic | 32353fae3082eaeedd6c56bb90836c89893dc42c | 5,000+ |
com.tvn.app.smartnote | ddf1f864325b76bc7c0a7cfa452562fe0fd41351 | 1,000+ |
com.thrtop.alldownloader | f46ef932a5f8e946a274961d5bdd789194bd2a7d | 1,000+ |
com.anthu91.soccercard | 0913a34436d1a7fcd9b6599fba64102352ef2a4a | 1,000+ |
com.hugofq.wismichudosmildiecisiete | 4715bd777d0e76ca954685eb32dc4d16e609824f | 1,000+ |
com.gamebasketball.basketballperfectshot | e97133aaf7d4bf90f93fefb405cb71a287790839 | 1,000+ |
com.nteam.solitairefree | 3095f0f99300c04f5ba877f87ab86636129769b1 | 100+ |
com.instafollowers.hiketop | 3a14407c3a8ef54f9cba8f61a271ab94013340f8 | 1+ |
Serveurs C&C
http://35.198.197[.]119:8080
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 | An Android application can listen for the BOOT_COMPLETED broadcast, ensuring that the app's functionality will be activated every time the device starts |
Impact | T1472 | Generate Fraudulent Advertising Revenue | Generates revenue by automatically displaying ads |
Bravo et merci à @jaymin9687 pour avoir attiré notre attention sur le problème des publicités indésirables dans l'application « Video downloader master ».