MQsTTang : la dernière porte dérobée de Mustang Panda innove avec Qt et MQTT

MQsTTang : la dernière porte dérobée de Mustang Panda innove avec Qt et MQTT

Les chercheurs d'ESET dévoilent MQsTTang, une nouvelle porte dérobée utilisée par Mustang Panda, qui communique via le protocole MQTT

Les chercheurs d'ESET ont analysé MQsTTang, une nouvelle porte dérobée personnalisée que nous attribuons au groupe Mustang Panda APT. Cette porte dérobée fait partie d'une campagne en cours qui remonte au début de janvier 2023. Contrairement à la plupart des logiciels malveillants du groupe, MQsTTang ne semble pas être basé sur des familles existantes ou des projets accessibles au public.

Mustang Panda est connu pour ses variantes Korplug personnalisées (également appelé PlugX) et des chaînes de chargement élaborées. Contrairement aux tactiques habituelles du groupe, MQsTTang n'a qu'une seule étape et n'utilise aucune technique d'obscurcissement.

Victimologie

Nous avons vu des entités inconnues en Bulgarie et en Australie dans notre télémétrie. Nous avons également des informations indiquant que cette campagne vise une institution gouvernementale à Taïwan. Cependant, en raison de la nature des noms de fichiers leurres utilisés, nous pensons que des organisations politiques et gouvernementales en Europe et en Asie sont également ciblées. Cela serait également en ligne avec le ciblage des autres campagnes récentes du groupe. Comme documenté par des collègues chercheurs de Proofpoint, Mustang Panda est connu pour cibler les entités gouvernementales européennes depuis au moins 2020 et a encore accru son activité en Europe depuis l'invasion de l'Ukraine par la Russie. La figure 1 montre notre vision du ciblage pour cette campagne.

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Figure 1. Carte montrant les cibles connues et suspectées de MQsTTang

attribution

Nous attribuons cette nouvelle porte dérobée et la campagne à Mustang Panda avec une grande confiance sur la base des indicateurs suivants.

Nous avons trouvé des archives contenant des exemples de MQsTTang dans deux dépôts GitHub appartenant à l'utilisateur YanNaingOo0072022. Un autre référentiel GitHub du même utilisateur a été utilisé dans une précédente campagne Mustang Panda décrite par Avast dans un Article de blog de décembre 2022.

L'un des serveurs utilisés dans la campagne actuelle exécutait un serveur FTP anonyme accessible au public qui semble être utilisé pour mettre en scène des outils et des charges utiles. Dans le /pub/dieu répertoire de ce serveur, il existe plusieurs chargeurs, archives et outils Korplug qui ont été utilisés dans les campagnes précédentes de Mustang Panda. Il s'agit du même répertoire que celui utilisé par le stager décrit dans le blog Avast susmentionné. Ce serveur disposait également d'un /pub/gd répertoire, qui était un autre chemin utilisé dans cette campagne.

Une partie de l'infrastructure utilisée dans cette campagne correspond également à l'empreinte réseau des serveurs Mustang Panda précédemment connus.

L'analyse technique

MQsTTang est une porte dérobée barebone qui permet à l'attaquant d'exécuter des commandes arbitraires sur la machine d'une victime et d'obtenir le résultat. Malgré tout, il présente des caractéristiques intéressantes. Le principal d'entre eux est son utilisation de la Protocole MQTT pour la communication C&C. MQTT est généralement utilisé pour la communication entre les appareils IoT et les contrôleurs, et le protocole n'a pas été utilisé dans de nombreuses familles de logiciels malveillants documentés publiquement. Un tel exemple est Chrysaor, également connu sous le nom de Pégase pour Android. Du point de vue d'un attaquant, l'un des avantages de MQTT est qu'il cache le reste de son infrastructure derrière un courtier. Ainsi, la machine compromise ne communique jamais directement avec le serveur C&C. Comme le montre la figure 2, cette capacité est obtenue en utilisant l'open source bibliothèque QMQTT. Cette bibliothèque dépend de la Framework Qt, dont une grande partie est liée de manière statique dans le logiciel malveillant. L'utilisation du framework Qt pour le développement de logiciels malveillants est également assez rare. MagicRAT de Lazare est l'un des rares exemples récemment documentés.

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Figure 2. RTTI montrant les classes de la bibliothèque QMQTT

