Dans ce billet commun avec nos collègues chercheurs d'Avast, nous fournissons une analyse technique d'un RAT (remote access trojan) en constante évolution, qui a été utilisée dans diverses campagnes ciblées contre des sujets publics et privés depuis fin 2017. Nous avons observé de multiples cas d'attaques impliquant cette RAT, et toutes se sont produites en Asie centrale. Parmi les sujets ciblés figuraient plusieurs entreprises importantes dans les secteurs des télécommunications et du gaz, ainsi que des entités gouvernementales.

De plus, nous faisons le lien entre la dernière campagne et trois rapports publiés précédemment : Kaspersky a publié sa recherche sur l'usage de Microcin contre le personnel militaire russe, Palo Alto Networks, sur BYEBY contre le gouvernement bélarussien et Checkpoint, sur Vicious Panda contre le secteur public mongol. Nous abordons également d'autres logiciels malveillants qui faisaient généralement partie de la panoplie de l'attaquant avec le RAT. Nous avons choisi le nom de Mikroceen pour couvrir tous les cas du RAT, en reconnaissance du rapport initial de Kaspersky sur la famille. La faute d'orthographe est intentionnelle, afin d'éviter la notion microbiologique établie, mais aussi pour avoir au moins un accord phonémique.

Rapprochements

Discutons d'abord de Mikroceen, qui est un simple RAT, et expliquons ce qui nous mène à croire que les rapports de Kaspersky, Palo Alto Networks et Checkpoint écrivent sur la même famille spécifique de logiciels malveillants (parmi les autres outils malveillants mentionnés). La figure 1 présente une comparaison de la boucle de déchiffrement utilisée pour les données de configuration comprenant le domaine C&C, un nom et un mot de passe associés à chaque échantillon du RAT. La boucle est pratiquement la même et elle est implémentée en trois exemplaires consécutifs. Checkpoint a également examiné les similitudes des en-têtes HTTP dans les sections de données entre BYEBY et Vicious Panda, ainsi qu'un message de journalisation partagé V09SS0lO que base64 décode en WORKIN. La chaîne codée est également présente dans Microcin.

Figure 1. Partie du code utilisé pour déchiffrer les données internes; le nom de la DLL exportée se trouve en bas

Dans la section L’Arsenal des attaquants ci-dessous, nous comparons également les grammaires de commande des fonctionnalités du RAT et les messages d'erreur typiques qui sont enregistrés pendant l'exécution avec ses instances précédentes. Pour étayer les preuves, le fournisseur préféré de l'infrastructure des attaquants et les logiciels malveillants les plus typiques trouvés simultanément sur les réseaux compromis. Tous ces indices devraient permettre d'affirmer avec certitude qu'il s'agit de la même famille de logiciels malveillants.

Chronologie et victimologie

La figure 2 illustre l'évolution de la menace dans le temps. Comme nous l'avons mentionné précédemment, la région de l'Asie centrale a rejoint la Russie, le Belarus et la Mongolie en tant que zones victimes des intrusions de Mikroceen. Ces victimes n'étaient pas des utilisateurs de bureau, mais des terminaux de réseaux d'entreprise où l'on s'attend à un niveau de sécurité plus élevé.

Figure 2. Chronologie des événements associés à Mikroceen

Figure 3. Les récentes campagnes en Asie centrale entourées de celles précédemment rapportées

L’arsenal des attaquants

Décrivons les outils que les attaquants ont utilisés dans leur campagne en Asie centrale. Malheureusement, nous n'avons pas pu découvrir comment ils sont entrés dans les réseaux compromis.

RAT (porte dérobée du côté client)

Une fois que les intrus ont pris pied sur une machine victime, le code de la figure 4 sert à installer le RAT sur le système. Notez le paramètre start= auto, qui établit la persistance du logiciel malveillant après un redémarrage.

@echo off
sc stop PCAudit
sc delete PCAudit
sc create PCAudit binpath= "C:\WINDOWS\syswow64\svchost.exe -k netsvcs" type= share start= auto displayname= "Windows Upload Manager"
sc description PCAudit "Windows Help Service is a microsoft Windows component for System(Important). If this service is stopped, users will be unable to get useful information"
sc failure PCAudit reset= 0 actions= restart/0
reg add HKLM\SYSTEM\CurrentControlSet\Services\PCAudit\Parameters /v ServiceDll /t REG_EXPAND_SZ /d %SystemRoot%\Syswow64\pcaudit.dll
reg add HKLM\SYSTEM\CurrentControlSet\Services\PCAudit\Parameters /v ServiceMain /t REG_SZ /d NtHelpServiceMain
reg add HKLM\SYSTEM\CurrentControlSet\Services\PCAudit\Parameters /v ServiceDllUnloadOnStop /t REG_DWORD /d 1
sc start PCAudit
del %0

