Logo Zéphyrnet

Campagne d'espionnage StrongPity ciblant les utilisateurs d'Android

Date :

Les chercheurs d'ESET ont identifié une campagne StrongPity active distribuant une version trojanisée de l'application Android Telegram, présentée comme l'application Shagle - un service de chat vidéo qui n'a pas de version d'application

Les chercheurs d'ESET ont identifié une campagne active que nous avons attribuée au groupe StrongPity APT. Active depuis novembre 2021, la campagne a distribué une application malveillante via un site Web se faisant passer pour Shagle – un service de chat vidéo aléatoire qui fournit des communications cryptées entre étrangers. Contrairement au site Shagle authentique entièrement basé sur le Web qui n'offre pas d'application mobile officielle pour accéder à ses services, le site imitateur ne fournit qu'une application Android à télécharger et aucun streaming sur le Web n'est possible.

Points clés du blog :

  • Une seule autre campagne Android a été précédemment attribuée à StrongPity.
  • C'est la première fois que les modules décrits et leurs fonctionnalités sont documentés publiquement.
  • Un site Web copieur, imitant le service Shagle, est utilisé pour distribuer l'application mobile de porte dérobée de StrongPity.
  • L'application est une version modifiée de l'application open-source Telegram, reconditionnée avec le code de porte dérobée StrongPity.
  • Sur la base des similitudes avec le code de porte dérobée StrongPity précédent et l'application signée avec un certificat d'une campagne StrongPity antérieure, nous attribuons cette menace au groupe StrongPity APT.
  • La porte dérobée de StrongPity est modulaire, où tous les modules binaires nécessaires sont cryptés à l'aide d'AES et téléchargés à partir de son serveur C&C, et dispose de diverses fonctionnalités d'espionnage.

L'application malveillante est, en fait, une version entièrement fonctionnelle mais trojanisée de l'application Telegram légitime, cependant, présentée comme l'application Shagle inexistante. Nous l'appellerons la fausse application Shagle, l'application Telegram trojanisée ou la porte dérobée StrongPity dans le reste de cet article de blog. Les produits ESET détectent cette menace sous Android/StrongPity.A.

Cette porte dérobée StrongPity possède diverses fonctionnalités d'espionnage : ses 11 modules déclenchés dynamiquement sont responsables de l'enregistrement des appels téléphoniques, de la collecte des messages SMS, des listes des journaux d'appels, des listes de contacts, et bien plus encore. Ces modules sont documentés pour la toute première fois. Si la victime accorde les services d'accessibilité de l'application malveillante StrongPity, l'un de ses modules aura également accès aux notifications entrantes et pourra exfiltrer les communications de 17 applications telles que Viber, Skype, Gmail, Messenger ainsi que Tinder.

La campagne est probablement très étroitement ciblée, car la télémétrie ESET n'identifie toujours aucune victime. Au cours de nos recherches, la version analysée du logiciel malveillant disponible sur le site Web de copie n'était plus active et il n'était plus possible de l'installer avec succès et de déclencher sa fonctionnalité de porte dérobée car StrongPity n'a pas obtenu son propre ID API pour son application Telegram trojanisée. Mais cela peut changer à tout moment si l'auteur de la menace décide de mettre à jour l'application malveillante.

Vue d’ensemble

Cette campagne StrongPity s'articule autour d'une porte dérobée Android livrée à partir d'un domaine contenant le mot "néerlandais". Ce site Web imite le service légitime nommé Shagle à shagle.com. Dans la figure 1, vous pouvez voir les pages d'accueil des deux sites Web. L'application malveillante est fournie directement à partir du site Web usurpant l'identité et n'a jamais été mise à disposition sur le Google Play Store. Il s'agit d'une version cheval de Troie de l'application Telegram légitime, présentée comme s'il s'agissait de l'application Shagle, bien qu'il n'existe actuellement aucune application Android Shagle officielle.

Figure 1. Comparaison du site Web légitime à gauche et du copieur à droite