MQsTTang est distribué dans des archives RAR qui ne contiennent qu'un seul exécutable. Ces exécutables ont généralement des noms liés à la diplomatie et aux passeports tels que :

  • CVs Officier Amb PASSEPORT Ministry Of Foreign Affairs.exe
  • Documents membres de la délégation diplomatique d'Allemagne.Exe
  • PDF_Passeport et CV des membres diplomatiques de Tokyo du JAPON.eXE
  • Note No.18-NG-23 de Embassy of Japan.exe

Ces archives sont hébergées sur un serveur web sans nom de domaine associé. Ce fait, ainsi que les noms de fichiers, nous amène à croire que le malware se propage via le spearphishing.

Jusqu'à présent, nous n'avons observé que quelques échantillons. Outre les variations de certaines constantes et chaînes codées en dur, les échantillons sont remarquablement similaires. Le seul changement notable est l'ajout de certaines techniques d'anti-analyse dans les dernières versions. La première consiste à utiliser les CreateToolhelp32Snapshot Fonction API Windows pour parcourir les processus en cours d'exécution et rechercher les débogueurs et outils de surveillance connus suivants.

  • cheatengine-x86_64.exe
  • ollydbg.exe
  • ida.exe
  • ida64.exe
  • radare2.exe
  • x64dbg.exe
  • procmon.exe
  • procmon64.exe
  • procexp.exe
  • processhacker.exe
  • pestudio.exe
  • systracerx32.exe
  • fiddler.exe
  • tcpview.exe

Notez que, bien que le logiciel malveillant soit un exécutable 32 bits, il vérifie uniquement la présence de x64dbg et non son homologue 32 bits, x32dbg.

La deuxième technique utilise la RechercherFenêtreW API Windows pour rechercher les classes et titres de fenêtre suivants utilisés par les outils d'analyse connus :

  • PROCMON_WINDOW_CLASS
  • OLLYDBBG
  • WinDbgFrameClass
  • OllyDbg – [CPU]
  • Débogueur d'immunité - [CPU]

Lorsqu'il est exécuté directement, le logiciel malveillant lance une copie de lui-même avec 1 comme argument de ligne de commande. Ceci est répété par le nouveau processus, l'argument étant incrémenté de 1 à chaque exécution. Lorsque cet argument atteint des valeurs spécifiques, certaines tâches seront exécutées. Notez que les valeurs exactes varient entre les échantillons ; ceux mentionnés ci-dessous correspondent à l'échantillon avec SHA-1 02D95E0C369B08248BFFAAC8607BBA119D83B95B. Cependant, les tâches elles-mêmes et l'ordre dans lequel elles sont exécutées sont constants.

La figure 3 montre un aperçu de ce comportement ainsi que les tâches qui sont exécutées lors de la première exécution du logiciel malveillant.

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Figure 3. Graphique d'exécution montrant les sous-processus et les tâches exécutées

Le tableau 1 contient une liste des tâches et la valeur à laquelle chacune d'elles est exécutée. Nous les décrirons plus en détail dans les prochains paragraphes.

Tableau 1. Tâches exécutées par la porte dérobée

Numéro de tâche Valeur des arguments Description de la tâche
1 5 Démarrez la communication C&C.
2 9 Créer une copie et lancer.
3 32 Créer une copie de persistance.
4 119 Établir la persévérance.
5 148 Arrête l'exécution récursive.

Si un outil d'analyse ou un débogueur est détecté à l'aide des techniques que nous avons décrites précédemment, le comportement de la tâche 1 est modifié et les tâches 2, 3 et 4 sont entièrement ignorées.