Figure 4. Code du lot d'installation

Comme nous l'avons déjà mentionné, chaque bot est livré avec des données de configuration soit le serveur C&C, nom du client et mot de passe du client. Le nom du bot apparaît dans l'interface côté serveur. Ce qui est assez inhabituel, c'est qu'un opérateur doit s'authentifier en entrant le mot de passe du client afin de contrôler ce dernier. Nous ne pouvons que spéculer sur l'objectif, mais il pourrait servir de protection contre la prise de contrôle du botnet, au cas où un acteur concurrent ou les forces de l'ordre saisiraient leur infrastructure. Nous constatons donc que certains efforts ont été faits pour la sécurité de la connexion client-serveur. En outre, le client peut se connecter directement au serveur C&C ou acheminer le trafic via un proxy, ce qui pourrait être utile - notamment dans les réseaux d'entreprise. La connexion est en outre sécurisée par un certificat et c'est une caractéristique qui distingue Mikroceen de la légion de portes dérobées que nous avons connue jusqu'à présent.

Mikroceen utilise les mêmes fonctionnalités de base que celles déjà décrites par Palo Alto Networks à propos de BYEBY. La grammaire des commandes est assez spécifique, car chaque commande est tronquée à 6 lettres puis encodée en base64. Il en résulte un mot incompréhensible de 8 lettres dans le code. Alors que dans les cas précédents, le codage était simple, dans la campagne en Asie centrale, une couche de codage inconnue supplémentaire a été ajoutée. Dans ce cas, la connexion des mots de 8 lettres avec les commandes a été faite par accord au niveau du code.

Command Microcin, BYEBY, Vicious Panda Mikroceen
hello! aGVsbG8h AmbZDkEx
GOODBY R09PREJZ eYTS5IwW
BYE BY QllFIEJZ bo7aO8Nb
DISCON RElTQ09O 6GEI6owo
LIST D TElTVCBE Ki0Swb7I
STARTC U1RBUlRD h71RBG8X
COMMAN Q09NTUFO 5fdi2TfG
TRANSF + (UPLOAD, DOWNLO) VFJBTlNG + (VVBMT0FE, RE9XTkxP) J8AoctiB + (QHbU0hQo, hwuvE43y)
EXECUT RVhFQ1VU gRQ7mIYr

Tableau 1. Grammaire des commandes de différentes instances du RAT                                                                                                                                                                         

Pendant l'exécution, le client enregistre les messages de débogage dans un fichier temporaire. Cela varie selon les différentes instances de Mikroceen. Le tableau 2 présente une comparaison de ces messages d'un cas à l'autre et fournit des preuves supplémentaires qui relient les instances de Mikroceen.

Microcin BYEBY Vicious Panda Mikroceen #rowspan#
#rowspan# #rowspan# #rowspan# 32-bit 64-bit
Folder % CSIDL_COMMON_DOCUMENTS% %TEMP% % CSIDL_COMMON_DOCUMENTS% %TEMP% %TEMP%
Filename 7B296FB0.CAB vmunisvc.cab 5E8C6FF0.CAB 7B296FB0.CAB W52G86ST.TMP
Keywords at main V09SS0lO
U3RhcnQ=
V09SS0lO
U3RhcnQ=
V09SS0lO
U3RhcnQ=
V09SS0lO GvFa8Sei
Keyword at connect ZGlyZWN0 ZGlyZWN0 ZGlyZWN0 wfZ155bJ wfZ155bJ

Tableau 2. Messages de connexion dans un fichier temporaire

Apparition simultanée de logiciels malveillants

Les rapports précédents mentionnent toujours un large arsenal d'outils qui sont utilisés dans les attaques. Dans notre cas, c'était le même - pas seulement Mikroceen, mais aussi d'autres logiciels malveillants. Voici les trois outils les plus importants que nous avons observés dans les réseaux compromis.

Mouvement lateral via Mimikatz