Comme vous pouvez le voir sur la figure 2, le code HTML du faux site inclut la preuve qu'il a été copié à partir du site légitime. shagle.com chantier le 1er novembrest, 2021, à l'aide de l'outil automatisé HTTrack. Le domaine malveillant a été enregistré le même jour, de sorte que le site imitateur et la fausse application Shagle sont peut-être disponibles au téléchargement depuis cette date.

Figure 2. Journaux générés par l'outil HTTrack enregistrés dans le code HTML du faux site Web

Victimologie

Sur Juillet 18th, 2022, l'une de nos règles YARA chez VirusTotal a été déclenchée lorsqu'une application malveillante et un lien vers un site Web imitant shagle.com ont été téléchargés. Dans le même temps, nous avons été informés le Twitter à propos de cet échantillon, bien qu'il ait été par erreur attribué à Bahamut. Les données de télémétrie d'ESET n'identifient toujours aucune victime, ce qui suggère que la campagne a probablement été étroitement ciblée.

attribution

L'APK distribué par le site Web copieur Shagle est signé avec le même certificat de signature de code (voir Figure 3) qu'une application e-gov syrienne trojanisée découverte en 2021 par Trend Micro, qui a également été attribué à StrongPity.

Figure 3. Ce certificat a signé la fausse application Shagle et l'application e-gov syrienne contenant un cheval de Troie

Un code malveillant dans la fausse application Shagle a été vu dans la campagne mobile précédente de StrongPity et implémente une porte dérobée simple mais fonctionnelle. Nous avons vu ce code être utilisé uniquement dans les campagnes menées par StrongPity. Dans la figure 4, vous pouvez voir certaines des classes malveillantes ajoutées, la plupart des noms masqués étant même identiques dans le code des deux campagnes.

Figure 4. Comparaison des noms de classe de l'application e-gov syrienne trojanisée (à gauche) et de l'application Telegram trojanisée (à droite)

En comparant le code de la porte dérobée de cette campagne à celui de l'application e-gov syrienne trojanisée (SHA-1 : 5A5910C2C9180382FCF7A939E9909044F0E8918B), il a des fonctionnalités étendues mais avec le même code utilisé pour fournir des fonctions similaires. Dans la figure 5 et la figure 6, vous pouvez comparer le code des deux exemples qui est responsable de l'envoi de messages entre les composants. Ces messages sont responsables du déclenchement du comportement malveillant de la porte dérobée. Par conséquent, nous croyons fermement que la fausse application Shagle est liée au groupe StrongPity.

Figure 5. Répartiteur de messages responsable du déclenchement de la fonctionnalité malveillante dans l'application e-gov syrienne infectée par un cheval de Troie

Figure 6. Répartiteur de messages responsable du déclenchement de fonctionnalités malveillantes dans la fausse application Shagle

L'analyse technique

Accès initial

Comme décrit dans la section Présentation de cet article de blog, la fausse application Shagle a été hébergée sur le site Web Shagle copycat, à partir duquel les victimes devaient choisir de télécharger et d'installer l'application. Il n'y avait aucun subterfuge suggérant que l'application était disponible sur Google Play et nous ne savons pas comment les victimes potentielles ont été attirées ou autrement découvertes sur le faux site Web.

Toolset

Selon la description sur le site Web du copieur, l'application est gratuite et destinée à être utilisée pour rencontrer et discuter avec de nouvelles personnes. Cependant, l'application téléchargée est une application Telegram corrigée de manière malveillante, en particulier la version 7.5.0 (22467) de Telegram, qui était disponible au téléchargement vers le 25 février.th 2022.

La version reconditionnée de Telegram utilise le même nom de package que l'application Telegram légitime. Les noms de package sont censés être des identifiants uniques pour chaque application Android et doivent être uniques sur un appareil donné. Cela signifie que si l'application officielle Telegram est déjà installée sur l'appareil d'une victime potentielle, cette version dérobée ne peut pas être installée ; voir Figure 7. Cela peut signifier l'une des deux choses suivantes : soit l'auteur de la menace communique d'abord avec les victimes potentielles et les pousse à désinstaller Telegram de leurs appareils s'il est installé, soit la campagne se concentre sur les pays où l'utilisation de Telegram est rare pour la communication.

