UNC4034 a établi la communication avec la victime via WhatsApp et l'a incitée à télécharger un paquet ISO malveillant concernant une fausse offre d'emploi qui a conduit au déploiement de la porte dérobée AIRDRY.V2 via une instance trojanisée de l'utilitaire PuTTY.
L'une des pierres angulaires de l'offre de services de Mandiant Managed Defense est son programme proactif de chasse aux menaces qui protège les clients contre les outils, tactiques et techniques des cybercriminels qui contournent les mécanismes de détection traditionnels. Les traqueurs de menaces de Managed Defense s'appuient sur les recherches approfondies de Mandiant sur l'exposition aux comportements des acteurs de la menace pour améliorer et étendre continuellement ses capacités de traque aux menaces.
Identifiée par l'équipe Mandiant Intelligence : Staging Directories, qui recherche les fichiers anormaux écrits dans des répertoires couramment utilisés par les cybercriminels. Les techniques utilisées par UNC4034 dans cette compromission, ainsi que les techniques utilisées dans d'innombrables intrusions étudiées par Mandiant, sont utilisées pour développer et affiner en permanence les hypothèses de chasse aux menaces au sein de Managed Defense. Ces hypothèses fournissent des pistes de haute fidélité et exploitables, qui tiennent compte de l'évolution des techniques utilisées par les cybercriminels.
La piste initiale
La piste initiale était un fichier téléchargé sur l'hôte nommé amazon_assessment.iso. Les archives ISO et IMG sont devenues attrayantes pour les acteurs de la menace car, à partir de Windows 10, un double-clic sur ces fichiers les monte automatiquement en tant que disque virtuel et rend leur contenu facilement accessible. Cela réduit l'effort nécessaire pour visualiser les fichiers intégrés par rapport à d'autres formats tels que les archives RAR. La détection des archives IMG et ISO malveillantes transmises par des pièces jointes de phishing est une routine pour Mandiant Managed Defense. Les charges utiles contenues dans ces archives vont des logiciels malveillants de base aux portes dérobées avancées comme l'échantillon analysé dans cet article de blog.
Leurre de phishing
Mandiant Managed Defense a effectué une enquête sur l'hôte pour déterminer comment le fichier amazon_assessment.iso a été créé. Sur la base des données disponibles, Mandiant estime que UNC4034 a entamé la communication avec la victime en lui proposant par e-mail une offre d'emploi chez Amazon. Par la suite, UNC4034 a communiqué avec elle via WhatsApp et a partagé le fichier amazon_assessment.iso, que l'utilisateur a téléchargé en utilisant la version web de WhatsApp
L'archive amazon_assessment.iso contenait deux fichiers : un exécutable et un fichier texte. Le fichier texte nommé Readme.txt contenait des détails de connexion à utiliser avec le second fichier : PuTTY.exe.
Server: 137.184.15[.]189
User: test
Pass: [Redacted by Mandiant]
Contenu de Readme.txt
PuTTY est un client SSH et Telnet open source. Les versions légitimes et compilées de l'outil téléchargées depuis le site Web de l'éditeur possèdent une signature numérique valide. Cependant, comme le montre la ci-dessous, le binaire PuTTY.exe contenu dans l'archive malveillante ne possède pas de signature numérique.
Signatures numériques de l'utilitaire PuTTY distribué officiellement (à gauche) et de la version malveillante (à droite)
La taille du binaire PuTTY téléchargé par la victime est également nettement supérieure à celle de la version légitime. En y regardant de plus près, on constate qu'il comporte une section .data importante et à forte entropie par rapport à la version officiellement distribuée. Les sections de ce type indiquent généralement des données chiffrées.
Comparaison de la section .data de l'utilitaire PuTTY officiellement distribué (à gauche) et de l'échantillon malveillant (à droite)
La nature suspecte de PuTTY.exe intégré dans le fichier ISO a incité Managed Defense à effectuer une enquête plus approfondie sur l'hôte et le fichier lui-même. L'exécution du binaire malveillant de PuTTY a entraîné le déploiement d'une porte dérobée sur l'hôte. La porte dérobée déployée est une évolution de la famille des logiciels malveillants que Mandiant identifie comme étant AIRDRY. Mandiant Managed Defense a réussi à enquêter sur la compromission et à contenir l'hôte avant que l'activité de suivi résultant de la porte dérobée déployée ne se produise. Alors que Mandiant a détecté et répondu à la compromission le 2022-07-05, le même exécutable PuTTY a été vu sur VirusTotal dès le 2022-06-27.
En outre, Mandiant a découvert une deuxième archive ISO nommée amazon_test.iso téléchargée sur VirusTotal le 2022-06-17. Mandiant a trouvé la deuxième archive en pivotant à partir de l'adresse IP contenue dans le fichier Readme.txt. Ce fichier ISO contenait également un fichier Readme.txt avec la même adresse IP et un exécutable PuTTY trojanisé similaire.
Les deux fichiers ISO trouvés par Mandiant semblent utiliser le même thème de leurre en se faisant passer pour une évaluation de recrutement pour Amazon. Ils contiennent également des logiciels malveillants construits de manière similaire, qui aboutissent à la charge utile finale de la porte dérobée AIRDRY.V2.
Analyse du logiciel malveillant
L'exécutable intégré à chaque fichier ISO est une application PuTTY entièrement fonctionnelle, compilée à l'aide du code source de la version 0.77 de PuTTY accessible au public.
Interface PuTTY affichée lors de l'exécution des échantillons malveillants
Chaque échantillon contient un code malveillant qui écrit une charge utile intégrée sur le disque et la lance. Cependant, le code malveillant a été inséré à différents endroits dans chacun des échantillons de PuTTY trojanisés. Dans l'échantillon de PuTTY découvert par Mandiant, le code réside dans la fonction connect_to_host, qui se trouve dans le fichier source putty-0.77\ssh.c. Pour déclencher le code, l'utilisateur doit tenter une connexion SSH à l'adresse IP de l'hôte fournie dans le fichier Readme.txt.
Dans l'échantillon de PuTTY découvert sur VirusTotal, le code malveillant a été inséré dans la fonction ssh2_userauth_process_queue (fichier source : putty-0.77\ssh\userauth2-client.c). Le code se trouve dans la partie de la fonction responsable de l'authentification par mot de passe, par opposition à d'autres méthodes telles que l'authentification par clé publique ou par clavier interactif. Une fois que l'utilisateur établit une connexion et saisit son nom d'utilisateur et son mot de passe, le code malveillant est exécuté quel que soit le résultat de l'authentification. Ces garde-fous d'exécution sont probablement une tentative de l'UNC4034 d'éviter de laisser tomber inutilement l'étape suivante de son malware.
La partie du code malveillant qui dépose et exécute une charge utile est presque identique dans les deux échantillons. L'exécutable Windows légitime C:\Windows\System32\colorcpl.exe est copié dans le nouveau répertoire C:\ProgramData\PackageColor et la charge utile intégrée est écrite dans C:\ProgramData\PackageColor\colorui.dll. Le binaire PuTTY observé dans la compromission lance colorui.dll via un détournement de l'ordre de recherche des DLL à l'aide de la commande.
C:\Windows\System32\cmd.exe /c start /b C:\ProgramData\PackageColor\colorcpl.exe 0CE1241A44557AA438F27BC6D4ACA246
Dans l'échantillon VirusTotal, cmd.exe n'est pas utilisé pour lancer colorcpl.exe. Au lieu de cela, la fonction WinExec de l'API Windows lance le processus illustré ci-dessous :
C:\ProgramData\PackageColor\colorcpl.exe C8E71F4613ABFCA10B6330C9
Exécution de l'échantillon de VirusTotal
Dans les deux cas, l'argument de ligne de commande transmis à colorcpl.exe n'est pas lié à la fonction légitime de l'exécutable Windows. Au contraire, chaque argument est utilisé par la DLL malveillante comme décrit ci-dessous. La persistance est établie pour C:\ProgramData\PackageColor\colorcpl.exe via schtasks.exe. Une tâche planifiée nommée PackageColor exécute colorcpl.exe tous les jours à 10 h 30, heure locale.
DLL malveillante
Les échantillons de colorui.dll ont été emballés à l'aide du protecteur de logiciels commercial Themida. Les échantillons déballés contiennent des chemins de fichiers qui révèlent leur but. Les deux échantillons contiennent une charge utile shellcode identique nommée DAVESHELL. La charge utile est décryptée à l'aide d'un algorithme XOR personnalisé avec une clé générée dynamiquement. La clé est le résultat de la concaténation des chaînes de caractères suivantes :
- Nom du processus parent (COLORCPL.EXE)
- Nom de fichier DLL malveillant (COLORUI.DLL)
- Argument de ligne de commande transmis à colorcpl.exe par l'exécutable PuTTY.
La clé de décryptage nécessaire pour l'échantillon VirusTotal est présentée ci-dessous :
COLORCPL.EXECOLORUI.DLLC8E71F4613ABFCA10B6330C96CA3D3B1
Clé de décryptage pour l'échantillon PuTTY trouvé sur VirusTotal
L'inclusion de cette clé sert également de mécanisme anti-analyse : sans la bonne clé, rien d'important ne se produit lorsque la DLL est exécutée. L'argument de ligne de commande transmis à colorcpl.exe détermine également la manière dont le shellcode décrypté est exécuté. En fonction de cet argument, colorui.dll peut exécuter le shellcode à partir de colorcpl.exe ou l'injecter dans une nouvelle instance d'un processus Windows légitime. Dans le cas d'une injection dans un processus, la cible de l'injection est choisie au hasard entre credwiz.exe et iexpress.exe.
La charge utile de shellcode injectée est DAVESHELL, un dropper disponible publiquement sous forme de shellcode qui exécute une charge utile intégrée en mémoire. La charge utile intégrée est une évolution de la porte dérobée AIRDRY avec VMProtect.
AIRDRY.V2
Le backdoor AIRDRY, également connu sous le nom de BLINDINGCAN, a fait l'objet d'une documentation approfondie dans les rapports publiés par CISA et JPCERT. Ces versions antérieures d'AIRDRY prenaient en charge de nombreuses commandes de backdoor, notamment le transfert de fichiers, la gestion de fichiers et l'exécution de commandes.
Dans la version la plus récente, cependant, les commandes backdoor traditionnelles ont été supprimées au profit d'une approche basée sur des plugins qui prennent en charge plusieurs modes de communication. Les détails qui suivent traitent de l'évolution vers AIRDRY.V2 et soulignent les similitudes avec les versions précédentes. La configuration de la porte dérobée est chiffrée en AES-128 en mode CBC avec la clé codée en dur KAA5M8MNDKLJB8PI. Un contrôle d'intégrité est effectué sur la configuration chiffrée et déchiffrée. La porte dérobée sort si la vérification échoue.
La configuration déchiffrée contient le mode de communication de la porte dérobée. Les modes pris en charge sont répertoriés dans le tableau 1, ainsi que les noms des classes internes correspondantes, le cas échéant. Les trois modes sont centralisés autour d'une classe appelée CSinSocket.
La structure de la configuration embarquée dépend du mode de communication. L'échantillon observé est configuré pour utiliser HTTP. La structure de sa configuration de 0x24B0 octets est décrite dans le tableau 2. Aucune version en mode SMB ou fichier d'AIRDRY.V2 n'a été identifiée et la structure de leur configuration est donc inconnue.
Offset : Description
0x0000 : Operation mode
0x0002 : C2 URL count
0x0006 : C2 URL #1
0x020E : C2 URL #2
0x0416 : C2 URL #3
0x061E : C2 URL #4
0x0826 : C2 URL #5
0x0A2E : Proxy enabled flag
0x0A32 : Proxy server
0x0C3A : Proxy port
0x0C3C : Proxy credentials available
0x0C40 : Proxy username
0x0E48 : Proxy password
0x1050 : Unknown
0x1054 : Maximum beacon count
0x1056 : Report if disk space is available
0x105A : Report if there is an active RDP session
0x105E : Beacon interval in seconds
0x1060 : Start date and time (empty)
0x1068 : System ID
0x106C : Unknown
0x18A0 : c:\windows\system32\cmd.exe
0x1AA8 : %temp%
0x1CB0 : Unknown
Structure de la configuration du mode HTTP
Le nombre maximum de balises stocké à l'offset 0x1054 reflète le nombre de fois que la porte dérobée tente de se connecter à un serveur de commande et de contrôle (C2) avant d'attendre le temps stocké à l'offset 0x105E. L'échantillon actuel est configuré pour se connecter jusqu'à cinq fois avant de dormir pendant 60 secondes.
Par défaut, la porte dérobée n'est pas configurée pour utiliser un serveur proxy. Il n'est pas non plus configuré pour signaler l'état de l'espace disque disponible (offset 0x1056) ou la présence d'une session RDP active (offset 0x105E). Cependant, ces fonctionnalités pourraient être activées par une mise à jour de la configuration émise par un serveur C2.
Les chaînes de configuration aux décalages 0x18A0 et 0x1AA8 ne sont pas référencées dans le code mais ont été vues dans des configurations AIRDRY précédentes. Il est possible que ces chaînes restent dans la configuration pour être utilisées par un plugin téléchargé.
La valeur de configuration à l'offset 0x1060 reflète la date et l'heure après lesquelles la porte dérobée doit commencer à communiquer avec ses serveurs C2. Cette valeur est vide dans la configuration actuelle, ce qui fait que la communication commence immédiatement. Toutefois, la valeur peut être mise à jour par une commande d'un serveur C2, ce qui peut entraîner l'inactivité de la porte dérobée pendant un certain temps.
Le nombre d'URL C2 de la porte dérobée est de cinq ; cependant, la configuration ne comporte que trois URL distinctes.
hxxps://hurricanepub[.]com/include/include.php
hxxps://turnscor[.]com/wp-includes/contacts.php
hxxps://www.elite4print[.]com/support/support.asp
URLs C2 configurées
Pleins feux sur les acteurs de la menace : UNC4034
Mandiant a identifié plusieurs chevauchements entre l'UNC4034 et des groupes de menaces que nous soupçonnons d'avoir un lien avec la Corée du Nord. Les URL C2 d'AIRDRY.V2 appartiennent à une infrastructure de site Web compromise précédemment exploitée par ces groupes et signalée dans plusieurs sources OSINT. Il convient de noter l'utilisation antérieure de cette infrastructure compromise pour diffuser la porte dérobée AIRDRY via des téléchargeurs CUTELOOP intégrés à des documents malveillants.
Sur la base des recoupements identifiés et des tactiques d'ingénierie sociale utilisées, Mandiant soupçonne que cette activité représente une extension des campagnes durables de l'" Operation Dream Job " qui exploitent une chaîne d'attaque différente avec des fichiers ISO et des binaires trojanisés plutôt que des documents armés. Il s'agit probablement de l'une des nombreuses techniques de diffusion de logiciels malveillants employées par les acteurs nord-coréens après qu'une cible ait répondu à une offre d'emploi fictive. Des rapports publics récents détaillent également l'utilisation d'autres plateformes de médias sociaux pour se faire passer pour des entreprises légitimes et publier de fausses offres d'emploi ciblant les développeurs de cryptomonnaies.
L'utilisation de fichiers ISO est de plus en plus populaire dans la diffusion de logiciels malveillants de base et ciblés. Mandiant a observé des acteurs bien connus, comme APT29, qui ont adopté l'utilisation de fichiers ISO pour diffuser leurs malwares.
Opportunités de détection
L'enquête sur cette compromission a révélé de nouvelles pistes et de nouveaux indicateurs sur lesquels s'appuyer pour de futurs efforts de chasse. Une mise en garde importante concernant ces pistes de chasse est qu'elles ne sont pas des indicateurs de compromission. Il s'agit plutôt d'activités intéressantes qui peuvent nécessiter une enquête plus approfondie de la part d'un analyste.
Il s'agit notamment de fichiers d'archives ISO et IMG téléchargés à partir de sources telles que WhatsApp, les fournisseurs de messagerie et les services de stockage en nuage. Sur Windows 10 et les versions ultérieures, l'URL d'origine d'un fichier téléchargé est stockée dans le flux de données alternatif Zone.Identifier. Mandiant observe régulièrement des fichiers d'archives livrés en pièces jointes de phishing qui proviennent de ces sources.
La deuxième piste est l'exécution de colorcpl.exe à partir d'un répertoire inhabituel comme CrogramDataPackageColor. Le plus souvent, l'exécutable s'exécute depuis son emplacement standard dans C:\Windows\System32 ou C:\Windows\SysWOW64.
La troisième piste de chasse trouvée pour de futurs efforts de chasse est l'exécution de colorcpl.exe avec des arguments de ligne de commande. Par défaut, colorcpl.exe s'exécute sans arguments de ligne de commande. Dans ce scénario, colorcpl.exe a été exécuté avec un argument de ligne de commande composé de caractères hexadécimaux. L'argument a finalement été évalué par une DLL malveillante qui a été chargée dans le processus.
Mandiant découvre régulièrement de nouvelles activités d'acteurs de la menace, comme celle décrite dans cet article de blog. Pour garantir la protection de nos clients, les capacités de détection et de chasse aux menaces de Mandiant évoluent en permanence et sont alimentées par nos expériences en première ligne.
Source : Mandiant
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi :
La Chine accuse la NSA d'avoir piraté son université de recherche militaire, pour voler des données
La Chine et les USA tombent d'accord pour lutter contre le piratage informatique « est ce que les mots seront suivis par des actions ? »
La Chine accuse les États-Unis de "dizaines de milliers" de cyberattaques, ces attaques auraient permis à la NSA de dérober plus de 140 Go de "données sensibles" à la Chine