Les attaquants ont utilisé leur implémentation de Mimikatz, livrée via un mécanisme à deux étapes : la première étape était un dropper généralement appelé installer.exe ou Yokel64.exe, qui déposait la charge utile principale avec un nom DLL externe indicatif mktz64.dll dans la deuxième étape. Bien que Mikroceen n'ait jamais fourni d'informations de débogage, nous pouvons voir ici la chaîne E:\2018_\MimHash\mimikatz\Bin\mktzx64.pdb.

Figure 5. Une chaîne de PDB dans la charge utile de Mimikatz

Mimikatz est un projet open source développé depuis 2007 par le chercheur français en sécurité Benjamin Delpy. Il s'agit d'un outil robuste qui, entre autres, peut contourner divers schémas d'authentification Windows, essentiellement en vidant les données d'identification de la base de données Windows Local Security Account. Il est principalement utilisé par les équipes rouges en matière de sécurité informatique, mais il est également utilisé à mauvais escient par les acteurs de l'APT, par exemple LazarusTelebotsOkrum, etc. Après l'avoir exécuté dans un environnement virtuel de test, sa sortie est (les espaces incorrects avant les virgules sont présents dans la version originale) :

#1 domain = MSEDGEWIN10, user = Administrator , nthash=FC525C9683E8FE067095BA2DDC971889.
#2 domain = MSEDGEWIN10, user = IEUser , nthash=FC525C9683E8FE067095BA2DDC971889.

Mouvement latéral via WMI

Les attaquants utilisent un outil supplémentaire pour se propager dans le réseau. Cette fois, ils utilisent l'instrument de gestion Windows (WMI). Toutes les données pertinentes sont nécessaires comme le nom du fichier, car pendant l'exécution il attend @@<ComputerName>,<UserName>,<Password>,.exe.  Dans un premier temps, une console est établie vers un ordinateur distant, où la connexion est identifiée par <ComputerName> et authentifiée par (<UserName>, <Password>). Ensuite, la sécurité du proxy est réglée au niveau strict, ce qui signifie que les arguments de chaque appel de procédure à distance sont chiffrés et que l'accès du serveur aux ressources locales est autorisé. Ensuite, WMI est utilisé à nouveau pour récupérer Win32_Process class, qui à son tour est utilisée pour créer un processus avec des paramètres donnés. Lorsque tout le travail est terminé, l'outil s'arrête de lui-même.

RAT Gh0st

Ce tristement célèbre et vieux RAT a été créé vers 2008. Dans le cas présent, il a été observé sous le nom rastls.dll sur les systèmes compromis, alors que le nom de la DLL exportée est généralement svchost.dll. Il tente de se connecter à https://yuemt.zzux[.]com:443 qui se résout à une adresse IP en Chine. C’est une exception pour laquelle on ne trouve pas d’explication, car le serveur n'appartient à aucun des fournisseurs de C&C utilisés par Mikroceen. De notre point de vue, il semble redondant d'utiliser cette porte dérobée supplémentaire, dont la capacité est entièrement fournie par Mikroceen elle-même.

Pour reconnaître cette porte dérobée, on observe la chaîne Gh0st dans le binaire. La chaîne de caractères uwqixgze} est utilisée comme caractère générique pour le domaine C&C.

Figure 6. Logiciel malveillant RAT Gh0st (fragment)

Panneau C&C (interface côté serveur)

Les rapports précédents mentionnent déjà la mauvaise sécurité opérationnelle des attaquants (leurs répertoires ouverts ont été observés par Kaspersky et Checkpoint), et les acteurs derrière continuent de faire fuir des outils qui ne sont pas nécessairement exploités du côté des victimes. Nous avons pu mettre la main sur une ancienne version du panneau de contrôle du RAT.  Sur la partie inférieure de la figure 7, il y a une interface graphique par laquelle tous les robots sont commandés. Elle est très minimaliste, ce qui peut être dû à une version plus ancienne datant de 2017, mais il suffit de la comparer avec le panneau de Gh0st RAT, vieux de plus de 10 ans. Il n'y a pas eu beaucoup d'améliorations depuis, visuellement ou fonctionnellement, donc l'introduction des connexions SSL semble être le principal changement entre les projets (la zone de texte pour « CN Name » sur la figure). Il semble que les opérateurs du botnet soient des clients de contenu des services Vultr, dont la société-mère est Choopa LLC, car leur infrastructure opérationnelle y est principalement hébergée, ce qui a également été observé dans la campagne Vicious Panda de Checkpoint. Il s'agit d'un fournisseur à toute épreuve, documenté par des chercheurs de Cisco dès 2015.