Figure 7. Si l'application officielle Telegram est déjà installée sur l'appareil, la version cheval de Troie ne peut pas être installée avec succès

L'application Telegram trojanisée de StrongPity aurait dû fonctionner comme la version officielle pour la communication, en utilisant des API standard qui sont bien documentées sur le site Web de Telegram - mais l'application ne fonctionne plus, nous ne pouvons donc pas vérifier.

Au cours de nos recherches, la version actuelle du logiciel malveillant disponible sur le site Web du copieur n'était plus active et il n'était plus possible de l'installer avec succès et de déclencher sa fonctionnalité de porte dérobée. Lorsque nous avons essayé de nous inscrire en utilisant notre numéro de téléphone, l'application Telegram reconditionnée n'a pas pu obtenir l'ID API du serveur et n'a donc pas fonctionné correctement. Comme le montre la figure 8, l'application affiche un API_ID_PUBLISHED_FLOOD Erreur.

Figure 8. Erreur affichée lors de l'inscription à l'aide du numéro de téléphone

Basé sur Telegram documentation sur les erreurs, il semble que StrongPity n'ait pas obtenu son propre API ID. Au lieu de cela, il a utilisé l'exemple d'ID d'API inclus dans le code open source de Telegram à des fins de test initial. Telegram surveille l'utilisation de l'ID d'API et limite l'exemple d'ID d'API, de sorte que son utilisation dans une application publiée entraîne l'erreur illustrée à la figure 8. En raison de l'erreur, il n'est plus possible de s'inscrire et d'utiliser l'application ou de déclencher sa fonctionnalité malveillante. . Cela pourrait signifier que les opérateurs de StrongPity n'y ont pas réfléchi, ou peut-être qu'il y avait suffisamment de temps pour espionner les victimes entre la publication de l'application et sa désactivation par Telegram pour une utilisation excessive de l'APP ID. Étant donné qu'aucune nouvelle version fonctionnelle de l'application n'a jamais été mise à disposition sur le site Web, cela pourrait suggérer que StrongPity a déployé avec succès le logiciel malveillant sur les cibles souhaitées.

En conséquence, la fausse application Shagle disponible sur le faux site Web au moment de notre recherche n'était plus active. Cependant, cela peut changer à tout moment si les acteurs de la menace décident de mettre à jour l'application malveillante.

Les composants et les autorisations requises par le code de la porte dérobée StrongPity sont ajoutés à l'application Telegram. AndroidManifest.xml dossier. Comme le montre la figure 9, cela permet de voir facilement quelles autorisations sont nécessaires pour le logiciel malveillant.

Figure 9. AndroidManifest.xml avec les composants et les autorisations de la porte dérobée StrongPity en surbrillance

À partir du manifeste Android, nous pouvons voir que des classes malveillantes ont été ajoutées dans le org.telegram.messenger package pour apparaître dans le cadre de l'application d'origine.

La fonctionnalité malveillante initiale est déclenchée par l'un des trois récepteurs de diffusion qui sont exécutés après des actions définies - BOOT_COMPLETED, BATTERIE FAIBLEou USER_PRESENT. Après le premier démarrage, il enregistre dynamiquement des récepteurs de diffusion supplémentaires pour surveiller ALLUME L'ÉCRAN, ÉCRAN_DÉSACTIVÉet CONNECTIVITY_CHANGE événements. La fausse application Shagle utilise ensuite IPC (communication interprocessus) pour communiquer entre ses composants afin de déclencher diverses actions. Il contacte le serveur C&C via HTTPS pour envoyer des informations de base sur l'appareil compromis et reçoit un fichier crypté AES contenant 11 modules binaires qui seront exécutés dynamiquement par l'application parent ; voir Figure 10. Comme le montre la Figure 11, ces modules sont stockés dans la mémoire interne de l'application, /data/user/0/org.telegram.messenger/files/.li/.

Figure 10. La porte dérobée StrongPity reçoit un fichier chiffré contenant des modules exécutables

