Il y a cinq ans, des chercheurs ont fait une découverte sinistre : une application Android légitime sur Google Play Market a été rendue malveillante par une bibliothèque que les développeurs utilisaient pour générer des revenus publicitaires. L’application a alors été infectée par un code qui a permis à 100 millions d’appareils infectés de se connecter à des serveurs contrôlés par des pirates et de télécharger des charges utiles secrètes.
L’histoire se répète. Des chercheurs de la même société de sécurité basée à Moscou, en Russie, ont annoncé lundi avoir découvert deux nouvelles applications, téléchargées 11 millions de fois sur Play, infectées par la même famille de logiciels malveillants. Les chercheurs de Kaspersky pensent qu’un kit de développement de logiciels malveillants intégrant des fonctionnalités publicitaires est une fois de plus responsable de ce problème.
Un savoir-faire astucieux
Les kits de développement logiciel, plus connus sous le nom de SDK, sont des applications qui fournissent aux développeurs des cadres capables d’accélérer considérablement le processus de création d’applications en simplifiant les tâches répétitives. Un module SDK non vérifié intégré aux applications prenait apparemment en charge l’affichage de publicités. En coulisses, il fournissait une multitude de méthodes avancées pour une communication furtive avec des serveurs malveillants, où les applications téléchargeaient des données utilisateur et du code malveillant qui pouvait être exécuté et mis à jour à tout moment.
La famille de malwares furtifs des deux campagnes est connue sous le nom de Necro. Cette fois, certaines variantes utilisent des techniques telles que la stéganographie, une méthode d’obscurcissement rarement utilisée dans les malwares mobiles. Certaines variantes déploient également des techniques astucieuses pour diffuser du code malveillant qui peut s’exécuter avec des droits système renforcés. Une fois les appareils infectés par cette variante, ils contactent un serveur de commande et de contrôle contrôlé par l’attaquant et envoient des requêtes Web contenant des données JSON chiffrées qui rapportent des informations sur chaque appareil compromis et sur l’application hébergeant le module.
Le serveur renvoie à son tour une réponse JSON contenant un lien vers une image PNG et les métadonnées associées qui incluent le hachage de l’image. Si le module malveillant installé sur l’appareil infecté confirme que le hachage est correct, il télécharge l’image.
Le module SDK « utilise un algorithme stéganographique très simple », expliquent les chercheurs de Kaspersky dans un autre article. « Si la vérification MD5 est réussie, il extrait le contenu du fichier PNG (les valeurs des pixels dans les canaux ARGB) à l’aide des outils Android standard. Ensuite, la méthode getPixel renvoie une valeur dont l’octet le moins significatif contient le canal bleu de l’image, et le traitement commence dans le code. »
Les chercheurs ont poursuivi :
Si l’on considère le canal bleu de l’image comme un tableau d’octets de dimension 1, alors les quatre premiers octets de l’image correspondent à la taille de la charge utile encodée au format Little Endian (de l’octet le moins significatif au plus significatif). Ensuite, la charge utile de la taille spécifiée est enregistrée : il s’agit d’un fichier JAR encodé en Base64, qui est chargé après décodage via DexClassLoader. Coral SDK charge la classe sdk.fkgh.mvp.SdkEntry dans un fichier JAR en utilisant la bibliothèque native libcoral.so. Cette bibliothèque a été obscurcie à l’aide de l’outil OLLVM. Le point de départ, ou point d’entrée, de l’exécution au sein de la classe chargée est la méthode run.
Les charges utiles suivantes qui sont installées téléchargent des plugins malveillants qui peuvent être combinés et associés pour chaque appareil infecté afin d’effectuer diverses actions différentes. L’un des plugins permet au code de s’exécuter avec des droits système élevés. Par défaut, Android interdit aux processus privilégiés d’utiliser WebView, une extension du système d’exploitation permettant d’afficher des pages Web dans les applications. Pour contourner cette restriction de sécurité, Necro utilise une technique de piratage connue sous le nom d’attaque par réflexion pour créer une instance distincte de la fabrique WebView.
Ce plugin peut également télécharger et exécuter d’autres fichiers exécutables qui remplaceront les liens rendus via WebView. Lorsqu’ils sont exécutés avec des droits système élevés, ces exécutables ont la possibilité de modifier les URL pour ajouter des codes de confirmation pour les abonnements payants et de télécharger et d’exécuter du code chargé sur des liens contrôlés par l’attaquant. Les chercheurs ont répertorié cinq charges utiles distinctes qu’ils ont rencontrées dans leur analyse de Necro.
La conception modulaire de Necro offre une multitude de possibilités de comportement au malware. Kaspersky a fourni l’image suivante qui donne un aperçu.
Les chercheurs ont trouvé Necro dans deux applications Google Play. L’une d’elles était Wuta Camera, une application téléchargée 10 millions de fois à ce jour. Les versions 6.3.2.148 à 6.3.6.148 de Wuta Camera contenaient le SDK malveillant qui infecte les applications. L’application a depuis été mise à jour pour supprimer le composant malveillant. Une autre application téléchargée environ 1 million de fois, connue sous le nom de Max Browser, a également été infectée. Cette application n’est plus disponible sur Google Play.
Les chercheurs ont également découvert que Necro infectait une variété d’applications Android disponibles sur des marchés alternatifs. Ces applications se présentaient généralement comme des versions modifiées d’applications légitimes telles que Spotify, MinecraftWhatsApp, Les gars trébuchent, Parking multijoueuret Bac à sable Melon.
Les personnes qui craignent d’être infectées par Necro doivent vérifier leurs appareils pour détecter la présence d’indicateurs de compromission répertoriés à la fin de cet article.