Table des matières:
- Introduction
- Chaîne d'infection
- Arbre de processus
- Campagne 1 :
– Persistance
– Fichiers BATCH
– script PowerShell
– Chargeur
– Xworm/Remcos - Campagne 2
- Conclusion
- IOC
- Détections
- TTP MITRE ATTACK
Introduction :
De récentes campagnes de menaces ont révélé une utilisation croissante de chargeurs basés sur BAT pour diffuser des chevaux de Troie d'accès à distance, notamment XWorm et Remcos. Ces campagnes commencent souvent par une archive ZIP, généralement hébergée sur des plateformes d'apparence fiable comme ImgKit, et sont conçues pour apparaître comme du contenu légitime afin d'inciter l'utilisateur à interagir.
Lors de l'extraction, le fichier ZIP contient un script BAT hautement obscurci qui constitue l'étape initiale de la chaîne d'infection. Ces fichiers BAT utilisent des techniques avancées pour échapper à la détection statique et sont responsables de l'exécution de chargeurs PowerShell qui injectent la charge utile RAT directement en mémoire. Cette approche permet l'exécution sans fichier, une tendance croissante des malwares modernes pour contourner les défenses des terminaux.
Une évolution notable de cette campagne est l'utilisation de fichiers SVG pour diffuser les scripts BAT malveillants. Ces fichiers SVG contiennent du JavaScript intégré qui déclenche la chaîne d'exécution lorsqu'ils sont affichés dans des environnements vulnérables ou intégrés à des pages de phishing. Cette technique illustre une tendance à l'utilisation de formats de fichiers non traditionnels pour la diffusion de logiciels malveillants, exploitant leurs capacités de script pour échapper à la détection.
Chaîne d'infection:

Arbre de processus :

Campagne 1 :
Lors de l'analyse de la campagne 1, nous avons identifié plusieurs scripts BAT associés à la campagne, témoignant d'une évolution du paysage des menaces. Certains de ces scripts semblent être en cours de développement et contiennent du code partiel ou en phase de test, tandis que d'autres sont pleinement fonctionnels et capables d'exécuter la chaîne d'attaque complète, y compris le téléchargement et l'exécution de la charge utile.
L'image ci-dessous présente deux fichiers BAT :
- Méthode 1 : Livré directement en pièce jointe via EML (fichier e-mail).
- Méthode 2 : Téléchargé via une URL hébergée sur la plateforme ImageKit.
Cette variation dans les méthodes de diffusion suggère que les acteurs de la menace expérimentent différentes approches pour améliorer les taux de réussite des infections et échapper aux mécanismes de détection.

Persistance:
Le logiciel malveillant assure sa persistance en créant un fichier BAT dans le dossier de démarrage de Windows. Cela garantit que le script malveillant est automatiquement exécuté dès que l'utilisateur démarre le système ou se connecte à son compte.

Fichiers BATCH :
La figure ci-dessous affiche le script BAT dans sa forme obscurcie à côté de sa version déobscurcie.

Script PowerShell :
La figure ci-dessous présente la fenêtre du processus PowerShell et les arguments de ligne de commande utilisés lors de l'exécution. Cela permet de comprendre comment le malware exploite PowerShell pour la distribution de la charge utile en mémoire. Nous analyserons le script PowerShell en détail dans les sections suivantes afin de comprendre son rôle dans le déploiement de XWorm.


Cette commande PowerShell exécute le script en décodant une chaîne encodée en Base64 et en l'exécutant en mémoire. Elle utilise -nop pour éviter de charger le profil utilisateur, -w hidden pour masquer la fenêtre et iex (Invoke-Expression) pour exécuter le contenu décodé.
Script désobscurci :

Nous avons divisé le script désobfusqué en deux parties. La première partie, un script PowerShell, est conçue pour localiser et exécuter un code obfusqué intégré dans un fichier batch (aoc.bat) situé dans le répertoire du profil de l'utilisateur actuel. Elle récupère d'abord le nom d'utilisateur à partir des variables d'environnement afin de construire le chemin complet vers aoc.bat. Elle lit ensuite toutes les lignes en utilisant l'encodage UTF-8 et les parcourt, en recherchant spécifiquement celles qui commencent par un préfixe de commentaire composé de trois deux-points (:::), suivi d'une chaîne encodée en Base64. Lorsqu'une telle ligne est trouvée, elle tente de décoder la chaîne Base64 en un tableau d'octets, puis la convertit en une chaîne Unicode affectée à la variable $ttzhae. Cette chaîne décodée ($ttzhae) contient une couche supplémentaire de script PowerShell, qui est ensuite exécutée en mémoire à l'aide de la commande Invoke-Expression. Cela permet à l'attaquant d'intégrer et d'exécuter subrepticement une logique PowerShell malveillante complexe ou à plusieurs étapes dans un commentaire de fichier batch apparemment anodin, permettant une exécution furtive et sans fichier.