Tâche 1 : Communication C&C

Comme mentionné précédemment, MQsTTang communique avec son serveur C&C via le protocole MQTT. Tous les échantillons observés utilisent 3.228.54.173 comme courtier. Ce serveur est un courtier public exploité par EMQX, qui se trouve également être le mainteneur de la bibliothèque QMQTT. Cela pourrait être un moyen de donner l'impression que le trafic réseau est légitime et de cacher la propre infrastructure de Mustang Panda. L'utilisation de ce courtier public offre également de la résilience ; il est peu probable que le service soit supprimé en raison de ses nombreux utilisateurs légitimes et, même si les serveurs C&C actuels sont interdits ou supprimés, Mustang Panda pourrait en créer de nouveaux et utiliser les mêmes sujets MQTT sans perturber le fonctionnement de MQsTTang.

Cependant, cette campagne pourrait également être un cas test par Mustang Panda avant de décider d'investir du temps et des ressources pour créer son propre courtier. Ceci est soutenu par le faible nombre d'échantillons que nous avons observés et la nature très simple de MQsTTang.

Comme le montre la figure 4, le logiciel malveillant et le serveur C&C utilisent deux rubriques MQTT pour leur communication. Le premier, iot/serveur2, est utilisé pour la communication du client vers le serveur. Le second est utilisé pour la communication du serveur vers le client. Il suit le format iot/v2/ De est généré en prenant les 8 derniers octets, sous forme hexadécimale, d'un UUID. Si un outil d'analyse est détecté, server2 et les v2 sont respectivement remplacés par server0 et les v0. C'est probablement pour éviter d'avertir les défenseurs en annulant complètement l'exécution du malware plus tôt.

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Figure 4. Graphique réseau simplifié de la communication entre la porte dérobée et le serveur C&C

Toutes les communications entre le serveur et le client utilisent le même schéma de codage. La charge utile du message MQTT est un objet JSON avec un seul attribut nommé msg. Pour générer la valeur de cet attribut, le contenu réel est d'abord encodé en base64, puis XOR avec la chaîne codée en dur nasa, et encodés en base64 à nouveau. Nous décrirons le format exact de ces charges utiles dans les sections pertinentes.

Lors de la première connexion au courtier, le logiciel malveillant s'abonne à son sujet unique. Ensuite, et toutes les 30 secondes par la suite, le client publie un message KeepAlive dans le sujet du serveur. Le contenu de ce message est un objet JSON au format suivant :

Lorsque le serveur veut émettre une commande, il publie un message dans le sujet unique du client. Le contenu en clair de ce message est simplement la commande à exécuter. Comme le montre la figure 5, le client exécute la commande reçue en utilisant QProcess :: startCommand du framework Qt. La sortie, obtenue à l'aide de QProcess ::readAllStandardOutput, est ensuite renvoyé dans un objet JSON au format suivant :

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Figure 5. Exécution des commandes reçues à l'aide de QProcessus classe

Étant donné que seul le contenu de la sortie standard est renvoyé, le serveur ne recevra pas d'erreurs ni d'avertissements. Du point de vue du serveur, une commande qui a échoué est donc indiscernable d'une commande qui ne produit simplement aucune sortie à moins qu'une sorte de redirection ne soit effectuée.

Tâches 2 et 3 : copier le logiciel malveillant

Les deuxième et troisième tâches sont assez similaires les unes aux autres. Ils copient l'exécutable du logiciel malveillant dans un chemin codé en dur ; c:userspublicvdump.exe et les c:userspublicvcall.exe respectivement. Les noms de fichiers utilisés sont différents pour chaque échantillon, mais ils sont toujours situés dans le C:utilisateurspublic répertoire.

Dans la deuxième tâche, la copie nouvellement créée est ensuite lancée avec l'argument de ligne de commande 97.

Tâche 4 : Établir la persévérance