Figure 7. Interfaces pour le contrôle des bots : RAT Gh0st (2008) vs. l'interface de Mikroceen (2017)

Conclusion

Nous avons présenté l'analyse d'une mise en œuvre personnalisée d'un modèle client-serveur développé à des fins d'espionnage. Les développeurs de logiciels malveillants ont fait de gros efforts pour assurer la sécurité et la robustesse de la connexion avec leurs victimes et les opérateurs ont réussi à pénétrer des réseaux d'entreprise très fréquentés. En outre, ils disposent d'un ensemble plus important d'outils d'attaque et leurs projets sont en développement constant, principalement sous forme de variations de l'obscurcissement.

Indicateurs de compromission (IoC)

Voici les hachages d'échantillons décrits dans l'article. D'autres IoC collectés lors des attaques sont disponibles sur le GitHub d'ESET ou celui d'Avast.

SHA Timestamp Description ESET detection name
d215bb8af5581b31f194248fc3bd13d999a5991c 2016-06-29 00:34:42 Microcin (Kaspersky)
7771e1738fc2e4de210ac06a5e62c534
Win32/Mikroceen.A
7a63fc9db2bc1e9b1ef793723d5877e6b4c566b8 2017-07-06 08:15:31 BYEBY (PANW) 383a2d8f421ad2f243cbc142e9715c78f867a114b037626c2097cb3e070f67d6 Win32/Mikroceen.B
2f80f51188dc9aea697868864d88925d64c26abc 2017-01-28 11:33:43 Vicious Panda (Checkpoint) Win32/Mikroceen.C
302cf1a90507efbded6b8f53e380591a3eaf6dcb 2019-04-25 01:15:40 Mikroceen 32-bit Win32/Mikroceen.H
21ffd24b8074d7cffdf4cc339d1fa8fe892eba27 2018-12-10 07:46:25 Mikroceen 64-bit Win64/Mikroceen.C
5192023133dce042da8b6220e4e7e2e0dcb000b3 2019-03-11 12:14:09 Mimikatz Win64/Riskware.Mimikatz.AQ
c18602552352fee592972603262fe15c2cdb215a 2015-03-16 03:29:39 Lateral Movement via WMI Win32/HackTool.Agent.NEZ
4de4b662055d3083a1bccf2bc49976cdd819bc01 2015-12-31 03:10:15 Gh0st RAT Win32/Farfli.CSY

Références

Techniques MITRE ATT&CK

Tactic ID Name Description
Execution T1035 Service Execution The RAT is configured to run as a service at startup via sc.exe.
T1059 Command-Line Interface The RAT can execute a command line.
T1064 Scripting The attackers used batch scripts for malware installation and execution.
T1105 Remote File Copy The RAT can download files to the victim’s machine
T1106 Execution through API The RAT launches the Windows console via CreateProcess.
Persistence T1050 New Service The RAT is executed automatically
Defense Evasion T1036 Masquerading The RAT disguises itself as various types of legitimate services.
T1140 Deobfuscate/Decode Files or Information The commands of the RAT and some of its components are encoded/encrypted.
Discovery T1082 System Information Discovery The RAT sends information, like the version of the operating system to be displayed, in operator’s panel.
T1016 System Network Configuration Discovery The RAT collects network information, including host IP address and proxy information.
T1033 System Owner/User Discovery The RAT sends information, like the username to be displayed, in operator’s panel.
Credential Access T1003.001 OS Credential Dumping: LSASS Memory Mimikatz is used in the attack.
Command and Control T1032 Standard Cryptographic Protocol The RAT uses SSL for encrypting C2 communications.
T1043 Commonly Used Port The RAT uses port 443.
T1071 Standard Application Layer Protocol The RAT uses the Schannel implementation of SSL.
T1001 Data Obfuscation The RAT’s interface controls the client with obfuscated commands.
T1090.002 Proxy: External Proxy The RAT has a proxy option that masks traffic between the malware and the remote operators.
Exfiltration T1041 Exfiltration Over Command and Control Channel The operator of the RAT can download any desired file from a victim.
Collection T1113 Screen Capture The RAT can capture the victim’s screen.