NetWalker - Analyse d'une nouvelle version du dropper

NicolasLe 24 septembre 2020

Introduction

Les ransomware sont des programmes informatiques malveillants qui rendent illisibles les fichiers d'un ordinateur, et qui proposent au propriétaire de la machine de les récupérer en échange du paiement d'une rançon. On dit que les fichiers sont chiffrés, et l'outil de déchiffrement peut être obtenu contre le paiement d'une somme dans une monnaie virtuelle telle que le Bitcoin.

Récemment, on observe une forme évoluée de ransomware. L'attaquant demande une rançon non pas uniquement pour rendre au propriétaire l'accès à ses fichiers, mais également pour ne pas diffuser les fichiers publiquement. Cette forme d'attaque touche principalement les sociétés, plus à-même de posséder des fichiers sensibles tels que des documents de propriété intellectuelle, des projets R&D ou des documents financiers. On parle alors d'extorsionware.

NetWalker (anciennement connu sous le nom de MailTo) est un ransomware en expansion depuis l'apparition du COVID-19 qui a fait plus d'une dizaine de victimes parmi les entreprises françaises. Cet article présente une analyse de l'exécution de cette souche un peu particulière, récupérée septembre 2020 durant une mission de réponse à incident et forensic chez l'un de nos clients.

Désobfuscation du dropper

Le dropper est le programme qui se charge de déposer le programme malveillant sur une machine. Dans le cadre du ransomware NetWalker, il prend la forme d'une commande PowerShell qui exécute le contenu d'une chaîne de caractères encodée en base64 :

Dropper PowerShell NetWalker

Le code ci-dessous n'est autre que la chaîne décodée en version simplifiée :

Dropper PowerShell NetWalker décodé

Nous pouvons observer l'application d'un XOR sur un ensemble d'octets contenus dans un tableau. Ce dernier est converti en une chaîne de caractères ASCII qui est exécutée par une seconde commande PowerShell se révélant être un script de plusieurs centaines de lignes.

Il est obfusqué afin de compliquer l'analyse de son comportement. La prochaine étape est donc de rendre son code plus lisible, en renommant les variables avec des noms plus évocateurs.

La principale méthode d'obfuscation repose sur l'application d'un XOR effectuée sur l'ensemble des chaînes de caractères qui seront ensuite encodées en base64. Nous utilisons la fonction xor_base64_string afin de retrouver le clair de chacune de ces chaînes.

Fonction XOR décodage NetWalker

Il nous a ainsi été possible de comprendre les actions effectuées par le dropper. Celui-ci instancie un objet permettant l'appel de fonctions propres à l'API Windows.

NetWalker appels API Windows

Ces fonctions sont particulièrement utiles pour réaliser une injection dans un processus et sont couramment utilisée dans le code des malwares.

NetWalker injection processus

Le contenu à injecter est facilement identifiable puisque deux tableaux d'octets de grande taille sont présents au sein du code. En fonction de l'architecture de la machine victime, l'un des deux tableaux se verra appliquer un XOR sur l'ensemble de ses octets :

NetWalker code différent selon architecture

Nous avons ainsi pu récupérer les deux DLL en implémentant cette opération par le biais d'un simple script Python :

Liste des DLL de NetWalker

Nous pouvons par la suite observer l'appel des fonctions de l'API Windows afin d'injecter dans la mémoire du processus courant powershell.exe le contenu de la DLL malicieuse qui sera ensuite exécuté par le programme. Cette technique porte le nom de Reflective DLL Injection.

Injection dans le processus powershell.exe

Le script se termine par la suppression des shadow copy de Windows afin d'empêcher les victimes de pouvoir récupérer des sauvegardes de fichiers.

Suppression des shadow copy

Extraction de la configuration

La configuration du ransomware NetWalker se trouve au sein de la section .rscs des DLLs à notre disposition. Elle est chiffrée en RC4 et les informations utiles à son déchiffrement sont codées en dur dans la ressource. Les quatre premiers octets indiquent la taille de la clé se trouvant à la suite.

Remarque : le fait que la configuration soit inclue directement au sein de la DLL rend moins triviale la comparaison de deux souches. En effet, calculer la somme de hachage de la DLL entière n'est pas pertinent, il faut à la place calculer la somme de hachage uniquement sur les parties de la DLL contenant du code.

L'outil Ressource Hacker a été utilisé dans le but de l'extraire :

DLL dans Ressource Hacker

Le script Python ci-dessous nous permet de déchiffrer la configuration :

Déchiffrement de la configuration de NetWalker

Le fichier en clair est au format JSON et contient les paramètres utilisés par le ransomware.

Nous y trouvons certaines informations intéressantes telles que :

  • la clé publique utilisée,
  • le nombre de processus alloués pour le chiffrement,
  • les adresses en .onion pour communiquer avec les malfaiteurs afin de négocier les prix, tenter de déchiffrer trois fichiers gratuitement, ou attendre que ses données volées y soit fuités,
  • le template du nom de fichier de la notice,
  • le contenu de cette notice encodée en base64,
  • une liste des partages à cibler,
  • une liste des répertoires, fichiers, et extensions à ignorer durant le processus de chiffrement,
  • une liste des processus et services à stopper,
  • une liste de répertoire et processus à ignorer durant le déchiffrement des fichiers.