Figure 11. Modules reçus du serveur stockés dans le stockage interne de la porte dérobée StrongPity

Chaque module est responsable de différentes fonctionnalités. La liste des noms de module est stockée dans les préférences partagées locales dans le partageconfig.xml dossier; voir Figure 12.

Les modules sont déclenchés dynamiquement par l'application parent chaque fois que nécessaire. Chaque module a son propre nom de module et est responsable de différentes fonctionnalités telles que :

  • libarm.jar (module cm) – enregistre les appels téléphoniques
  • libmpeg4.jar (module nt) - collecte le texte des messages de notification entrants de 17 applications
  • local.jar (module fm/fp) - collecte la liste des fichiers (arborescence des fichiers) sur l'appareil
  • téléphone.jar (module ms) - utilise à mauvais escient les services d'accessibilité pour espionner les applications de messagerie en exfiltrant le nom du contact, le message de chat et la date
  • ressources.jar (module sm) - collecte les messages SMS stockés sur l'appareil
  • services.jar (module lo) - obtient l'emplacement de l'appareil
  • systemui.jar (module sy) - collecte des informations sur l'appareil et le système
  • minuterie.jar (module ia) - recueille une liste des applications installées
  • boîte à outils.jar (module cn) - collecte la liste de contacts
  • watchkit.jar (module ac) - collecte une liste de comptes d'appareils
  • wearkit.jar (module cl) - collecte une liste des journaux d'appels

Figure 12. Liste des modules utilisés par la porte dérobée StrongPity

Toutes les données obtenues sont stockées en clair dans /data/user/0/org.telegram.messenger/databases/outdata, avant d'être chiffré à l'aide d'AES et envoyé au serveur C&C, comme vous pouvez le voir sur la figure 13.

Figure 13. Données utilisateur chiffrées exfiltrées vers le serveur C&C

Cette porte dérobée StrongPity a des fonctionnalités d'espionnage étendues par rapport à la première version StrongPity découverte pour mobile. Il peut demander à la victime d'activer les services d'accessibilité et d'obtenir un accès aux notifications ; voir Figure 14. Si la victime les active, le logiciel malveillant espionnera les notifications entrantes et abusera des services d'accessibilité pour exfiltrer les communications de chat d'autres applications.

Figure 14. Demandes de logiciels malveillants, de la part de la victime, accès aux notifications et services d'accessibilité

Avec l'accès aux notifications, le logiciel malveillant peut lire les messages de notification reçus provenant de 17 applications ciblées. Voici une liste de leurs noms de packages :

  • Messager (com.facebook.orca)
  • Messager Lite (com.facebook.mlite)
  • Viber - Chats et appels sécurisés (com.viber.voip)
  • Skype (com.skype.raider)
  • LIGNE : Appels et messages (jp.naver.line.android)
  • Kik — Application de messagerie et de chat (kik.android)
  • tango-diffusion en direct et chat vidéo (com.sgiggle.production)
  • Hangouts (com.google.android.talk)
  • Télégramme (org.telegram.messenger)
  • WeChat (com.tencent.mm)
  • Snapchat (com.sn)
  • Tinder (com.tinder)
  • Nouvelles et contenu de la randonnée (com.bsb.hike)
  • Instagram (com.instagram.android)
  • Twitter (com.twitter.android)
  • Gmail (com.google.android.gm)
  • imo-Appels internationaux et chat (com.imo.android.imoim)

Si l'appareil est déjà rooté, le logiciel malveillant essaie silencieusement d'accorder des autorisations à WRITE_SETTINGS, WRITE_SECURE_SETTINGS, REDÉMARRER, MOUNT_FORMAT_FILESYSTEMS, MODIFY_PHONE_STATE, PACKAGE_USAGE_STATS, READ_PRIVILEGED_PHONE_STATE, pour activer les services d'accessibilité et pour accorder l'accès aux notifications. La porte dérobée StrongPity essaie alors de désactiver l'application SecurityLogAgent (com.samsung.android.securitylogagent), qui est une application système officielle qui aide à protéger la sécurité des appareils Samsung et désactive toutes les notifications d'application provenant du logiciel malveillant lui-même qui pourraient être affichées à la victime à l'avenir en cas d'erreurs, de plantages ou d'avertissements de l'application. La porte dérobée StrongPity n'essaie pas elle-même de rooter un appareil.

