L’équipe de recherches sur les cybermenaces, Nocturnus, de Cybereason alerte sur une nouvelle menace, un cheval de Troie / Trojan (Remote Access Trojan) développé par le groupe APT EvilNum, ciblant actuellement le secteur bancaire, en particulier les Fintechs, en Europe.
Enquête par Tom Fakterman – Cybereason suit le groupe EvilNum depuis 2018. Les analystes de l’équipe Nocturnus ont récemment observé un regain d’activité du groupe et des évolutions dans leurs méthodes (TTPs) et outils (infra, nouveau trojan). EvilNum utilise un nouveau Remote Access Trojan, nommé PyVil par Cybereason, qui cible fortement le secteur bancaire/fintechs en Europe. EvilNum diffuse son cheval de Troie via des mails de phishing, abusant des process très utilisés dans le secteur bancaire de vérification des identités des clients, Know Your Customer / KYC. Le but final étant de voler des données et informations sensibles.
Au cours des derniers mois, l’équipe Cybereason Nocturnus a enquêté sur l’activité du groupe Evilnum. Le groupe a vu le jour en 2018, et depuis lors, l’activité d’Evilnum a été variée, avec des rapports récents utilisant différents composants écrits en Javascript et C# ainsi que des outils achetés auprès du fournisseur de logiciels malveillants en tant que service Golden Chickens.
Les opérations du groupe semblent être très ciblées, par opposition à une opération de phishing généralisée, avec un accent sur le marché FinTech en abusant de la réglementation Know Your Customer (KYC), des documents contenant des informations fournies par les clients lors de leurs activités. Depuis sa première découverte, le groupe a principalement ciblé différentes entreprises à travers l’UE.
Ces dernières semaines, l’équipe Nocturnus a observé une nouvelle activité du groupe, y compris plusieurs changements notables par rapport aux tactiques observées précédemment. Ces variations incluent un changement dans la chaîne d’infection et de persistance, une nouvelle infrastructure qui se développe au fil du temps et l’utilisation d’un nouveau cheval de Troie d’accès à distance (RAT) avec un script Python baptisé PyVil RAT.
PyVil RAT possède différentes fonctionnalités, et permet aux attaquants d’exfiltrer des données, d’effectuer un keylogging et la prise de captures d’écran, et le déploiement de plus d’outils tels que LaZagne afin de voler des identifiants.
Dans cet article, nous plongeons dans l’activité récente du groupe Evilnum et explorons sa nouvelle chaîne d’infection et ses nouveaux outils.
Principales conclusions
Evilnum : L’équipe Cybereason Nocturnus suit les opérations du groupe Evilnum, qui est actif depuis deux ans, à l’aide de divers outils.
Ciblage du secteur financier : le groupe est connu pour cibler les entreprises FinTech et abuse de l’utilisation de la procédure Know Your Customer (KYC) pour déclencher l’infection.
Nouvelles astuces : Dans cette recherche, nous constatons un écart par rapport à la chaîne d’infection, la persistance, l’infrastructure et les outils observés précédemment, notamment :
- Versions modifiées d’exécutables légitimes utilisées pour tenter de ne pas être détectées par les outils de sécurité.
- Transfert de la chaîne d’infection d’un cheval de Troie JavaScript avec des capacités de porte dérobée à une procédure de livraison multi-processus de la charge utile.
- Un RAT à script Python nouvellement découvert appelé PyVil RAT qui a été compilé avec py2exe, qui a la capacité de télécharger de nouveaux modules pour étendre les fonctionnalités.
Vue d’ensemble du groupe
Il a été rapporté que le groupe Evilnum cible les sociétés de technologie financière, principalement situées au Royaume-Uni et dans d’autres pays de l’UE. L’objectif principal du groupe est d’espionner ses cibles infectées et de voler des informations telles que des mots de passe, des documents, des cookies de navigateur, des informations d’identification de courrier électronique, etc.
Outre les outils propriétaires du groupe, Evilnum a été observé déployant des outils Golden Chickens dans certains cas, comme indiqué dans le passé. Golden Chickens est un fournisseur de Malware-as-a-Service (MaaS) qui est connu pour avoir été utilisé par des groupes tels que FIN6 et Cobalt Group. Parmi les outils utilisés par le groupe Evilnum figurent More_eggs, TerraPreter, TerraStealer et TerraTV.
L’activité du groupe Evilnum a été identifiée pour la première fois en 2018, lorsqu’ils ont utilisé la première version de leur tristement célèbre cheval de Troie JavaScript. Le script extrait les adresses C2 de sites tels que GitHub, DigitalPoint et Reddit en interrogeant des pages spécifiques créées à cet effet. Cette technique permet aux attaquants de changer facilement l’adresse C2 des agents déployés tout en gardant les communications masquées au fur et à mesure que les requêtes sont faites à des sites connus légitimes.
Depuis lors, le groupe a été mentionné à plusieurs reprises, dans différentes attaques, mettant à chaque fois à niveau son ensemble d’outils avec de nouvelles fonctionnalités ainsi que l’ajout de nouveaux outils à l’arsenal du groupe.
Le vecteur d’infection initial d’Evilnum commence généralement par des e-mails de spear phishing, dans le but de fournir des archives ZIP contenant des fichiers LNK se faisant passer pour des photos de différents documents tels que les permis de conduire, les cartes de crédit et les factures de services publics. Ces documents sont susceptibles d’être volés et appartiennent à de vraies personnes.
Une fois qu’un fichier LNK est ouvert, il déploie le cheval de Troie JavaScript, qui à son tour remplace le fichier LNK par un fichier image réel, rendant toute cette opération invisible pour l’utilisateur.
À ce jour, comme décrit dans cette publication, six itérations différentes du cheval de Troie JavaScript ont été observées dans la nature, chacune avec de petits changements qui n’altèrent pas les fonctionnalités de base. L’agent JavaScript a des fonctionnalités telles que télécharger et télécharger des fichiers, voler des cookies, collecter des informations antivirus, exécuter des commandes, etc.
En plus du composant JavaScript, comme décrit dans une recherche précédente, le groupe a été observé en train de déployer un cheval de Troie C#, qui possède des fonctionnalités similaires à l’ancien composant JavaScript.
Nouvelle chaîne d’infection
Dans le passé, la chaîne d’infection d’Evilnum commençait avec des e-mails de spear phishing, fournissant des archives zip contenant des fichiers LNK se faisant passer pour des images. Ces fichiers LNK supprimeront un cheval de Troie JavaScript avec différentes capacités de porte dérobée comme décrit ci-dessus.
Ces dernières semaines, nous avons observé un changement dans cette procédure d’infection: d’abord, au lieu de livrer quatre fichiers LNK différents dans une archive zip qui à son tour sera remplacée par un fichier JPG, un seul fichier est archivé. Ce fichier LNK se fait passer pour un PDF dont le contenu comprend plusieurs documents, tels que des factures de services publics, des photos de cartes de crédit et des photos de permis de conduire. Lorsque le fichier LNK est exécuté, comme dans les versions précédentes, un fichier JavaScript est écrit sur le disque et exécuté, remplaçant le fichier LNK par un PDF.
Contrairement aux versions précédentes qui possédaient un éventail de fonctionnalités, cette version du JavaScript agit principalement comme un compte-gouttes et ne dispose d’aucune capacité de communication C2. Ce JavaScript est la première étape de cette nouvelle chaîne d’infection, culminant avec la livraison de la charge utile, un RAT écrit en Python compilé avec py2exe que les chercheurs de Nocturnus ont surnommé PyVil RAT :
Cybereason est parvenu à visualiser l’arborescence des processus et l’extraction du JavaScript à partir du fichier LNK :
Le JavaScript est extrait en sortant toutes les lignes contenant la chaîne «END2» (commentée dans le script) dans un fichier nommé «0.js» dans le dossier temporaire et le LNK est copié dans le dossier temporaire sous la forme «1.lnk».
Le fichier JavaScript utilise un chemin similaire à celui des versions précédentes pour supprimer les binaires (“% localappdata% \\ Microsoft \\ Credentials \\ MediaPlayer \\”). Une fois que le script a remplacé le fichier LNK par le vrai PDF, le fichier JS est copié dans «% localappdata% \ Microsoft \ Credentials \ MediaPlayer \ VideoManager \ media.js» et est à nouveau exécuté.
Dans cette deuxième exécution du script, un fichier exécutable nommé «ddpp.exe» qui est intégré dans le fichier LNK est extrait et enregistré dans «% localappdata% \ Microsoft \ Credentials \ MediaPlayer \ ddpp.exe».
Contrairement aux versions précédentes où le logiciel malveillant utilisait la clé de registre Exécuter pour la persistance, dans cette nouvelle version, une tâche planifiée nommée «Dolby Selector Task» pour ddpp.exe est créée à la place.
Avec cette tâche planifiée, la deuxième étape de récupération de la charge utile commence :
Cybereason montre la tentative de vidage des informations d’identification par la charge utile :
L’exécutable ddpp.exe semble être une version de «Java (™) Web Start Launcher» modifiée pour exécuter du code malveillant. En comparant l’exécutable du malware avec l’exécutable Oracle d’origine, nous pouvons voir les métadonnées similaires entre les fichiers. La principale différence à première vue est que l’exécutable Oracle d’origine est signé, alors que le malware ne l’est pas.
Selon le moteur Intezer, il existe une énorme quantité de code partagé entre l’exécutable du malware et le fichier légitime d’Oracle Corporation.
Fonctionnalité ddpp.exe
L’exécutable ddpp.exe fonctionne comme un téléchargeur pour les prochaines étapes de l’infection. Il est exécuté par la tâche planifiée avec trois arguments :
- L’UUID codé de la machine infectée
- Une liste codée des produits antivirus installés
- Le chiffre 0
Lorsque ddpp.exe est exécuté, il décompresse le shellcode. Le shellocode se connecte au C2 à l’aide d’une requête GET, envoyant dans l’URI les trois paramètres reçus qui ont été décrits ci-dessus. À son tour, le logiciel malveillant reçoit en retour un autre exécutable chiffré, qui est enregistré sur le disque sous le nom «fplayer.exe» et est exécuté à l’aide d’une nouvelle tâche planifiée.
fplayer.exe
fplayer.exe fonctionne comme un autre téléchargeur. La charge utile téléchargée est ensuite chargée par fplayer.exe dans la mémoire et sert de RAT sans fichier. Le fichier est enregistré dans «% localappdata% \ microsoft \ media player \ player \ fplayer.exe» et est exécuté avec une tâche planifiée nommée «Adobe Update Task».
Fplayer.exe est également exécuté avec plusieurs arguments :
- L’UUID codé de la machine infectée
- Trois arguments qui seront utilisés par le PyVil RAT à un stade ultérieur :-m (nom de tâche planifiée) / -f (lancement d’analyse d’arguments de PyVil RAT) / -t (mise à jour de la tâche).
De la même manière que ddpp.exe, fplayer.exe semble être une version modifiée de «Stereoscopic 3D driver Installer». Ici aussi, nous pouvons voir les métadonnées similaires entre les fichiers, la différence étant que l’exécutable Nvidia d’origine est signé, alors que le malware ne l’est pas. Cette fois également, selon le moteur Intezer, il existe un pourcentage élevé de similitudes de code avec Nvidia Corporation.
Lorsque fplayer.exe est exécuté, il décompresse également le shellcode. Le shellcode se connecte au C2 en utilisant une requête GET, cette fois en envoyant dans l’URI le seul UUID encodé. fplayer.exe a reçu un autre exécutable chiffré, qui est enregistré sous «% localappdata% \ Microsoft \ Media Player \ Player \ devAHJE.tmp».
Le processus déchiffre l’exécutable reçu et le mappe à la mémoire, en lui passant l’exécution.
Le fichier déchiffré est un exécutable py2exe compilé. py2exe est une extension Python qui convertit les scripts Python en exécutables Microsoft Windows.
PyVil: un nouveau Python RAT.
Le code Python à l’intérieur de py2exe est obscurci par des couches supplémentaires, afin d’éviter la décompilation de la charge utile à l’aide des outils existants. À l’aide d’un vidage de la mémoire, nous avons pu extraire la première couche de code Python. Le premier morceau de code décode et décompresse la deuxième couche de code Python.
La deuxième couche de code Python décode et charge en mémoire le RAT principal et les bibliothèques importées.
Le PyVil RAT possède plusieurs fonctionnalités dont :
- Enregistreur de frappe
- Exécution des commandes cmd
- Prendre des captures d’écran
- Télécharger plus de scripts Python pour des fonctionnalités supplémentaires
- Déposer et télécharger des exécutables
- Ouverture d’un shell SSH
- Collecter des informations telles que les produits antivirus installés, les périphériques USB connectés, les version de Chrome.
Les variables globales de PyVil RAT donnent une compréhension claire des capacités du malware. PyVil RAT a un module de configuration qui contient la version du malware, les domaines C2 et les agents utilisateurs à utiliser lors de la communication avec le C2.
Les communications C2 de PyVil RAT sont effectuées via des requêtes HTTP POST et sont cryptées RC4 à l’aide d’une clé codée en dur encodée en base64. Ces données chiffrées contiennent un Json de différentes données collectées à partir de la machine et de la configuration.
Field |
Usage |
type |
Not clear |
xmode |
Not clear |
req_type |
Request type |
svc_ver |
Malware version in the configuration |
ext_ver |
A version of an executable the malware may download (-2 means the executables folder does not exist) |
ext_exists |
Checks for the existence of a particular executable |
svc_name |
Appears to be a name used to identify the malware by the C2. |
ext_uuid |
Encoded machine UUID |
svc_uuid |
machine UUID |
host |
Hostname |
uname |
User name |
ia |
Is user admin |
wv |
Windows version |
dt |
Current date and time |
avs |
List of installed anti-virus products |
gc |
Dictionary of different configuration |
sc_secs_min |
Minimum sleep time between sending screenshots |
sc_secs_max |
Maximum sleep time between sending screenshots |
kl_secs_min |
Minimum sleep time between sending keylogging data |
kl_secs_max |
Maximum sleep time between sending keylogging data |
kl_run |
Is keylogger activated |
klr |
Is keylogger activated |
tc |
Is USB connected |
cr |
Is chrome.exe is running |
ct |
Type of downloaded module to run: executable or Python module |
cn |
Module name corresponding to “ct” |
imp |
Execute the downloaded module (corresponds with “ct”) |
pwds |
Extracted passwords |
cooks |
Cookies information |
Lors de l’analyse de PyVil RAT, à plusieurs reprises, le malware a reçu du C2 un nouveau module Python à exécuter. Ce module Python est une version personnalisée du projet LaZagne que le groupe Evilnum a utilisé dans le passé. Le script essaiera de vider les mots de passe et de collecter des informations sur les cookies à envoyer au C2.
Expansion de l’infrastructure
Dans les campagnes précédentes du groupe, les outils d’Evilnum évitaient d’utiliser des domaines dans les communications avec le C2, en utilisant uniquement des adresses IP. Ces dernières semaines, nous avons rencontré une tendance intéressante avec l’infrastructure croissante d’Evilnum.
En suivant la nouvelle infrastructure d’Evilnum que le groupe a construite au cours des dernières semaines, une tendance à l’expansion peut être observée. Alors que l’adresse IP C2 change toutes les quelques semaines, la liste des domaines associés à cette adresse IP ne cesse de s’allonger. Il y a quelques semaines, trois domaines associés au malware ont été résolus vers la même adresse IP : 5.206.227[.]81.
Peu de temps après, l’adresse IP C2 des trois domaines a changé. De plus, trois nouveaux domaines ont été enregistrés avec la même adresse IP et ont été utilisés par le malware : 185.236.230[.]25.
Quelques semaines plus tard, ce changement s’est produit à nouveau. L’adresse de résolution de tous les domaines a changé en l’espace de quelques jours, avec l’ajout de trois nouveaux domaines : 193.56.28[.]201.
Les commentaires sont fermés.