Les chercheurs de l'ESET ont découvert plusieurs outils post-compromis jusqu'alors non documentés, utilisés par le groupe de menace très actif Gamaredon dans diverses campagnes malveillantes. L'un de ces outils, une macro VBA ciblant Microsoft Outlook, utilise le compte de messagerie de la cible pour envoyer des courriels de harponnage à des contacts du carnet d'adresses Microsoft Office de la victime. Nous avons également analysé d'autres outils Gamaredon qui ont la capacité d'injecter des macros malveillantes et des modèles à distance dans des documents Office existants.


Les outils liés à Gamaredon abordés dans ce blog sont détectés comme des variantes de MSIL/Pterodo, Win32/Pterodo ou Win64/Pterodo par les produits ESET.

Le groupe Gamaredon est actif depuis au moins 2013. Il a été responsable d'un certain nombre d'attaques, principalement contre des institutions ukrainiennes, comme l'atteste plusieurs rapports du CERT-UA et d'autres organismes officiels ukrainiens au fil du temps.

Au cours des derniers mois, on a assisté à une augmentation de l'activité de ce groupe, avec des vagues constantes de courriels malveillants qui ont atteint les boîtes aux lettres de leurs cibles. Les pièces jointes à ces courriels sont des documents contenant des macros malveillantes qui, une fois exécutées, tentent de télécharger une multitude de variantes de logiciels malveillants.

Ces derniers mois, Gamaredon a exploité de nombreux langages de programmation différents, allant du C# au VBScript, en passant par les fichiers batch et le C/C++. Les outils utilisés par Gamaredon sont très simples et sont conçus pour collecter des informations sensibles à partir de systèmes compromis et pour les diffuser.

Contrairement aux autres groupes de l'APT, le groupe Gamaredon semble ne faire aucun effort pour rester sous le radar. Même si leurs outils ont la capacité de télécharger et d'exécuter des binaires arbitraires qui pourraient être beaucoup plus furtifs, il semble que le principal objectif de ce groupe soit de se propager aussi loin et aussi vite que possible dans le réseau de leur cible tout en essayant d'exfiltrer des données. Pourrait-on passer à côté de quelque chose?

Contexte

La figure 1 illustre une chaîne de compromis typique dans une campagne Gamaredon.

La figure 1. Chaîne de compromis typique de Gamaredon

Alors que la plupart des publications récentes se sont concentrées sur les courriels de harponnage ainsi que sur les téléchargeurs qu'ils contiennent, ce billet de blog se concentre sur les outils post-compromis déployés sur ces systèmes.

Module VBA d'Outlook

Le groupe Gamaredon utilise un progiciel qui comprend un projet personnalisé de Microsoft Outlook Visual Basic for Applications (VBA). L'utilisation de macros Outlook pour diffuser des logiciels malveillants est une chose que nous voyons rarement lors d'enquêtes sur des campagnes malveillantes.