Le script désactive par programmation deux mécanismes de sécurité Windows essentiels, AMSI (Antimalware Scan Interface) et ETW (Event Tracing for Windows), afin d'échapper à la détection. Il exploite la réflexion .NET et la création dynamique de délégués pour résoudre des fonctions natives telles que GetProcAddress, GetModuleHandle, VirtualProtect et AmsiInitialize. À partir de là, il localise et modifie la fonction AmsiScanBuffer en mémoire à l'aide de l'instruction (mov eax, 0; ret), contournant ainsi l'analyse AMSI. De même, il désactive le suivi des événements en remplaçant le début de EtwEventWrite par une instruction de retour. Ces modifications en mémoire permettent à une activité PowerShell malveillante de s'exécuter furtivement, sans être enregistrée ni analysée par Windows. endpoint protection de Red Lion

Dans la seconde partie du script PowerShell, le nom de l'utilisateur actuel est récupéré à partir de l'environnement, puis le chemin d'accès au fichier aoc.bat , situé dans le répertoire de profil de l'utilisateur, est construit. Le script exécute ensuite des charges utiles intégrées sous forme d'assemblys .NET chiffrés et compressés, dissimulés dans ce fichier batch. Plus précisément, le script recherche une ligne de commentaire commençant par ::, contenant une chaîne de caractères encodée en Base64. Cette chaîne est ensuite divisée en deux parties à l'aide de la barre oblique inverse (\). Chaque partie subit un décodage Base64, un déchiffrement AES à l'aide d'une clé et d'un vecteur d'initialisation (IV) codés en dur (en mode CBC avec remplissage PKCS7), suivi d'une décompression GZIP, comme illustré dans les figures. Le résultat est constitué de deux assemblys .NET distincts, chargés et exécutés directement en mémoire. Le premier assembly est appelé sans argument, tandis que le second est exécuté avec '%*' passé comme entrée de ligne de commande simulée.

La deuxième charge utile joue un rôle plus critique. Elle fonctionne comme un chargeur responsable de l'exécution du malware final, qui est le cheval de Troie d'accès à distance XWorm (RAT).

Chargeur
Le chargeur est conçu pour échapper à la détection, désactiver la journalisation des événements et exécuter les charges utiles intégrées directement en mémoire. Pour ce faire, il déchiffre et exécute les exécutables .NET via Assembly.Load ou le shellcode déchiffré à l'aide de VirtualProtect et de délégués.



Capacités du chargeur :
- Éviter la détection

- Désactiver la journalisation des événements

- Extraire et exécuter des charges utiles intégrées
Nous avons identifié ici plusieurs chargeurs utilisant des techniques d'exécution en mémoire pour échapper à la détection et persister furtivement. Certains de ces chargeurs contiennent des exécutables .NET chiffrés, déchiffrés à l'exécution et exécutés directement depuis la mémoire via Assembly.Load suivi de .EntryPoint.Invoke, permettant ainsi au chargeur d'exécuter du code managé sans écrire l'exécutable sur le disque.
En revanche, d'autres variantes utilisent un shellcode chiffré plutôt qu'un binaire. Ces variantes déchiffrent le shellcode, modifient les protections mémoire à l'aide de VirtualProtect pour le rendre exécutable, puis l'exécutent à l'aide d'un délégué créé via Marshal.GetDelegateForFunctionPointer. Comme illustré dans les figures ci-dessous :

- Persistence

Xworm
Nous avons déjà publié un article sur XWorm et Remcos plus tôt cette année, en fournissant une analyse approfondie de leurs fonctionnalités de base, de leurs capacités avancées telles que l'enregistrement des frappes au clavier, l'exécution de commandes à distance, l'exfiltration de données et de leurs méthodes de persistance et d'évasion.