L'algorithme AES utilise le mode CBC et des clés codées en dur pour déchiffrer les modules téléchargés :

  • Clé AES – aaarien d'impossiblebbb
  • AES IV – aaarien d'impos

Conclusion

La campagne mobile exploitée par le groupe StrongPity APT s'est fait passer pour un service légitime pour distribuer sa porte dérobée Android. StrongPity a reconditionné l'application officielle Telegram pour inclure une variante du code de porte dérobée du groupe.

Ce code malveillant, sa fonctionnalité, les noms de classe et le certificat utilisé pour signer le fichier APK sont les mêmes que ceux de la campagne précédente ; nous pensons donc avec une grande confiance que cette opération appartient au groupe StrongPity.

Au moment de nos recherches, l'échantillon qui était disponible sur le site Web de copieur a été désactivé en raison de la API_ID_PUBLISHED_FLOOD erreur, ce qui empêche le déclenchement du code malveillant et les victimes potentielles suppriment éventuellement l'application qui ne fonctionne pas de leurs appareils.

L'analyse du code révèle que la porte dérobée est modulaire et que des modules binaires supplémentaires sont téléchargés à partir du serveur C&C. Cela signifie que le nombre et le type de modules utilisés peuvent être modifiés à tout moment pour s'adapter aux demandes de campagne lorsqu'ils sont exploités par le groupe StrongPity.

D'après notre analyse, il s'agit de la deuxième version du malware Android de StrongPity ; par rapport à sa première version, il abuse également des services d'accessibilité et d'accès aux notifications, stocke les données collectées dans une base de données locale, tente d'exécuter su commandes, et pour la plupart de la collecte de données utilise des modules téléchargés.

IoCs

Fichiers

SHA-1 Nom du fichier Nom de détection ESET Description
50F79C7DFABECF04522AEB2AC987A800AB5EC6D7 vidéo.apk Android/StrongPity.A Porte dérobée StrongPity (application Android Telegram légitime reconditionnée avec un code malveillant).
77D6FE30DAC41E1C90BDFAE3F1CFE7091513FB91 libarm.jar Android/StrongPity.A Module mobile StrongPity chargé d'enregistrer les appels téléphoniques.
5A15F516D5C58B23E19D6A39325B4B5C5590BDE0 libmpeg4.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter le texte des notifications reçues.
D44818C061269930E50868445A3418A0780903FE local.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter une liste de fichiers sur l'appareil.
F1A14070D5D50D5A9952F9A0B4F7CA7FED2199EE téléphone.jar Android/StrongPity.A Module mobile StrongPity responsable de l'utilisation abusive des services d'accessibilité pour espionner d'autres applications.
3BFAD08B9AC63AF5ECF9AA59265ED24D0C76D91E ressources.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter les messages SMS stockés sur l'appareil.
5127E75A8FAF1A92D5BD0029AF21548AFA06C1B7 services.jar Android/StrongPity.A Module mobile StrongPity chargé d'obtenir l'emplacement de l'appareil.
BD40DF3AD0CE0E91ACCA9488A2FE5FEEFE6648A0 systemui.jar Android/StrongPity.A Module mobile StrongPity responsable de la collecte des informations sur l'appareil et le système.
ED02E16F0D57E4AD2D58F95E88356C17D6396658 minuterie.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter une liste des applications installées.
F754874A76E3B75A5A5C7FE849DDAE318946973B boîte à outils.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter la liste des contacts.
E46B76CADBD7261FE750DBB9B0A82F262AFEB298 watchkit.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter une liste de comptes d'appareils.
D9A71B13D3061BE12EE4905647DDC2F1189F00DE wearkit.jar Android/StrongPity.A Module mobile StrongPity chargé de collecter une liste des journaux d'appels.