Ce paquet de code malveillant commence par un VBScript qui tue d'abord le processus Outlook s'il est en cours d'exécution, puis supprime la sécurité autour de l'exécution des macros VBA dans Outlook en modifiant les valeurs du registre. Il enregistre également sur disque le fichier OTM malveillant (projet VBA d'Outlook) qui contient une macro, la pièce jointe du courriel malveillant et, dans certains cas, une liste des destinataires auxquels les courriels doivent être envoyés.

Ensuite, il relance Outlook avec une option spéciale, /altvba <OTM filename>, qui charge le projet VBA Gamaredon. Le code malveillant est exécuté une fois que l'événement Application.Startup est reçu. Ils utilisent ce module de trois manières différentes pour envoyer des courriels malveillants :

  • Tous ceux qui figurent dans le carnet d'adresses de la victime
  • Tous les membres de la même organisation
  • Une liste prédéfinie de cibles

Bien que l'utilisation abusive d'une boîte aux lettres compromise pour envoyer des courriels malveillants sans le consentement de la victime ne soit pas une nouvelle technique, nous pensons qu'il s'agit du premier cas publiquement documenté d'un groupe d'attaque utilisant un fichier OTM et une macro Outlook pour y parvenir.

Figure 2. Script VBA Outlook créant le courrier électronique malveillant

En se basant sur le comportement « envoyer à tous les contacts » de ce code VBA malveillant, nous pensons que ce module pourrait avoir amené certaines organisations à penser qu'elles étaient visées par Gamaredon alors qu'elles n'étaient que des dommages collatéraux. Par exemple, des échantillons récents téléchargés sur VirusTotal provenant de régions qui ne sont pas traditionnellement ciblées par Gamaredon, comme le Japon, pourraient s'expliquer par les actions de ce module.

Comme le montre la figure 2, le code VBA construit le corps du courriel et joint le document malveillant au courriel. Nous avons vu des fichiers .docx et .lnk utilisés comme pièces jointes. Ils sont très similaires au contenu des pièces jointes malveillantes utilisées dans les premières campagnes de harponnage de Gamaredon. La figure 3 montre un courriel généré par ce composant malveillant.

Figure 3. Courriel généré par le module VBA d'Outlook avec une pièce jointe de document Word qui contient un modèle distant

Le courriel contient des textes en anglais et en russe. Cependant, comme l'illustre la figure 3, il y a un problème avec l'encodage russe. Ce problème a été résolu dans une version ultérieure de ce module - un autre exemple du rythme de développement rapide du groupe Gamaredon et du manque apparent d'attention aux détails.

Module d'injection de macros d’Office- CodeBuilder

Nous avons analysé différentes variantes de modules malveillants utilisés par le groupe Gamaredon pour injecter des macros malveillantes ou des modèles distants dans des documents déjà présents sur le système compromis. C'est un moyen très efficace de se déplacer latéralement dans le réseau d'une organisation, car les documents sont couramment partagés entre collègues. De plus, comme ces macros sont exécutées lors de l'ouverture des documents, c'est un bon moyen de persister sur un système car certains de ces documents sont susceptibles d'être ouverts plusieurs fois et à des moments différents.

Ces modules d'injection de macros permettent également de modifier les paramètres de sécurité des macros de Microsoft Office. Ainsi, les utilisateurs concernés n'ont aucune idée qu'ils compromettent à nouveau leur poste de travail chaque fois qu'ils ouvrent les documents. Nous avons vu ce module mis en œuvre dans deux langues différentes : C# et VBScript.

C#

Ce module a été livré, comme beaucoup d'autres outils, dans une archive auto-extractible 7z. A l'intérieur, il y avait une archive RAR protégée par un mot de passe et contenant quelques fichiers. Il y avait notamment deux fichiers texte, un pour Word et un pour Excel, contenant le code source VBA de la macro malveillante à insérer dans les documents ciblés, et l'assemblage .NET chargé de trouver et de compromettre les documents existants. Comme l'illustre la figure 4, le nom de l'assemblage est CodeBuilder.

Figure 4. CodeBuilder fonctionne dans une version qui n'est pas obscurcie

Ce module .NET réduit d'abord les paramètres de sécurité des macros Office pour divers types de documents en modifiant les valeurs de registre suivantes :

HKCU\Software\Microsoft\Office\<version>\<product>\Security\VBAWarnings
HKCU\Software\Microsoft\Office\<version>\<product>\Security\AccessVBOM

Il itére toutes les valeurs possibles de Office <version> pour les valeurs de Word et Excel <produit>. Il recherche ensuite les documents ayant des extensions de fichiers Word ou Excel valides sur tous les lecteurs connectés au système. Pour le lecteur contenant l'installation de Windows, il n'analyse que des emplacements spécifiques, à savoir les dossiers Desktop et Downloads . Pour les autres, il analyse l'ensemble du lecteur. Le logiciel malveillant déplace chaque document localisé dans le dossier AppData , y insère des macros Word ou Excel malveillantes à l'aide d'un objet Microsoft.Office.Interop, puis replace le document dans son dossier d'origine. Dans les échantillons que nous avons analysés, les macros injectées étaient de simples téléchargeurs.

Lot de fichier/VBScript

La version VBScript de ce module a un comportement similaire à celui du .NET. La principale différence est qu'au lieu d'insérer une macro malveillante dans des documents existants, elle y insère des références à un modèle distant.

Figure 5. VBScript utilisant la propriété Document.AttachedTemplate pour injecter une référence à un modèle distant dans des documents existants

Ce module VBScript est également fourni dans une archive auto-extractible, contenant un fichier batch et deux fichiers VBS chargés d'itérer à travers les documents et d'y ajouter les références des modèles distants.

Mises à jour du module

Il est intéressant de noter que certains des outils personnalisés décrits dans un article publié en 2017 par Palo Alto Networks sur Gamaredon sont toujours en cours de mise à jour et d'utilisation aujourd'hui. Certains présentent des similitudes importantes, tandis que d'autres sont réécrits dans des langues de codage différentes. Les outils les plus courants téléchargés et installés sur des machines compromises peuvent être regroupés en deux grandes catégories : les téléchargeurs et les portes dérobées.

Téléchargeurs

Il existe de nombreuses variantes de leurs téléchargeurs, la plupart d'entre eux étant écrits en C# ou en VBScript. Cette section ne couvre que deux de leurs variantes les plus originales; les autres n'ont pas beaucoup évolué et sont très simples.

Module de compilation en C#

Cet exécutable .NET, similaire à de nombreux autres outils utilisés par le groupe Gamaredon, utilise des techniques d'obscurcissement telles que l'insertion de code indésirable et l'obscurcissement de chaînes. Il contient dans son corps le code source d'un téléchargeur, encodé en base64. Il décode ce code source et le compile directement sur le système en utilisant la classe intégrée Microsoft.CSharp.CSharpCodeProvider. Il place l'exécutable résultant dans un répertoire existant et crée une tâche planifiée qui le lancera toutes les 10 minutes. Comme le montre la figure 6, le code source décodé contient encore des commentaires, ce qui illustre le manque de sérieux apparent des opérateurs de Gamaredon.

Figure 6. Un extrait du code source du téléchargeur C# inclus dans le module de compilation C#

Module du projet GitHub

Comme le montre la figure 7, cet exécutable .NET utilise un dépôt GitHub pour obtenir et exécuter un téléchargeur. Ce dépôt a maintenant disparu, mais nous avons pu en télécharger une copie alors qu'il était encore disponible.

Figure 7. Module .NET responsable du téléchargement et de l'exécution d'une charge utile stockée sur github.com

Le dépôt contenait un seul fichier - readme.txt - qui était un exécutable de téléchargeur .NET codé en base64. Le rôle du module du projet GitHub est de télécharger ce fichier, de le décoder et de l'exécuter.

Backdoors - voleurs de fichiers

Bien qu'il existe quelques variations dans les fonctionnalités, l'objectif principal de ces modules est d'énumérer tous les documents d'un système compromis et de les télécharger sur le serveur C&C. Ces voleurs de fichiers peuvent également télécharger et exécuter du code arbitraire à partir du serveur C&C. Comme de nombreux autres outils utilisés par le groupe Gamaredon, ils sont disponibles dans quatre langages de codage différents: C/C++, C#, fichier batch et VBScript.

C/C++

Cette variante est le successeur du module USBStealer décrit ici. Bien que les dernières versions soient maintenant très différentes, l'examen d'échantillons de ce module tout au long de son développement montre clairement qu'il provient du même code source.

Un échantillon qui illustre bien ce changement est une DLL 64 bits avec le nom interne Harvesterx64.dll, compilée en juin 2019. Elle contient toujours la plupart des chaînes de caractères utilisées dans les anciennes variantes, mais présente également deux améliorations qui sont toujours présentes dans les plus récentes. Premièrement, elle résout désormais les API Windows par le biais du hachage de noms et deuxièmement, elle utilise un fichier texte de base au lieu d'une base de données SQLite pour suivre les fichiers qui ont déjà été téléchargés sur le serveur C&C.

Le comportement de ce module est assez simple : il recherche dans le système les nouveaux documents Microsoft Office, tant sur les disques locaux que sur les disques amovibles, et les télécharge sur le serveur C&C. Pour savoir si le document est nouveau, le module conserve, dans un fichier texte, un hachage MD5 par fichier téléchargé sur le serveur. Ces hachages MD5 ne sont pas basés sur le contenu du fichier, mais plutôt sur une chaîne composée du nom du fichier, de sa taille et de sa dernière modification. Les chaînes du module sont stockées dans sa section .data, chiffrées avec une simple clé XOR. Il a également la possibilité de télécharger et d'exécuter un code arbitraire à partir de son serveur C&C.

C#

Il s'agit d'une réimplémentation en C# de la version C/C++. La principale différence est qu'elle prend également des captures d'écran de l'ordinateur compromis toutes les minutes. Comme le montre la figure 8, la version que nous avons analysée comporte cinq fils de discussion différents aux noms évocateurs.

Figure 8. Routine de création de threads C# en porte dérobée

Lot de fichiers/VBScript

Cette version comprend plusieurs scripts, écrits à la fois sous forme de fichiers batch et de VBScript. L'objectif final est cependant le même : scanner le système à la recherche de documents sensibles. Le mécanisme principal est un fichier batch qui recherche les documents Word (*.doc*) sur le système et stocke leurs noms dans un fichier texte (voir figure 9).

Figure 9. Exemple de fichier inject.txt contenant le résultat de l'analyse du fichier de documents de la porte dérobée

 

 

Figure 9. Exemple de fichier inject.txt contenant le résultat de l'analyse du fichier de documents de la porte dérobée

Figure 9. Exemple de fichier inject.txt contenant le résultat de l'analyse du fichier de documents de la porte dérobée

Le paquet contient également des fichiers script chiffrés nommés 1.log, 2.log, 3.log, 4.log et 5.log. Une fois déchiffrés, ces scripts sont des téléchargeurs VBScript obscurcis qui sont capables de télécharger et d'exécuter un code arbitraire.

Infrastructure du réseau

Le groupe Gamaredon utilise de nombreux domaines différents, gratuits ou payants, pour ses serveurs C&C. Les domaines gratuits sont principalement des DDNS de No-IP : hopto.org, ddns.net, myftp.biz, tandis que les domaines payants sont enregistrés par le bureau d'enregistrement REG.RU et comprennent les TLD .fun, .site, .space, .ru, .website et .xyz .

Ils changent constamment les domaines utilisés par leurs outils, mais surtout sur un petit nombre d'ASN. Une analyse minutieuse suggère qu'ils utilisent des domaines distincts pour de petits groupes de victimes. Veuillez consulter le compte GitHub d'ESET pour obtenir une liste complète des domaines utilisés par le groupe Gamaredon.

Qualité de l'exécution

Nous avons pu recueillir de nombreux échantillons de scripts, d'exécutables et de documents malveillants utilisés par le groupe Gamaredon tout au long de ses campagnes. Nous avons constaté plusieurs erreurs dans ces derniers, notamment dans les scripts. Il est bien sûr impossible de connaître la raison exacte de ces bugs ou oublis, mais le volume d'échantillons produits par le groupe et leur développement rapide pourrait l'expliquer. Le fait que des commentaires aient été laissés dans le code source inclus dans certains échantillons de modules du compilateur C# ou que l'encodage russe soit erroné dans les courriers électroniques générés par le module VBA d'Outlook montre qu'il n'y a pas d'examen ou de test rigoureux avant de publier leurs nombreux outils et de les utiliser dans la nature.

Toutefois, si ces erreurs peuvent réduire l'efficacité globale de leurs outils, la rapidité d'exécution et d'adaptation de ce groupe présente également certains avantages. Le volume et l'acharnement des attaques peuvent créer un état de crainte constant chez leurs cibles. Et bien que le code soit très simple, certaines techniques, telles que l'obscurcissement des scripts, rendent difficile l'automatisation complète de l'analyse, ce qui rend le travail de l'analyste fastidieux.

Leur projet GitHub nous a permis d'avoir un aperçu du développement rapide de leurs outils. Le code qui y était engagé montrait clairement l'évolution du téléchargeur C#. Les premières versions ne montraient aucun signe d'obfuscation ; puis les développeurs ont ajouté différentes obfuscations de chaînes et du code de pacotille pour rendre l'analyse plus difficile.

En termes de persistance, plusieurs techniques différentes sont utilisées, mais les plus courantes sont les tâches programmées, l'exécution automatique des clés de registre et l'exploitation du dossier de démarrage. Bien que ces techniques soient très simples et connues depuis longtemps, la stratégie du groupe Gamaredon qui consiste à essayer d'installer plusieurs scripts et exécutables sur chaque système, et à les mettre à jour constamment, complique considérablement la vie du défenseur.

Conclusion

Malgré la simplicité de la plupart de leurs outils, le groupe Gamaredon est également capable de déployer quelques nouveautés, comme leur module VBA Outlook. Cependant, comme il est loin d'être furtif, il n'est pas à la hauteur d'une organisation compétente sur le long terme. La variété des outils dont dispose Gamaredon peut être très efficace pour prendre les empreintes digitales d'une machine et comprendre quelles sont les données sensibles disponibles, puis les diffuser sur le réseau. Serait-ce simplement un moyen de déployer une charge utile beaucoup plus furtive?

Nous remercions tout particulièrement Anton Cherepanov, chercheur principal sur les logiciels malveillants à l'ESET, pour son aide dans cette recherche.

Indicateurs de compromission (IoCs)

SHA-1 ESET detection name Comments
6F75F2490186225C922FE605953038BDEB537FEE DOC/TrojanDownloader.Agent.ARJ Outlook VBA module
DFC941F365E065187B5C4A4BF42E770035920856 Win32/Pterodo.XG.gen C# Office macro injection module
9AFC9D6D72F78B2EB72C5F2B87BDC7D59C1A14ED Win32/Pterodo.ZM Batch file/‌VBScript Office macro injection module
3DD83D7123AEFBE5579C9DC9CF3E68BCAFC9E65E MSIL/Pterodo.CD C# compiler module
941F341770B67F9E8EE811B4B8383101F35B27CD MSIL/Pterodo.CA GitHub project module
DC8BD2F65FD2199CE402C76A632A9743672EFE2D Win32/Pterodo.XC C/C++ backdoor
336C1244674BB378F041E9064EA127E9E077D59D MSIL/Pterodo.DP C# backdoor
5FC1B6A55A9F5A52422872A8E34A284CDBDD0526 Win32/Pterodo.YE Batch file/‌VBScript backdoor

Techniques MITRE ATT&CK

Tactic ID Name Description
Initial Access T1193 Spearphishing Attachment Gamaredon group sends emails with malicious attachments to its targets.
T1199 Trusted Relationship Gamaredon group malware abuses a compromised organization’s email accounts to send emails with malicious attachments to the victim’s contacts.
Execution T1064 Scripting Gamaredon group uses scripting heavily, mostly Batch files and VBScript.
T1085 Rundll32 Gamaredon group malware uses rundll32 to launch malicious DLLs, for example the C/C++ backdoor.
T1106 Execution through API Gamaredon group malware uses CreateProcess to launch additional components, for example to execute payloads received from its C&C servers.
T1204 User Execution Initial compromise by the Gamaredon group usually requires the user to execute a malicious email attachment.
Persistence T1053 Scheduled Task Gamaredon group malware registers several of its modules (downloaders, backdoors, etc.) as scheduled tasks.
T1060 Registry Run Keys / Startup Folder Gamaredon group uses Run keys and the Startup folder to ensure its modules are executed at every reboot.
T1137 Office Application Startup Gamaredon group malware inserts malicious macros into existing documents, providing persistence when they are reopened.
Defense Evasion T1027 Obfuscated Files or Information Gamaredon group makes heavy use of compressed archives, some password protected, to deliver its malicious payloads. Strings are routinely obfuscated or encrypted in these malicious modules.
T1112 Modify Registry Gamaredon group malware modifies several registry keys to deactivate security mechanisms in Microsoft Office related to macros.
T1116 Code Signing Gamaredon group uses signed binaries in its malicious campaigns. One notable example is wget samples signed with a valid certificate from Jernej Simončič and available here.
T1140 Deobfuscate/Decode Files or Information Gamaredon group uses simple string deobfuscation and decryption routines in its modules.
T1221 Template Injection Gamaredon group adds remote templates to documents it sends to targets.
T1500 Compile After Delivery Gamaredon group C# compiler module contains an obfuscated downloader that it compiles using csc.exe and then executes.
Discovery T1083 File and Directory Discovery Gamaredon group uses its backdoors to automatically list interesting files (such as Office documents) found on a system for future exfiltration.
Lateral Movement T1080 Taint Shared Content Gamaredon group malware injects malicious macros into all Word and Excel documents reachable by the compromised system.
T1534 Internal Spearphishing Gamaredon group uses its Outlook VBA macro to send email with malicious attachments to other targets within the same organization.
Collection T1005 Data from Local System Gamaredon group malware actively searches for sensitive documents on the local system.
T1025 Data from Removable Media Gamaredon group malware scans all drives for sensitive data and also watches for removable drives being inserted into a system.
T1039 Data from Network Shared Drive Gamaredon group malware scans all drives A: – Z: for sensitive data, so it will scan any network shares mounted as drives.
T1113 Screen Capture Gamaredon group uses a backdoor that takes screenshots every minute.
T1119 Automated Collection Gamaredon group deploys scripts on compromised systems that automatically scan for interesting documents.
Command and Control T1071 Standard Application Layer Protocol Gamaredon group malware uses both HTTP and HTTPS for command and control.
Exfiltration T1020 Automated Exfiltration Gamaredon group uses modules that automatically upload harvested documents to the C&C server.