Norman : Varonis découvre une nouvelle souche de logiciel malveillant et un mystérieux Shell Web au cours d’une investigation de piratage cryptographique Monero

Norman cryptominer

Quelques mois seulement après la détection de QBot, l’équipe de recherche sur la sécurité de Varonis a récemment enquêté sur une infection persistante par un cryptominer qui s’était propagée à presque tous les dispositifs d’une entreprise de taille moyenne. L’analyse des échantillons de logiciels malveillants recueillis a révélé une nouvelle variante, que l’équipe a surnommée “Norman”, qui utilise diverses techniques pour se cacher et éviter d’être découvert. Nous avons également trouvé un shell web interactif qui semble être lié à des opérations de mining.

Aperçu de la recherche sur Norman

  • Nous avons trouvé une infection à grande échelle de cryptominers ; presque tous les serveurs et postes de travail de l’entreprise étaient infectés.
  • Depuis l’infection initiale, qui a eu lieu il y a plus d’un an, le nombre de variantes et de dispositifs infectés a augmenté.
  • Norman utilise des techniques d’évasion pour se cacher des analyses et éviter d’être découvert.
  • La plupart des variantes de ce logiciel malveillant s’appuyaient sur DuckDNS (un service DNS dynamique gratuit). Certaines en avaient besoin pour les communications de contrôle et commande (C&C), tandis que d’autres l’utilisaient pour extraire les paramètres de configuration ou pour envoyer des mises à jour.
  • Norman est un cryptominer basé sur XMRig, un mineur de haute performance pour la cryptomonnaie Monero.
  • Nous n’avons aucune preuve concluante qui relie les cryptominers au shell PHP interactif. Cependant, nous avons de fortes raisons de croire qu’ils proviennent du même acteur de la menace.
  • Nous fournissons dans cet article des conseils pour se défendre contre les shells web distants et les cryptominers.

Comme d’habitude, notre équipe a partagé d’autres renseignements non publics avec les autorités compétentes et fait de la divulgation responsable.

L’enquête

L’enquête a débuté lors d’une évaluation de notre plateforme de sécurité des données, qui a rapidement soulevé plusieurs alertes suspectes liées au réseau pour une activité anormale sur le Web, parallèlement à des activités de fichiers anormaux. Le client s’est rapidement rendu compte que les appareils signalés par la plate-forme Varonis appartenaient aux mêmes utilisateurs qui avaient signalé des applications instables récentes et des ralentissements du réseau.

L’équipe d’investigation de Varonis a enquêté manuellement sur l’environnement du client, sautant d’une station infectée à l’autre en fonction des alertes générées par Varonis. L’équipe de réponse aux incidents de Varonis a mis en place une règle personnalisée dans DatAlert pour détecter les machines qui étaient en train de miner activement et ils ont rapidement contenu l’incident. L’équipe a transmis des échantillons de logiciel malveillant à nos équipes de recherche et de sécurité, qui ont déterminé qu’une enquête approfondie supplémentaire était nécessaire.

Les hôtes infectés ont été facilement détectés par leur utilisation de DuckDNS, un service DNS dynamique qui permet à ses utilisateurs de créer des noms de domaine personnalisés. Comme indiqué plus haut, la plupart des logiciels malveillants de ce cas s’appuyaient sur DuckDNS pour les communications de contrôle et commande (C&C), pour extraire les paramètres de configuration ou envoyer les mises à jour.

Presque tous les serveurs et postes de travail étaient infectés par des logiciels malveillants. La plupart étaient des variantes génériques des cryptominers. Certains étaient des outils de dumping de mots de passe, d’autres étaient des shells PHP cachés, et certains étaient présents depuis plusieurs années.

Nous avons livré nos résultats au client, retiré le logiciel malveillant de son environnement et l’infection a cessé.

Parmi tous les échantillons de cryptominer que nous avons trouvés, l’un d’entre eux s’est démarqué. Nous l’avons appelé “Norman”.

Faites la connaissance de “Norman” le Cryptominer

Norman est un cryptominer basé sur XMRig, un mineur de haute performance pour la cryptomonnaie Monero. Contrairement à d’autres échantillons de mineurs que nous avons recueillis, Norman utilise des techniques d’évasion pour se cacher des analyses et éviter d’être découvert.