Réseau

IP Provider Vu la première fois Détails
141.255.161[.]185 NameCheap 2022-07-28 puce de circuit intégrée[.]com C & C
185.12.46[.]138 Petit pain au porc 2020-04-21 segment de logiciel de réseau[.]com C & C

Techniques d'ATT&CK D'ONGLET

Ce tableau a été construit avec Version 12 du cadre MITRE ATT&CK.

Tactique ID Nom Description
Persistence T1398 Scripts d'initialisation de démarrage ou de connexion La porte dérobée StrongPity reçoit le BOOT_COMPLETED diffuser l'intention d'activer au démarrage de l'appareil.
T1624.001 Exécution déclenchée par un événement : récepteurs de diffusion La fonctionnalité de porte dérobée StrongPity est déclenchée si l'un de ces événements se produit : BATTERIE FAIBLE, USER_PRESENT, ALLUME L'ÉCRAN, ÉCRAN_DÉSACTIVÉou CONNECTIVITY_CHANGE.
Évasion défensive T1407 Télécharger le nouveau code au moment de l'exécution La porte dérobée StrongPity peut télécharger et exécuter des modules binaires supplémentaires.
T1406 Fichiers ou informations obscurcis La porte dérobée StrongPity utilise le cryptage AES pour masquer les modules téléchargés et masquer les chaînes dans son APK.
T1628.002 Masquer les artefacts : évasion utilisateur La porte dérobée StrongPity peut désactiver toutes les notifications d'application provenant du logiciel malveillant lui-même pour masquer sa présence.
T1629.003 Altérer les défenses : désactiver ou modifier les outils Si la porte dérobée StrongPity a racine, elle désactive SecurityLogAgent (com.samsung.android.securitylogagent) si présent.
Découverte T1420 Découverte de fichiers et de répertoires La porte dérobée StrongPity peut répertorier les fichiers disponibles sur le stockage externe.
T1418 Découverte de logiciels La porte dérobée StrongPity peut obtenir une liste des applications installées.
T1422 Découverte de la configuration réseau du système La porte dérobée StrongPity peut extraire IMEI, IMSI, adresse IP, numéro de téléphone et pays.
T1426 Découverte des informations système La porte dérobée StrongPity peut extraire des informations sur l'appareil, notamment le type de connexion Internet, le numéro de série de la carte SIM, l'ID de l'appareil et les informations système communes.
Collection T1417.001 Capture d'entrée : enregistrement de frappe La porte dérobée StrongPity enregistre les frappes au clavier dans les messages de chat et les données d'appel des applications ciblées.
T1517 Notifications d'accès La porte dérobée StrongPity peut collecter les messages de notification de 17 applications ciblées.
T1532 Archiver les données collectées La porte dérobée StrongPity crypte les données exfiltrées à l'aide d'AES.
T1430 Suivi d'emplacement La porte dérobée StrongPity suit l'emplacement de l'appareil.
T1429 Capture audio La porte dérobée StrongPity peut enregistrer les appels téléphoniques.
T1513 Capture d'écran La porte dérobée StrongPity peut enregistrer l'écran de l'appareil à l'aide du MediaProjectionManager API.
T1636.002 Données utilisateur protégées : journaux d'appels La porte dérobée StrongPity peut extraire les journaux d'appels.
T1636.003 Données utilisateur protégées : liste de contacts La porte dérobée StrongPity peut extraire la liste de contacts de l'appareil.
T1636.004 Données utilisateur protégées : messages SMS La porte dérobée StrongPity peut extraire des messages SMS.
Commander et contrôler T1437.001 Protocole de couche d'application : protocoles Web La porte dérobée StrongPity utilise HTTPS pour communiquer avec son serveur C&C.
T1521.001 Canal crypté : cryptographie symétrique La porte dérobée StrongPity utilise AES pour crypter sa communication.
exfiltration T1646 Exfiltration sur le canal C2 La porte dérobée StrongPity exfiltre les données en utilisant HTTPS.
spot_img

Dernières informations

spot_img