La persistance est établie par la quatrième tâche, qui crée une nouvelle valeur qvlc ajuster à c:userspublicvcall.exe sous le HKCULogicielMicrosoftWindowsVersion actuelleExécuter clé d'enregistrement. Cela entraînera l'exécution du logiciel malveillant au démarrage.

Lorsque MQsTTang est exécuté au démarrage en tant que c:userspublicvcall.exe, seule la tâche de communication C&C est exécutée.

Conclusion

La campagne Mustang Panda décrite dans cet article est en cours au moment de la rédaction de cet article. La victimologie n'est pas claire, mais les noms de fichiers leurres sont conformes aux autres campagnes du groupe qui ciblent des entités politiques européennes.

Cette nouvelle porte dérobée MQsTTang fournit une sorte de shell distant sans les cloches et les sifflets associés aux autres familles de logiciels malveillants du groupe. Cependant, cela montre que Mustang Panda explore de nouvelles piles technologiques pour ses outils. Il reste à voir si cette porte dérobée deviendra un élément récurrent de l'arsenal du groupe, mais c'est un exemple de plus du cycle de développement et de déploiement rapide du groupe.

ESET Research propose des rapports d'intelligence APT privés et des flux de données. Pour toute demande concernant ce service, rendez-vous sur Intelligence des menaces ESET .

IoCs

Fichiers

SHA-1 Nom de fichier Détection Description
A1C660D31518C8AFAA6973714DE30F3D576B68FC CV Amb.rar Win32/Agent.AFBI Archive RAR utilisée pour distribuer la porte dérobée MQsTTang.
430C2EF474C7710345B410F49DF853BDEAFBDD78 CVs Officier Amb PASSEPORT Ministry Of Foreign Affairs.exe Win32/Agent.AFBI Porte dérobée MQsTTang.
F1A8BF83A410B99EF0E7FDF7BA02B543B9F0E66C Documents.rar Win32/Agent.AFBI Archive RAR utilisée pour distribuer la porte dérobée MQsTTang.
02D95E0C369B08248BFFAAC8607BBA119D83B95B PDF_Passeport et CV des membres diplomatiques de Tokyo du JAPON.eXE Win32/Agent.AFBI Porte dérobée MQsTTang.
0EA5D10399524C189A197A847B8108AA8070F1B1 Documents membres de la délégation diplomatique d'Allemagne.Exe Win32/Agent.AFBI Porte dérobée MQsTTang.
982CCAF1CB84F6E44E9296C7A1DDE2CE6A09D7BB Documents.rar Win32/Agent.AFBI Archive RAR utilisée pour distribuer la porte dérobée MQsTTang.
740C8492DDA786E2231A46BFC422A2720DB0279A 23 de Ambassade du Japon.exe Win32/Agent.AFBI Porte dérobée MQsTTang.
AB01E099872A094DC779890171A11764DE8B4360 BoomerangLib.dll Win32/Korplug.TH Chargeur connu Mustang Panda Korplug.
61A2D34625706F17221C1110D36A435438BC0665 breakpad.dll Win32/Korplug.UB Chargeur connu Mustang Panda Korplug.
30277F3284BCEEF0ADC5E9D45B66897FA8828BFD coreclr.dll Win32/Agent.ADMW Chargeur connu Mustang Panda Korplug.
BEE0B741142A9C392E05E0443AAE1FA41EF512D6 HPCustPartUI.dll Win32/Korplug.UB Chargeur connu Mustang Panda Korplug.
F6F3343F64536BF98DE7E287A7419352BF94EB93 HPCustPartUI.dll Win32/Korplug.UB Chargeur connu Mustang Panda Korplug.
F848C4F3B9D7F3FE1DB3847370F8EEFAA9BF60F1 libcef.dll Win32/Korplug.TX Chargeur connu Mustang Panda Korplug.

Réseau