A première vue, le malware semblait être un mineur générique se cachant sous le nom de “svchost.exe”. Cependant, les techniques qu’il utilisait se sont avérées plus intéressantes.

Le déploiement du malware peut être divisé en trois étapes :

  • Exécution
  • Injection
  • Mining

Une analyse étape par étape

Première étape : l’exécution

La première étape commence avec l’exécutable svchost.exe.

Le malware est compilé avec NSIS – “Nullsoft Scriptable Install System”, ce qui est inhabituel. NSIS est un système open-source utilisé pour créer des installateurs Windows. Comme SFX, il crée une archive de fichier et un fichier script qui s’exécute lorsque le programme d’installation s’exécute. Le fichier script indique au programme quels fichiers exécuter et peut interagir avec les autres fichiers de l’archive.

Note : pour obtenir le fichier script NSIS à partir de l’exécutable, vous aurez besoin d’utiliser 7zip version 9.38, car la fonction est obsolète dans les versions ultérieures.

Le logiciel malveillant contenu dans l’archive NSIS contient les fichiers suivants :

  • CallAnsiPlugin(dot)dll, CLR.dll – Modules NSIS pour appeler des fonctions DLL.NET.
  • 5zmjbxUIOVQ58qPR(dot)dll – DLL principale de la charge utile
  • 4jy4sobf(dot)acz, es1qdxg2(dot)5pk, OIM1iVhZ.txt – Données de la charge utile
  • Retreat(dot)mp3, Cropped_controller_config_controller_controller_i_lb(dot)png – Divers fichiers qui ne sont pas liés au malware

La commande du fichier script NSIS qui exécute la charge utile est celle-ci :

commande du fichier script NSIS qui exécute la charge utile

Le malware est exécuté en appelant une fonction de 5zmjbxUIOVQ58qPR(dot)dll qui accepte les autres fichiers comme paramètres.

Deuxième étape : l’injection

Le fichier 5zmjbxUIOVQ58qPR(dot)dll est la charge utile principale, selon le script NSIS ci-dessus. Un rapide coup d’oeil aux métadonnées a montré que la DLL s’appelait à l’origine “Norman.dll”’, et donc, nous l’avons nommée ainsi.

La DLL est construite avec .NET et triple obfusquée avec Agile obfuscator, un obfuscateur commercial connu.

L’exécution implique de nombreuses injections de charge utile en lui-même et dans d’autres processus. Selon le type de bit du système d’exploitation, le malware choisira un chemin d’exécution différent et lancera différents processus.

le malware choisira un chemin d'exécution différent et lancera différents processus

En fonction du chemin d’exécution, le malware choisira différents processus à lancer :

En fonction du chemin d'exécution, le malware choisira différents processus à lancer

La charge utile injectée a deux fonctions principales : exécuter le cryptominer et échapper à la détection.

Si le système d’exploitation est x64

Tandis que le svchosts.exe original (le fichier NSIS) s’exécute, il crée une autre itération de lui-même et lui injecte une charge utile (1). Peu de temps après, il exécute soit Notepad soit Explorer et y injecte le cryptominer (2).

il crée une autre itération de lui-même

Le fichier svchost.exe d’origine est alors éliminé et le nouveau fichier svchost.exe est utilisé comme chien de garde pour le processus du mineur.

Si le système d’exploitation est x32

Le fichier svchosts.exe original (le fichier NSIS) s’exécute, crée une autre instance de lui-même et injecte la charge utile comme la variante 64x.

Mais cette fois, le malware injectera la charge utile dans le processus explorer.exe de l’utilisateur. De là, il lancera wuapp.exe ou svchost.exe et y injectera le mineur.

le malware injectera la charge utile dans le processus explorer.exe

Le malware cache l’injection dans explorer.exe en écrasant la charge utile injectée avec le chemin et les NULLs de wuapp.exe.

Le malware cache l'injection dans explorer.exe

De la même manière que pour le chemin d’exécution x64, le fichier svchost.exe d’origine est éliminé et le second fichier svchost.exe est utilisé comme chien de garde qui réinjectera le fichier explorer.exe si nécessaire, par exemple si le processus est terminé par l’utilisateur.

