Cas Babuk : la conceptualisation de code au service de la détection des variants

L’objectif de l’attaquant est bien connu, il est de développer un malware qui arrivera à passer les solutions de détection tout en utilisant le moins de ressources possible pour obtenir le meilleur ROI (Hé oui les attaquants pensent aussi ROI, dans la plupart des cas il s’agit d’une soustraction très simple : montant de la rançon ou de la revente de données – ressources dépensées pour développer l’attaque).

Pour cet article, nous avons réalisé du reverse comportemental afin de se mettre à la place de l’attaquant qui développe son logiciel malveillant. Ainsi vous allez découvrir par l’exemple qui va suivre, la facilité avec laquelle les attaquants créent de nouvelles versions – de nouveaux variants – de malwares qui resteront indétectés pendant plusieurs semaines par les moyens de détection traditionnels.

Nous avons pris l’exemple de Babuk, un ransomware dont le code source et les clés de déchiffrement ont été publiées en septembre 2021, après une attaque contre le MPD (Metropolitan Police Department) de Washington DC et une scission du Cybergang responsable de cette attaque.

La diffusion du code au grand public constitue une menace importante pour les entreprises et les administrations, car de nombreux variants de ce ransomware peuvent être créés par des groupes d’attaquants à partir du code source. Cependant, nous allons en profiter pour vous montrer comment une technologie comme la conceptualisation de code, peut aujourd’hui vous permettre de vous prémunir face à ce type d’attaques.

  1. A propos de Babuk

