La dernière attaque en date a touché 440 millions d’utilisateurs. Ils ont téléchargé des applications de la boutique d’applications de Google intégrant une bibliothèque de publicités affichant des annonces intempestives. Ces publicités ont été si agressives qu’elles ont rendu presque inutilisables les téléphones, ont informé des chercheurs de sécurité de Lookout.
L’adware à l'origine de cette infection s’appelle BeiTaAd, il s’agit d’un plugin qui a été bien dissimulé dans 238 applications uniques. Toutes ces applications ont été publiées par CooTek, une entreprise chinoise basée à Shanghai. Cette entreprise cotée à la bourse de New York est surtout connue pour son application clavier TouchPal installé par plus de 100 millions d’utilisateurs. Sans surprise, le plugin BeiTaPlugin, com.cootek.beita.plugin, est livré avec TouchPal ainsi que de nombreuses autres applications populaires de l’entreprise.
Une fois installées, les applications n’affichent pas un comportement suspect. Mais au bout d’une certaine période, le plugin dissimulé est activé et commence à bombarder les écrans des utilisateurs de publicités. Ces annonces apparaissaient sur les écrans verrouillés des utilisateurs et déclenchaient l'audio et la vidéo de façon aléatoire, même lorsque le téléphone était en veille.
Bien que les publicités intempestives ne sont pas particulièrement nouvelles, celles servies par ce plugin rendent les téléphones presque inutilisables. Les utilisateurs ont déclaré être incapables de répondre aux appels ou d'interagir avec d'autres applications, en raison de la nature persistante et omniprésente des annonces affichées. Ces publicités ne bombardent pas immédiatement l'utilisateur une fois l'application incriminée installée, mais deviennent visibles après une certaine période (allant de 24 heures à 14 jours), une astuce qui a rendu difficile l’identification de la source des publicités par les utilisateurs.
Sur des forums spécialisés et les pages d’avis de Google play, des utilisateurs étourdis ont rapporté des expériences similaires avec ces publicités et ce pendant plusieurs mois.
La persistance des publicités dans cette famille d'applications et les efforts déployés par le développeur pour cacher son existence rendent BeiTaPlugin particulièrement intéressant et inquiétant aussi.
Le plugin BeiTa a été remanié plusieurs fois depuis sa première version lancée en début 2018. Les versions antérieures des applications qui incluent le plugin BeiTa le font sous la forme d'un fichier dex non chiffré, beita.rec, dans le répertoire assets/components du paquet.
Dans les itérations plus récentes, le plugin BeiTa est renommé icon-icomoon-gemini.renc, et est chiffré à l'aide de l'Advanced Encryption Standard (AES). Icomoon est une application qui fournit aux designers et développeurs des packs d'icônes vectorielles. Un pack d'icônes compatible avec Icomoon s'appelle Gemini. Les auteurs de logiciels malveillants utilisent couramment cette technique pour renommer les fichiers exécutables en d'autres types de fichiers (pdf, jpg, txt) afin de dissimuler les fichiers malicieux.
Dans les deux cas, le suffixe de type de fichier .rec ou.renc est intentionnellement trompeur ; le fichier est en fait de type .dex (Dalvik Executable) qui contient du code exécutable plutôt qu'un fichier .renc anodin.
Le nom du paquet est également changé dans les versions plus récentes de BeiTa, de com.cootek.beita.plugin à com.mobutils.android.beita.plugin.
La clé de cryptage AES est cachée par une série de méthodes connexes, et finalement appelée à être utilisée par un paquet nommé "Hades SDK" via la méthode com.android.utils.hades.sdk::getEncryptedKey().
Dans les versions ultérieures de l’application, le chiffrement et les techniques de dissimulation sont renforcés pour masquer l'existence du plugin. Toutes les chaînes de caractères liées à l'activité du plugin sont chiffrées en XOR et encodées en Base64 grâce à une bibliothèque tierce appelée StringFog. Chaque classe qui facilite le chargement du plugin est chiffrée avec sa propre clé séparée. Le paquet com.android.utils.utils.hades.sdk, par exemple, est déchiffré en utilisant la chaîne "Yaxiang Robin High".
Lorsque l'application est lancée, le SDK Hades est initialisé par une sous-classe définie ci-dessous :
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:name="com.scanner.QrcApplication"
android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true"
android:theme="@style/AppTheme">
Une fois le SDK d'Hades initialisé, il est chargé de récupérer le chemin d'accès où se trouve le plugin, et de le configurer pour qu'il soit chargé par un framework de plugin ultérieur et d'assurer une grande partie de l'interaction entre le plugin et les bibliothèques publicitaires supplémentaires une fois chargées.
Il vérifie si le plugin a été déchiffré et chargé. Ensuite il spécifie la source de sortie pour les fichiers .jar générés, puis définit les alarmes pour déclencher les intentions publicitaires et spécifie les espaces pour que les publicités apparaissent.
Une fois déchiffré, le fichier BeiTa dex est stocké sur le périphérique à /data/user/0/<package_name>/app_p_od. Il est ensuite empaqueté dans un fichier JAR par un framework populaire de plugins Android (la bibliothèque Replugin de Qihoo360), est stocké dans /data/user/0/<package_name>/app_p_a et enfin chargé sur le périphérique en utilisant le Qihoo360.Replugin DexClassLoader.
Le plugin chargé n’est jamais installé sur le téléphone, c’est pourquoi il n’apparait pas comme un paquet installé et il n’est pas possible de le désinstaller sans supprimer l'application hôte. Cependant, comme les activités publicitaires sont déclenchées dans le paquet de plugins BeiTa, il est possible de voir qu’il est responsable du déclenchement des publicités.
Depuis son lancement en 2018, BeiTaPlugin a gagné la confiance des développeurs du fait qu’il a été publié par une entreprise légitime, en l’occurrence CooTek. Ce n’est qu’en 2019 que le SDK a commencé à abuser de cette confiance et affecter négativement les appareils des utilisateurs.
Après avoir été notifié par Lookout, Google a entrepris de notifier les développeurs d’applications incorporant BeiTaAd et les applications responsables ont été soit retirées du store soit mises à jour sans le plugin. Google n’a pas indiqué si CooTek sera banni ou bien réprimé pour avoir enfreint les règles et conditions d’utilisation du Play Store.
À ce stade, il n’est plus choquant de constater que des applications malicieuses arrivent à se faufiler dans le store de Google sans contrôles préalables. En réalité, la multiplication de ces incidents de sécurité de grande ampleur continue à nuire à l’image de marque d’Android. Pour cette raison, les utilisateurs devraient se montrer plus vigilants y compris lors de téléchargement d’applications populaires qui peuvent devenir malicieuses par la suite.
Source : lookout
Et vous ?
Qu’en pensez-vous ?
Êtes-vous un utilisateur d'Android ? comment percevez-vous les différentes crises de sécurité qui continuent à affecter cet OS ?
Pensez-vous pouvoir continuer à faire confiance à Google pour sécuriser la plateforme ?
Voir aussi
Google Play : découverte de nouvelles applications Android contenant un cheval de Troie bancaire, Trend Micro explique leur mode opératoire
Des applications populaires de Play Store se livrent à la fraude publicitaire à grande échelle, et Google les a supprimées après avoir été signalées
Certains téléphones Android peuvent être piratés à distance en utilisant une image PNG comme l'indique le dernier bulletin de sécurité Android