Comment rendre un malware moins détectable ? En changeant de langage de programmation. BlackBerry, en tout cas, l’affirme, recherche à l’appui. La tendance dominante, explique-t-il, ne consiste pas tant à réécrire les malwares que les modules qui les chargent en mémoire (loaders) ou les exécutent (droppers).
Qu’on réécrive l’un ou l’autre composant, le phénomène n’a rien de nouveau, reconnaît le groupe canadien. Et de mentionner la « vieille garde » qu’on avait vue émerger au début des années 2000. Ses représentants : VB6 et Delphi, que les cybercriminels utilisaient en alternative aux langages les plus communs. En particulier de par leur forte résistance à la rétroingénierie – notamment pour Visual Basic.
BlackBerry a concentré son analyse sur quatre des langages qui ont pris le relais : D, Go, Nim et Rust. Tous présentent l’avantage de pouvoir être compilés sur un large éventail de systèmes et d’architectures. Ils apportent par ailleurs des garanties de sécurité… importantes pour les développeurs de malwares. On se rappellera, en guise d’exemple, d’une version d’Emotet mise hors d’état de nuire après la découverte d’une vulnérabilité (dépassement de tampon) dans la routine d’installation du binaire principal.
Des quatre langages étudiés, D est celui qui présente le moins de cas documentés d’utilisation malveillante. On considère que Vovalex est la première famille de ransomwares à en avoir fait usage. Détectée début 2021, elle se propage par l’intermédiaire de versions vérolées d’applications populaires, dont CCleaner.
On trouve aussi du langage D dans un loader récemment exploité en association avec le trojan RemcosRAT. Ainsi que du côté des éditeurs de solutions de sécurité. Tout du moins chez FireEye, avec la backdoor DShell, qui a fuité fin 2020 avec d’autres outils de la Red Team de l’entreprise américaine.
Qu’en est-il de Nim ? Il est notamment à la base d’une variante – découverte début 2021 – de la backdoor BazarLoader. Ainsi que d’un membre de la famille Zebrocy, dont on prête l’usage au groupe APT28*. Lequel s’est distingué en piratant le Parti démocrate américain avant les présidentielles 2016.
Dans la famille Nim, on trouve aussi des ransomwares, dont DeroHE, découvert en début d’année. Et divers loaders pour Cobalt Strike.
Rust est né dans les mêmes années que D et Nim, mais bénéficie d’une plus grande popularité. Et du soutien de grands noms, après s’être développé sous l’égide de la fondation Mozilla. Il a servi autant à réécrire des malwares (comme le loader Buer, à l’origine codé en C, ou la backdoor TeleBots, utilisée contre le réseau électrique ukrainien) que des droppers (par exemple, pour le RAT NanoCore).
En complément à ces différents langages se sont développées des méthodes de masquage. Pour Nim, il y a par exemple denim ; pour Rust, obfstr. Avec Go, il y a Gobfuscate. Entre autres, elle hache les noms de variables et dissimule des chaînes en les remplaçant par des fonctions. Des variantes du ransomware EKANS et du RAT ChaChi – exploité par les opérateurs de Mespinoza – en font usage.
Il existe des plug-in spécifiques pour détecter Gobfuscate, mais uniquement dans certains outils d’analyse, comme Cutter et Binary Ninja.
* La première version de Zebrocy était essentiellement codée en Delphi. Des réécritures en Nim et en Go ont émergé depuis.
Illustration principale © James Thew – Adobe Stock
Pour développer une version 7B de son modèle Codestral, Mistral AI n'a pas utilisé de…
L’Autorité de la concurrence et des marchés (CMA) britannique ouvre une enquête sur les conditions…
Thomas Gourand est nommé Directeur Général pour la France. Il est chargé du développement de…
Pour dissuader le CISPE d'un accord avec Microsoft, Google aurait mis près de 500 M€…
Pour réduire la taille des mises à jour de Windows, Microsoft va mettre en place…
De l'organisation administrative à la construction budgétaire, la Cour des comptes pointe le fonctionnement complexe…