Les premières traces du ransomware Babuk, Babyk ou “Vasa Locker” remontent au 2 janvier 2021. Babuk fonctionne sur le modèle de Ransomware as a Service -RaaS- et est connu comme un ransomware assez classique mais disposant d’une méthode de chiffrement complexe. Les moyens de diffusion les plus connus de Babuk sont les campagnes de phishing et l’exploitation de CVEs (vulnérabilités logicielles connues). Le groupe aurait réussi de nombreuses attaques au cours de l’année 2021. Selon le statut de la menace ransomware de juillet 2021 publié par SEKOIA.IO, (https://www.sekoia.io/fr/etat-de-la-menace-ransomware-de-juillet-2021/) le groupe a mené 39 attaques entre janvier et juin 2021. 3 entités notables peuvent être mentionnées par exemple :

  • Washington DC Metropolitan Police Department
  • Houston Rockets
  • Serco

A partir d’avril 2021, Babuk a subi plusieurs restructurations, faisant d’abord évoluer ses méthodes d’extorsion, vers l’exfiltration de données pour les revendre à des concurrents des victimes ou sur des marchés clandestins. En mai 2021, le groupe s’est rebaptisé payload.bin et est devenu une plateforme de support pour Ransomware as a Service. Enfin, à la fin du mois de juin 2021, le code source de Babuk a été publié, entraînant la création d’un nouveau variant personnalisée de Babuk, BabukLocker.

Fonctionnement du malware

Babuk est un ransomware qui chiffre les fichiers présents sur le système de manière assez large. Préalablement, le malware effectue les actions suivantes :

  • Arrêt d’une liste de services

“vss”, “sql”, “svc$”, “memtas”, “mepocs”, “sophos”, “veeam”, “backup”, “GxVss”, “GxBlr”, “GxFWD”, “GxCVD”, “GxCIMgr”, “DefWatch”, “ccEvtMgr”, “ccSetMgr”, “SavRoam”, “RTVscan”, “QBFCService”, “QBIDPService”, “Intuit.QuickBooks.FCS”, “QBCFMonitorService”, “YooBackup”, “YooIT”, “zhudongfangyu”, “sophos”, “stc_raw_agent”, “VSNAPVSS”, “VeeamTransportSvc”, “VeeamDeploymentService”, “VeeamNFSSvc”, “veeam”, “PDVFSService”, “BackupExecVSSProvider”, “BackupExecAgentAccelerator”, “BackupExecAgentBrowser”, “BackupExecDiveciMediaService”, “BackupExecJobEngine”, “BackupExecManagementService”, “BackupExecRPCService”, “AcrSch2Svc”, “AcronisAgent”, “CASAD2DWebSvc”, “CAARCUpdateSvc »

 

  • Arrêt d’une liste de process (backups, anti-malware…) :

L”sql.exe”, L”oracle.exe”, L”ocssd.exe”, L”dbsnmp.exe”, L”synctime.exe”, L”agntsvc.exe”, L”isqlplussvc.exe”, L”xfssvccon.exe”, L”mydesktopservice.exe”, L”ocautoupds.exe”, L”encsvc.exe”, L”firefox.exe”, L”tbirdconfig.exe”, L”mydesktopqos.exe”, L”ocomm.exe”, L”dbeng50.exe”, L”sqbcoreservice.exe”, L”excel.exe”, L”infopath.exe”, L”msaccess.exe”, L”mspub.exe”, L”onenote.exe”, L”outlook.exe”, L”powerpnt.exe”, L”steam.exe”, L”thebat.exe”, L”thunderbird.exe”, L”visio.exe”, L”winword.exe”, L”wordpad.exe”, L”notepad.exe”

 

  • Suppression des shadow copies :“cmd.exe /c vssadmin.exe delete shadows /all /quiet”
  • Nettoyage des corbeilles
  • Calcul des ressources allouées au chiffrement : Babuk ne va pas utiliser toute la puissance CPU disponible, de manière à rester plus furtif.

Le chiffrement se fait ensuite de manière assez large, sur les systèmes de fichiers et les lecteurs réseaux. Pour ce faire un algorithme HC-128 est utilisé, sur la base de courbes elliptiques de type Curve25519.

Processus de création

Une fois le malware de base compilé, un programme de spécialisation (appelé builder) est utilisé pour personnaliser l’instance de malware pour la cible. Il s’agit d’aller mettre les données spécifiques à l’attaque : note de rançon, clé de chiffrement…

Pour la suite, nous ne nous sommes pas intéressés au builder qui change finalement peu de choses dans le malware final du point de vue du code.

Les éléments marquants

En parcourant le code, les éléments marquants suivant sautent aux yeux :

  • Des chaînes de caractères types : extension en-.babyk des fichiers chiffrés, le mutex « DOYOUWANTTOHAVESEXWITHCHUONGDONG »,
  • Les listes des noms de process et services arrêtés,
  • La commande de suppression des shadow copies,
  • Les imports sont assez caractéristiques, notamment la fonction de nettoyage des corbeilles,
  • La fonction de chiffrement est également assez typique.

En détection, pour un babuk compilé directement à partir de sources sans modification, nous constatons que ce malware est bien détecté par les différentes sondes de détection, qui s’agisse de notre de conceptualisation ou de techniques plus « classiques ».

La technologie de conceptualisation identifie ainsi 71% de code malveillant en commun avec les échantillons de babuk classiques, qu’elle connaît déjà.

La matrice Mitre Att&ack est cohérente avec ce que nous avons vu dans les sources :

On retrouve également les imports identifiés au niveau des sources :

Création d’un premier variant. Objectif : contourner l’attribution

Afin de créer un exemple de nouveau variant, nous allons faire comme le ferait un attaquant. Nous allons effectuer des modifications sur les éléments qui semblent les plus marquants.

Nous avons changé les extensions de fichiers en-.babyk ainsi que le nom du mutex.

Pour les chaînes ayant une utilité fonctionnelle, nous avons également ajouté une petite routine d’obfuscation/desobfuscation afin qu’elles n’apparaissent pas telles quelles dans le malware/

Une fois ces premières modifications effectuées, notre variant reste détecté comme une menace. Il est néanmoins intéressant de noter qu’il n’est désormais plus détecté comme du Babuk, mais comme un cheval de Troie générique.

En particulier, il est détecté par clamav, comme un malware de type “Win.Ransomware.Packer-7473772-1”. C’est intéressant : on retrouve ainsi un lien avec un post de blog de Talos : https://blog.talosintelligence.com/2021/11/threat-source-newsletter-nov-4-2021.html qui a identifié des variants de babuks utilisés pour exploiter des failles dans les serveurs exchange qui venaient d’être publiées.

On voit que les attaquants ayant développé ces variants ont adopté une approche similaire à la nôtre, menant donc à des détections similaires.

“Cisco Talos recently discovered a malicious campaign deploying variants of the Babuk ransomware predominantly affecting users in the U.S. with a smaller number of infections in the U.K., Germany, Ukraine, Finland, Brazil, Honduras and Thailand. The actor of the campaign is sometimes referred to as Tortilla, based on the payload file names used in the campaign. This is a new actor operating since July 2021”.

 

Création d’un second variant. Objectif : devenir indétectable

Nous allons aller un peu plus loin et générer un second variant, en modifiant notamment les tables d’import et la fonction de chiffrement.

Pour les imports, nous avons décidé de charger quelques fonctions en dynamique et non plus en statique, de manière à modifier les séquences d’import.

Pour la fonction de chiffrement, nous avons simplement inséré du code mort.

Ces changements, s’ils vont légèrement au-delà des changements précédents, puisqu’on a ajouté un peu de code pour réaliser de l’import de bibliothèque dynamique, ainsi que du code inutile dans les fonctions de chiffrement, restent néanmoins très mineurs et rapides à réaliser.

Comment ce variant est-il détecté ?

Cette fois ci, notre variant est uniquement détecté par notre brique de conceptualisation.

 

Changement de fonctionnalités

Cette fois, nous créons un variant avec des fonctionnalités un peu différentes : nous supprimons la fonctionnalité d’arrêt de certains services. On peut observer sur les matrices MITRE ATT&CK ces différences de fonctionnalité :

Babuk Standard

Nouveau variant sans la fonctionnalité « stop services »

On voit que la détection par la conceptualisation reste efficace :

En conclusion, retenons que la diffusion du code source de Babuk est une très mauvaise nouvelle pour les entreprises dotées de systèmes de détection classiques par signature : il devient à présent très facile de générer une multitude de variants de cette menace qui pourraient passer inaperçu. Heureusement, la conceptualisation de code, qui permet de détecter de la « propriété intellectuelle » de code informatique, est beaucoup plus difficile à mettre en défaut car il faudrait littéralement réécrire le virus pour ne plus être détecté.

Notons toutefois que si la diffusion des sources rend cette opération accessible à tout un chacun… les attaquants auteurs de Babul, eux, ont toujours disposé de ces sources et n’ont jamais eu de vraies difficultés à éviter les mécanismes de détection par signature. Cela doit nous rappeler que ce n’est pas parce que l’actualité des fuites d’information met les projecteurs sur tel ou tel acteur que, pendant ce temps-là, les autres font également évoluer leurs outils dans la discrétion et que seule une vraie recherche de propriété intellectuelle permet de garantir une bonne détection !

Sources :

 

ESSAI GRATUIT