D'une manière générale, les configurations étudiées varient en fonction de la cible à infecter.

Exécution du ransomware

Les différents souches du dropper de NetWalker disponibles sur Internet se résument à une injection de la DLL malicieuse dans le processus explorer.exe, un comportement qui peut être décrit gâce au schéma suivant, montrant les étapes d'exécution allant du lancement du script PowerShell au chiffrement des fichiers :

Graphe d'exécution de NetWalker

Contrairement à ces souches publiques, celle que nous avons étudiée injecte la DLL non pas dans le processus explorer.exe, mais dans le processus powershell.exe appelé pour exécuter le script, signe que les auteurs l'ont fait évoluer.

Nous avons cherché à comparer le comportement de ces souches en les exécutant au sein d'une sandbox. Ci-dessous, à gauche la souche reconnue comme étant celle du ransomware NetWalker, à droite la souche étudiée durant notre mission de réponse à incident :

Anyrun de NetWalker

Les actions qui suivent l'injection sont totalement similaires. Nous supposons donc que la DLL n'a pas été modifiée, et que les études existantes portant sur le reverse engineering de cette dernière sont suffisantes pour comprendre son impact. Nous recommandons à ce sujet la très bonne étude de McAfee sur ce malware.

Après l'exécution de NetWalker au sein d'une machine virtuelle, la seule trace que nous avons pu observer, outre les fichiers chiffrés et les notes déposées, se résume à une clé de registre dans la ruche HKCU\SOFTWARE\{id victime sur 8 caractères} :

Clé de registre laissée par NetWalker

Ci-dessous les principaux indicateurs de comportements suspicieux effectués par le ransomware :

Comportements suspects

Ainsi que sa matrice MITRE ATT&CK :

MITRE ATT&CK

Enfin, un schéma résumant les différentes étapes de compromission de notre client. L'accès initial a été réalisée en exploitant une vulnérabilité dans un équipement VPN SSL non mis à jour, après quoi les attaquants ont configuré, déposé et exécuté le ransomware :

Étapes d'exécution du malware

L'exfiltration des données n'est pas réalisée par le biais de la DLL malicieuse, mais a été effectuée manuellement par les attaquants. Les données chiffrées sont généralement récupérées au travers de plateformes de stockage en ligne puis, si l'entreprise ne paye pas la rançon, seront diffusées sur un site hébergé sur le darknet :

Blog de NetWalker sur le darknet

Comment se protéger ?

Notre client impacté par ce ransomware possédait des sauvegardes de ses systèmes compromis, et les données ayant fuité ne revêtaient pas un niveau de confidentialité élevé. L'impact sur l'image et la continuité d'activité de la société fut donc réduit. Notre client a choisi de ne pas payer la rançon, mais de faire appel à AlgoSecure afin de comprendre le fonctionnement du malware et mettre en place les défenses nécessaires pour éviter que incident ne se reproduise.

En effet, bien que cet incident n'ait pas été critique pour la société, il n'en reste pas moins qu'il a généré du stress au sein des équipes informatiques et dirigeantes, beaucoup de temps et d'énergie dépensée dans l'analyse de la situation, la communication aux clients et aux autorités, le comblement des vulnérabilités ayant mené à l'accès initial, et la restauration des sauvegardes.

Pour éviter ce genre d'incident, AlgoSecure recommande l'application des mesures de protections de base :

  • Restreindre la liste des équipements exposés sur Internet ; idéalement, aucun équipement ou service ne devrait être exposé, ils devraient être placés derrière un VPN.
  • Mettre à jour les équipements informatiques systématiquement et rapidement, en particulier ceux exposés sur Internet tel que les pare-feu et passerelles VPN.
  • S'assurer d'avoir un antivirus correctement configuré sur les postes et serveurs (mot de passe solide pour l'accès à la configuration et à la quarantaine).
  • Mettre en place une politique de mot de passe solide, dans l'idéal couplée avec une authentification double-facteur.
  • Effectuer une sauvegarde régulière et sécurisée des données et systèmes les plus critiques.
  • Développer une culture sécurité dans l'entreprise, et sensibiliser régulièrment les utilisateurs à la sécurité informatique.

Plus détails sur notre page d'aide contre les ransomware, ou en nous contactant.

Contactez-nous !

Vous souhaitez réaliser une investigation numérique suite à une attaque, anticiper une future attaque en réalisant des audits de sécurité informatique, ou encore sensibiliser vos utilisateurs à la sécurité informatique ? AlgoSecure est à votre écoute pour comprendre votre besoin et vous accompagner. Keep it Safe and Secure !

Vous avez activé l'option "Do Not Track" dans votre navigateur, nous respectons ce choix et ne suivons pas votre visite.