IP Domaine Fournisseur d'hébergement Vu la première fois Détails
3.228.54.173 courtier.emqx.io Amazon.com, Inc. 2020-03-26 Courtier MQTT public légitime.
80.85.156[.]151 N/D Tcheliabinsk-Signal LLC 2023-01-05 Serveur de livraison MQsTTang.
80.85.157[.]3 N/D Tcheliabinsk-Signal LLC 2023-01-16 Serveur de livraison MQsTTang.
185.144.31[.]86 N/D Rôle Abus-C 2023-01-22 Serveur de livraison MQsTTang.

Dépôts Github

  • https://raw.githubusercontent[.]com/YanNaingOo0072022/14/main/Documents.rar
  • https://raw.githubusercontent[.]com/YanNaingOo0072022/ee/main/CVs Amb.rar

Techniques d'ATT&CK D'ONGLET

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

Tactique ID Nom Description
Développement des ressources T1583.003 Acquérir une infrastructure : serveur privé virtuel Certains serveurs utilisés dans la campagne sont sur un hébergement mutualisé.
T1583.004 Acquérir une infrastructure : serveur Certains serveurs utilisés dans la campagne semblent être exclusifs à Mustang Panda.
T1587.001 Développer des capacités : logiciels malveillants MQsTTang est une porte dérobée personnalisée, probablement développée par Mustang Panda.
T1588.002 Obtenir des capacités : outil Plusieurs outils légitimes et open source, y compris psexec, ps, boucleet une plink, ont été trouvés sur le serveur intermédiaire.
T1608.001 Fonctionnalités d'étape : télécharger des logiciels malveillants MQsTTang a été téléchargé sur le serveur Web pour distribution.
T1608.002 Fonctionnalités de scène : outil de téléchargement Plusieurs outils ont été téléchargés sur un serveur FTP.
Accès initial T1566.002 Hameçonnage : lien de harponnage MQsTTang est distribué via des liens de harponnage vers un fichier malveillant sur un serveur Web contrôlé par un attaquant.
Internationaux T1106 API native MQsTTang utilise le QProcessus classe du framework Qt pour exécuter des commandes.
T1204.002 Exécution utilisateur : fichier malveillant MQsTTang compte sur l'utilisateur pour exécuter le fichier malveillant téléchargé.
Persistence T1547.001 Exécution de démarrage automatique au démarrage ou à l'ouverture de session : clés d'exécution du registre/dossier de démarrage MQsTTang persiste en créant une clé de registre Run.
Évasion défensive T1036.004 Mascarade : Tâche ou service de mascarade Dans la plupart des exemples, la clé de registre est créée avec le nom qvlc. Cela correspond au nom d'un exécutable légitime utilisé par VLC.
T1036.005 Masquage : correspond à un nom ou à un emplacement légitime Lors de la création de copies, MQsTTang utilise les noms de fichiers de programmes légitimes.
T1480 Garde-corps d'exécution MQsTTang vérifie les chemins à partir desquels il est exécuté pour déterminer les tâches à exécuter.
T1622 Évasion du débogueur MQsTTang détecte les débogueurs en cours d'exécution et modifie son comportement s'il en trouve.
Commander et contrôler T1071 Protocole de la couche application MQsTTang communique avec son serveur C&C en utilisant le protocole MQTT.
T1102.002 Service Web : communication bidirectionnelle MQsTTang utilise un courtier MQTT public légitime.
T1132.001 Codage des données : Codage standard Le contenu des messages entre le malware et le serveur est encodé en base64.
T1573.001 Canal crypté : cryptographie symétrique Le contenu des messages entre le logiciel malveillant et le serveur est crypté à l'aide d'une clé XOR répétitive.
exfiltration T1041 Exfiltration sur le canal C2 La sortie des commandes exécutées est renvoyée au serveur en utilisant le même protocole.

MQsTTang : la dernière porte dérobée de Mustang Panda ouvre de nouvelles voies avec Qt et MQTT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Horodatage:

Plus de Nous vivons la sécurité