Logiciel malveillant VOID#GEIST
Des chercheurs en cybersécurité ont mis au jour une campagne de logiciels malveillants sophistiquée en plusieurs étapes, utilisant des scripts batch pour déployer des chevaux de Troie d'accès à distance (RAT) chiffrés. Cette campagne, baptisée VOID#GEIST, déploie plusieurs familles de RAT, dont XWorm, AsyncRAT et Xeno RAT.
La chaîne d'attaque exploite un script batch obfusqué qui déclenche une séquence d'actions conçues pour échapper à la détection. Ces actions comprennent le lancement d'un script batch supplémentaire, la mise en place d'un environnement d'exécution Python embarqué légitime et le déchiffrement de charges utiles de shellcode chiffrées. Le shellcode est exécuté directement en mémoire après avoir été injecté dans différentes instances du processus Windows explorer.exe grâce à une technique appelée injection Early Bird APC (Asynchronous Procedure Call).
Table des matières
Diffusion de logiciels malveillants par script : un modèle de menace moderne
Les acteurs malveillants modernes délaissent de plus en plus les logiciels malveillants exécutables autonomes traditionnels au profit de frameworks de diffusion multicouches basés sur des scripts, qui imitent le comportement des utilisateurs légitimes. Plutôt que de déployer des binaires exécutables portables (PE) classiques, les attaquants orchestrent des pipelines multicomposants qui combinent plusieurs technologies légitimes et environnements de script.
Les composants typiques utilisés dans ces frameworks comprennent :
- Scripts de traitement par lots utilisés pour orchestrer la séquence d'infection.
- Commandes PowerShell facilitant la mise en place furtive de charges utiles.
- Environnements d'exécution légitimes intégrés garantissant la portabilité entre les systèmes.
- Code shell brut exécuté directement en mémoire pour assurer la persistance et le contrôle.
Cette méthode d'exécution sans fichier réduit considérablement les risques de détection par analyse du disque. Chaque étape, prise individuellement, paraît relativement inoffensive et ressemble souvent à une activité administrative courante, permettant ainsi aux acteurs malveillants d'opérer dans des environnements compromis sans déclencher d'alertes de sécurité immédiates.
Accès initial via l’infrastructure de phishing et Cloudflare
L'attaque débute par l'exécution d'un script malveillant diffusé par e-mail (phishing). Ce script est récupéré depuis une infrastructure hébergée sur un domaine TryCloudflare. Une fois exécuté, il évite délibérément toute tentative d'élévation de privilèges et opère exclusivement dans les limites des autorisations de l'utilisateur connecté.
Cette stratégie permet au logiciel malveillant de s'implanter progressivement tout en se fondant dans les opérations courantes des utilisateurs. En évitant les actions nécessitant des privilèges élevés, l'attaque réduit le risque de déclencher des alertes de sécurité ou des demandes d'intervention de l'administrateur.
Techniques de distraction visuelle et d’exécution furtive
Après son exécution, la première étape du logiciel malveillant consiste à ouvrir un document leurre pour distraire la victime. Google Chrome s'ouvre en plein écran et affiche un document financier ou une facture au format PDF. Pendant que l'utilisateur se concentre sur le document, l'activité malveillante se poursuit en arrière-plan.
Simultanément, une commande PowerShell est exécutée pour relancer le script batch d'origine avec des paramètres d'exécution masqués. L'utilisation du paramètre `-WindowStyle Hidden` empêche l'affichage d'une fenêtre de console visible, garantissant ainsi que l'activité malveillante reste invisible à l'utilisateur.
Persistance grâce à l’exécution de démarrage au niveau de l’utilisateur
Pour assurer sa persistance après un redémarrage du système, le logiciel malveillant déploie un script batch auxiliaire dans le répertoire de démarrage de l'utilisateur Windows. Cet emplacement garantit l'exécution automatique du script à chaque connexion de la victime.
Ce mécanisme de persistance est volontairement discret. Au lieu d'utiliser des techniques plus intrusives comme la modification des clés de registre système, la création de tâches planifiées ou l'installation de services, le logiciel malveillant s'appuie exclusivement sur le comportement standard de démarrage au niveau utilisateur. Comme cette approche opère entièrement dans le contexte des privilèges de l'utilisateur actuel, elle évite de déclencher des demandes d'élévation de privilèges et réduit ainsi le risque d'être détectée par les outils de surveillance du registre.
Cadre de récupération et de décryptage de la charge utile
Lors de l'étape suivante de la chaîne d'infection, le logiciel malveillant contacte un domaine TryCloudflare pour récupérer des composants supplémentaires contenus dans des archives ZIP. Ces archives contiennent les modules nécessaires au déchiffrement et à l'exécution des charges utiles finales du logiciel malveillant.
L'archive téléchargée contient généralement les composants suivants :
- runn.py – un chargeur basé sur Python chargé de déchiffrer et d'injecter des modules de shellcode chiffrés en mémoire
- new.bin – charge utile de shellcode chiffrée associée à XWorm
- xn.bin – charge utile de shellcode chiffrée correspondant à Xeno RAT
- pul.bin – charge utile de shellcode chiffrée correspondant à AsyncRAT
- a.json, n.json et p.json – fichiers clés utilisés par le chargeur Python pour déchiffrer dynamiquement les charges utiles du shellcode pendant l'exécution.
Cette conception modulaire permet aux attaquants de déployer différentes charges utiles indépendamment et de les activer uniquement en cas de besoin.
Environnement d’exécution Python embarqué pour la portabilité et la discrétion
Une fois l'archive extraite, le logiciel malveillant déploie un environnement d'exécution Python légitime, obtenu directement depuis python.org. L'intégration d'un interpréteur légitime élimine toute dépendance à une éventuelle installation Python déjà présente sur le système compromis.
Du point de vue d'un attaquant, cette étape présente plusieurs avantages stratégiques. Le logiciel malveillant devient un environnement d'exécution autonome, capable de déchiffrer et d'injecter des charges utiles sans dépendances externes. Ceci améliore la portabilité entre différents systèmes, renforce la fiabilité et contribue à la discrétion opérationnelle grâce à l'utilisation de composants logiciels légitimes.
Exécution en mémoire de plusieurs charges utiles RAT
L'environnement d'exécution Python intégré est ensuite utilisé pour exécuter le script de chargement runn.py. Ce dernier déchiffre le shellcode associé à XWorm et l'injecte dans une instance en cours d'exécution d'explorer.exe grâce à l'injection Early Bird APC.
Pour déployer Xeno RAT, le logiciel malveillant exploite un fichier binaire légitime de Microsoft nommé AppInstallerPythonRedirector.exe, qui sert à invoquer Python et à exécuter les composants nécessaires. La même technique d'injection est ensuite réutilisée pour déployer AsyncRAT, garantissant ainsi que toutes les charges utiles sont exécutées intégralement en mémoire, sans laisser de traces sur le disque.
Balise de commande et de contrôle et architecture modulaire
La dernière étape de l'attaque consiste à envoyer une requête HTTP minimale à une infrastructure de commande et de contrôle (C2) contrôlée par l'attaquant et hébergée sur TryCloudflare. Cette requête confirme que le système a été compromis et est prêt à recevoir des instructions supplémentaires.
Bien que les cibles précises de la campagne demeurent inconnues, la chaîne d'infection révèle une architecture hautement modulaire. Au lieu de déployer une seule charge utile malveillante de grande envergure, les attaquants introduisent des composants progressivement à travers plusieurs étapes. Cette conception améliore la flexibilité opérationnelle et la résilience.
Du point de vue de la détection, un indicateur comportemental notable se dégage tout au long de la campagne : l’injection répétée de processus dans explorer.exe à intervalles rapprochés. Ce schéma peut constituer un signal important pour les équipes de défense qui tentent de corréler les activités suspectes aux différentes étapes du cycle de vie de l’attaque.