A la fin de l’arbre d’exécution x64 ou x32, le malware injectera toujours le cryptominer dans un processus légitime qu’il lance.

Une fois lancé, le logiciel malveillant est conçu pour éviter d’être détecté en arrêtant le mineur lorsqu’un utilisateur ouvre le Gestionnaire des tâches, ce qui est plutôt malin.

Remarquez comment lorsque le processus du Gestionnaire des tâches démarre, le fichier wuapp.exe est terminé.

lorsque le processus du Gestionnaire des tâches démarre, le fichier wuapp.exe est terminé

Étape trois : le Miner

Jetons un coup d’oeil au mineur de XMRig mentionné plus tôt.

Le logiciel malveillant injecte une version UPX obfusquée du mineur dans Notepad, Explorer, svchost ou wuapp, selon le chemin d’exécution.

L’en-tête PE du mineur a été enlevé, et nous pouvons voir qu’il est obfusqué avec UPX :

obfusqué avec UPX

Après le dumping et la reconstruction de l’exécutable, nous avons pu l’exécuter :

dumping et la reconstruction de l'exécutable

Notez que l’adresse XMR est interdite, ce qui désactive effectivement ce mineur.

Les configurations du mineur :

  1. "url": "pool.minexmr.com:5555","user": "49WvfokdnuK6ojQePe6x2M3UCD59v3BQiBszkuTGE7wmNJuyAvHM9ojedgxMwNx9tZA33P84EeMLte7t6qZhxNHqHyfq9xA","pass": "x"

Un mystérieux shell PHP transmettant à un serveur C&C

Au cours de notre enquête, nos spécialistes ont révélé un fichier XSL qui a attiré notre attention. Après notre analyse approfondie de l’échantillon, nous avons découvert un nouveau shell PHP qui se connecte en permanence à un serveur de commande et de contrôle (C&C).

Sur plusieurs serveurs dans l’environnement du client, nous avons trouvé un fichier XSL exécuté par mscorsv.exe, exécutable Windows connu, dans un dossier sous sysWOW64.

Le dossier du logiciel malveillant s’appelait “AutoRecover” et contenait plusieurs fichiers :

  • Le fichier XSL, xml.XSL
  • Neuf fichiers de bibliothèque de liens dynamiques (DLL)

Et des exécutables :

  • Mscorsv(dot)exe 
  • Wmiprvse(dot)exe 

exécutables Mscorsv(dot)exe & Wmiprvse(dot)exe 

Le fichier XSL

Les fichiers XSL sont des feuilles de style, comme celles qui sont utilisées avec CSS, qui décrivent comment afficher un document XML.

En utilisant Notepad, nous avons identifié que le fichier n’était pas un fichier XSL, mais du code PHP obfusqué par Zend Guard. Ce fait intéressant nous a amenés à supposer qu’il s’agit de la charge utile du logiciel malveillant sur la base du modèle d’exécution.

code PHP obfusqué par Zend Guard

Les Neuf DLLs

Après un rapide coup d’oeil au fichier XSL, les neuf DLLs avaient du sens.

Dans le dossier principal, il y a une DLL appelée php.dll et trois autres bibliothèques liées à SSL et MySQL.

Dans les sous-dossiers, nous avons trouvé quatre bibliothèques PHP et une bibliothèque Zend Guard. Tout cela est légitime et vient avec l’installation de PHP ou de bibliothèques externes.

A ce stade, nous avons pensé que nous pouvions supposer que le malware était basé sur PHP et obfusqué par Zend Guard.

Les exécutables

Il y avait deux exécutables : Mscorsv.exe et WmiPrvSE.exe

En regardant dans mscorsv.exe, nous avons trouvé qu’il n’était pas signé par Microsoft, bien que son “ProductName” était “Microsoft©.Net Framework”.

Cela semblait étrange au début, mais en avançant, l’exécutable Wmiprvse.exe a expliqué ce fait.

Le fichier Wmiprvse.exe n’était pas signé, mais était protégé par un copyright pour le groupe PHP et avait une icône PHP. Un rapide coup d’oeil à ses chaînes de caractères montre les commandes du manuel d’aide de PHP.

L’exécution du paramètre -version a révélé qu’il s’agit d’un exécutable conçu pour exécuter Zend Guard.