En plus de XWorm, plusieurs variantes de la même campagne utilisaient également Remcos , un cheval de Troie d'accès à distance (RAT) commercial largement connu qui offre une gamme de fonctionnalités, notamment l'accès au bureau à distance, l'enregistrement des frappes au clavier, l'exécution de commandes, la manipulation de fichiers, la capture d'écran et l'exfiltration de données.
Campagne 2 :
La Campagne 2 introduit un changement notable dans la diffusion des logiciels malveillants en exploitant les fichiers SVG (Scalable Vector Graphics) intégrés à JavaScript, principalement utilisés dans les attaques de phishing. Ces fichiers SVG malveillants sont conçus pour ressembler à des images légitimes et sont soit affichés dans des environnements logiciels vulnérables (tels que des visionneuses d'images ou des clients de messagerie obsolètes), soit intégrés à des pages web de phishing conçues pour attirer les utilisateurs peu méfiants. Désormais, le JavaScript intégré au fichier SVG agit comme un déclencheur, déclenchant le téléchargement automatique d'une archive ZIP à l'ouverture ou à la prévisualisation du fichier SVG.
Cette archive ZIP téléchargée contient un script BAT obscurci, qui sert de vecteur d'accès initial au malware. Une fois exécuté, manuellement par l'utilisateur ou par des techniques d'ingénierie sociale, le script BAT déclenche une chaîne d'infection en plusieurs étapes, similaire à celle observée lors de la campagne 1. Plus précisément, le script BAT appelle des commandes PowerShell pour décoder et exécuter un fichier exécutable (EXE) directement en mémoire. Ce fichier est chargé de déchiffrer et de déployer la charge utile finale, qui, dans cette campagne, est le cheval de Troie d'accès à distance (RAT) XWorm.
L'utilisation du SVG comme mécanisme de diffusion représente une évolution notable dans les méthodes d'attaque, car les fichiers images sont généralement considérés comme inoffensifs et souvent exclus de l'inspection approfondie du contenu par les outils de sécurité traditionnels. En exploitant les capacités de script des SVG, les acteurs malveillants peuvent contourner efficacement les défenses du périmètre et diffuser des charges utiles malveillantes de manière furtive et sans fichier.
Conclusion:
Ces campagnes mettent en évidence une tendance croissante à l'utilisation de scripts obfusqués, de logiciels malveillants sans fichier et de formats de fichiers non traditionnels comme les SVG pour diffuser des chevaux de Troie d'accès à distance tels que XWorm et Remcos. En intégrant des charges utiles dans des fichiers BAT et en les exécutant via PowerShell, les attaquants contournent efficacement les défenses statiques. Le passage de l'utilisation des SVG dans les attaques de phishing à la diffusion de logiciels malveillants souligne encore davantage la nécessité de la détection comportementale, de l'inspection du contenu et d'une meilleure sensibilisation des utilisateurs pour contrer ces menaces en constante évolution.
IOCS :
| MD5 | Fichier |
| EDA018A9D51F3B09C20E88A15F630DF5 | MTD |
| 23E30938E00F89BF345C9C1E58A6CC1D | JS |
| 1CE36351D7175E9244209AE0D42759D9 | CHARGEUR |
| EC04BC20CA447556C3BDCFCBF6662C60 | XWORM |
| D439CB98CF44D359C6ABCDDDB6E85454 | REMCOS |
Détections
Trojan.LoaderCiR
Cheval de Troie.GenericFC.S29960909
TTP MITRE ATTACK :
| Tactique | ID et nom de la technique | Description |
| De bout en bout | T1059.001 – Interpréteur de commandes et de scripts : PowerShell | PowerShell est utilisé pour interpréter les commandes, décrypter les données et appeler les charges utiles. |
| T1106 – Exécution via API | Le script utilise les API .NET (par exemple, Assembly.Load, Invoke) pour exécuter des charges utiles en mémoire. | |
| Évasion défensive | T1027 – Fichiers ou informations obscurcis | Les charges utiles sont codées en Base64, cryptées AES et compressées pour contourner les détections statiques. |
| T1140 – Décrypter/décoder des fichiers ou des informations | Le script décode et décompresse les charges utiles avant l'exécution. | |
| T1055.012 – Injection de processus : Injection d'assemblage .NET | Les charges utiles sont chargées en mémoire | |
| T1036 – Masquage | Le contenu malveillant est caché dans le fichier batch. | |
| Persistence | T1053 – Tâche/travail planifié | Établissez la persistance grâce au menu de démarrage. |
| Accès initial | T1204 – Exécution par l'utilisateur | L'exécution dépend de l'exécution manuelle du fichier batch par un utilisateur |
| Commander et contrôler | T1132 – Codage des données | Base64 et le cryptage sont utilisés pour coder les commandes ou les charges utiles. |
| T1219 – Logiciel d'accès à distance | Xworm fournit un accès à distance complet et un contrôle sur l'hôte infecté. | |
| Accès aux informations d'identification | T1056.001 – Capture d'entrée : enregistrement de frappe | XWorm inclut une fonctionnalité d'enregistrement de frappe pour voler les entrées et les informations d'identification de l'utilisateur. |
| exfiltration | T1041 – Exfiltration sur canal C2 | Les données volées sont exfiltrées via le même canal C2 utilisé par Xworm. |
Auteur :
Vaibhav Billade
Rumana Siddiqui