exécutable conçu pour exécuter Zend Guard

Le fichier mscorsv.exe et les chaînes en cours d’exécution produisaient presque la même sortie que le fichier Wmiprvse.exe. L’exécuter avec le paramètre -version imprime les mêmes données à l’écran.

Nous avons comparé les données binaires des deux fichiers et constaté qu’ils étaient identiques à l’exception du “Copyright” et du “Nom de la société”/”Nom du produit”.

comparer les données binaires des deux fichiers

Par conséquent, nous avons conclu que le fichier XSL contient du code PHP qui s’exécute en utilisant l’exécutable Zend Guard, qui est déguisé en mscorsv.exe.

Déchiffrer le fichier XSL

Une recherche rapide sur Google nous a fourni un désobfuscateur Zend Guard et un fichier xml.XSL désobfusqué.

Déchiffrer le fichier XSL

Le logiciel malveillant lui-même s’est avéré être un shell PHP qui se connecte continuellement à un serveur de commande et de contrôle (C&C).

Les commandes et les sorties qu’il envoie et reçoit sont cryptées. Comme nous avions le code source, cependant, nous avions à la fois la clé de cryptage et les commandes.

Le logiciel malveillant lui-même possède quelques fonctionnalités intégrées :

  • Eval – principalement utilisé pour modifier les variables existantes dans le code
  • Rédiger un fichier en local
  • Capacités DB
  • Capacités PSEXEC
  • Exécution cachée
  • Cartographie des processus et des services
  • Selon la variable suivante, il semble que le malware ait plusieurs versions :

il semble que le malware ait plusieurs versions

Les versions que nous avons repérées étaient :

  • 0.5f
  • 0.4p
  • 0.4o

La seule persistance du malware est qu’une fois exécuté, il crée un service qui s’exécute de lui-même et son nom change de version en version.

En creusant sur Internet pour trouver des échantillons similaires, nous avons trouvé des logiciels malveillants qui semblaient être une version précédente de notre échantillon. Le contenu du dossier était similaire, mais le fichier XSL était différent, et son contenu montrait un numéro de version différent.

Parlez-vous le Malware ?

Le logiciel malveillant peut provenir de France ou d’un autre pays francophone : le fichier SFX contient des commentaires en français, qui indiquent que l’auteur a utilisé une version française de WinRAR pour créer le fichier.

version française de WinRAR pour créer le fichier

De plus, certaines variables et fonctions du code étaient en français :

Norman code Français 1

Norman code Français 2

Surveiller et attendre de nouvelles commandes

Nous avons modifié le code et exécuté le logiciel malveillant pour qu’il nous informe des commandes reçues :

Norman commandes reçues

Après la session initiale, nous pouvons voir que le logiciel malveillant reçoit une commande codée en base 64 pour le commutateur EVAL64.

La commande encodée est décodée et exécutée. Il modifie quelques-unes des variables internes (taille de la mémoire tampon en lecture et en écriture), puis le malware entre dans une boucle en attendant les commandes.

A ce jour, nous n’avons pas encore reçu de nouveaux ordres.

Shells PHP interactifs et cryptominers : Sont-ils reliés ?

Nous ne savons pas si Norman est connecté au shell PHP, car il existe des arguments valables dans les deux cas :

Pourquoi ils pourraient être connectés

  • Aucun des échantillons de logiciels malveillants n’avait la capacité de se déplacer latéralement, bien qu’ils se soient répandus sur différents appareils et segments de réseau.
    S’il est concevable que l’acteur de la menace ait pu infecter chaque hôte individuellement (peut-être par le même vecteur utilisé lors de l’infection initiale), il aurait été plus efficace d’utiliser le PHP-Shell pour se déplacer latéralement et infecter d’autres dispositifs sur le réseau de la victime.
  • Les campagnes à grande échelle et ciblées contre une organisation laissent souvent des artefacts techniques ou génèrent des pistes de renseignements sur les menaces ; nous n’en avons trouvé aucune dans ce cas.
  • Norman et l’interpréteur de commandes PHP utilisaient tous deux DuckDNS.

Pourquoi ils ne le sont peut-être pas

  • Il n’y a pas de similitudes techniques entre les variantes des logiciels malveillants de cryptomining et le shell PHP. Le crypto-malware a été développé en C\++ alors que le shell était en PHP, les structures de code ne montrent aucune similitude, et les fonctionnalités réseau sont implémentées différemment.
  • Il n’y a aucune capacité de communication entre les variantes de logiciels malveillants et le shell PHP.
  • Ils n’ont pas de commentaires, de fichiers, de métadonnées ou “d’empreintes digitales” communs.

3 conseils pour se défendre contre les Shells distants

Les logiciels malveillants qui s’appuient sur les commandes des serveurs C&C pour fonctionner constituent un type de menace différent de celui d’un virus moyen. Leurs actions ne seront pas aussi prévisibles et ressembleront probablement à celles d’une attaque manuelle ou d’un pentester. Ainsi, la détection de ces attaques sera un peu plus difficile que l’exécution d’un scan AV.

Voici trois conseils pour défendre votre entreprise contre les attaques à distance :

  1. Maintenez tous les logiciels à jour. Les attaquants exploitent souvent les vulnérabilités des logiciels et des systèmes d’exploitation pour se déplacer latéralement dans l’organisation et voler des données. Rester à jour avec les correctifs réduit considérablement le risque de menaces.
  2. Surveiller l’accès anormal aux données. Un attaquant tentera très probablement d’exfiltrer les données sensibles de l’organisation. La surveillance de l’accès anormal des utilisateurs aux données sensibles pourrait aider à détecter les utilisateurs compromis et les données qui pourraient avoir été exposées.
  3. Surveiller le trafic réseau. En utilisant un pare-feu ou un proxy, il est possible de détecter et de bloquer les communications malveillantes vers les serveurs C&C, empêchant ainsi l’attaquant d’exécuter des commandes ou d’extraire des données.

Préoccupé par les Cryptominers ? 6 conseils pour aider à protéger votre entreprise

  1. Maintenez tous les systèmes d’exploitation à jour. La gestion des patchs et correctifs est cruciale pour prévenir les exploitations et les infections non désirées.
  2. Surveillez le trafic réseau et les proxies Web. Il est possible de détecter et de prévenir une partie des attaques en bloquant le trafic basé sur des domaines malveillants ou en limitant les communications inutiles.
  3. Utilisez et maintenez des solutions antivirus et des solutions basées sur les endpoints (mais ne laissez pas cela être votre seule couche de défense). Les produits endpoints devraient être capables de détecter les cryptominers bien connus et de prévenir les infections avant que des dommages ne surviennent. Gardez à l’esprit que de nouvelles variantes ou de nouvelles techniques d’évasion peuvent contourner les produits de sécurité.
  4. Surveillez l’activité du CPU sur les ordinateurs. Les cryptominers utilisent généralement le CPU de l’ordinateur pour extraire les données. Toute dégradation notable de la vitesse de traitement nécessite une enquête.
  5. Surveillez le DNS pour détecter toute utilisation inhabituelle de services DNS dynamiques (comme DuckDNS). Bien que DuckDNS et d’autres services DNS dynamiques jouent un rôle légitime, l’utilisation de DuckDNS par des logiciels malveillants a permis à nos équipes de détecter plus facilement les hôtes infectés dans cette enquête.
  6. Préparez et ayez un plan de Réponse à Incidents. Assurez-vous d’avoir les bonnes procédures pour des incidents similaires et d’être capable de détecter, de contenir et de corriger automatiquement les cryptominers.

Note aux clients Varonis : Varonis DatAlert inclut des modèles de menaces qui détectent les logiciels malveillants de cryptomining. Les clients peuvent également créer des règles personnalisées pour fournir des détections dédiées contre des domaines potentiellement sur liste noire. Pour vérifier que vous utilisez la version la plus récente de DatAlert et que les bons modèles de menaces sont activés, n’hésitez pas à contacter vos équipes commerciales ou le support Varonis.


– Merci infiniment à Dolev Taler & Eric Saraga, chercheurs en Cybersécurité chez Varonis, et auteurs de la version originale anglaise de cet article du Blog.

Merci également à Snir Ben-Shimol, Directeur monde de la Cybersecurité, et à mes collègues de l’équipe cybersécurité et de l’équipe réponse à incidents chez notre client, ayant découvert, travaillé, et remédié à ce cas.