On pourrait croire Visual Basic 6 définitivement rangé au musée. Pourtant, les équipes de threat intelligence continuent d'analyser, en 2025, des charges malveillantes compilées en VB6. Ce paradoxe — un langage vieux de plus de vingt-cinq ans employé dans des attaques actuelles — n'est pas un hasard : il repose sur des propriétés techniques précises que nous examinons ici, du point de vue de l'analyse défensive.

Cet article est purement informatif et destiné aux analystes et défenseurs. Il ne décrit aucune technique offensive exploitable.

Pourquoi VB6 séduit les auteurs de malware

Plusieurs caractéristiques, souvent citées par les chercheurs en sécurité, expliquent ce retour :

  • Le runtime est toujours présent. MSVBVM60.dll est livré avec Windows 10 et 11 ; une charge VB6 s'exécute donc sans dépendance à installer, sur un parc immense.
  • Une moindre visibilité des outils modernes. Beaucoup de solutions de détection sont réglées sur des frameworks récents ; le code natif VB6, plus rare, passe parfois davantage sous les radars.
  • Le « bruit » du runtime complique l'analyse. Un exécutable VB6 mêle le code de l'auteur à l'importante couche du moteur VB, ce qui noie la logique utile et ralentit la rétro-ingénierie.
  • Le code natif résiste au débogage. Compilé en instructions machine, avec des astuces anti-analyse, un binaire VB6 est réputé pénible à instrumenter dynamiquement.

Packers et technique RunPE

Une grande partie des échantillons VB6 malveillants ne sont pas des programmes « métier » mais des packers : leur rôle est de dissimuler puis de lancer une autre charge. La technique la plus documentée est le RunPE — l'industrie l'a aussi cataloguée sous les noms génériques VBInject ou VBCrypt. Le principe, décrit publiquement depuis plus d'une décennie : le programme se relance en tant que nouveau processus, puis réécrit la mémoire de ce processus avec le code réellement malveillant.

L'intérêt pour l'attaquant est que la routine de dépaquetage, écrite en VB6, peut varier à l'infini (simple XOR, chiffrement, décompression…) et loger ses gardes anti-analyse dans le P-Code du moteur, ce qui rend la signature générique difficile. Microsoft classe d'ailleurs ces objets sous une détection générique VirTool:Win32/VBInject, précisément parce qu'ils servent de véhicule à de très nombreuses familles.

Le P-Code comme couche d'obscurcissement

Le mode P-Code de VB6 — que nous décrivons dans notre article P-Code ou Code Natif — est un jeu d'opcodes propriétaire, dans un format complexe et peu outillé. Des chercheurs (notamment chez Gen Digital) soulignent que ce format constitue un terrain d'obscurcissement encore peu exploré : à ce jour, les manipulations au niveau P-Code restent rares dans la nature, mais leur complexité même pourrait les avoir laissées passer inaperçues. Pour l'analyste, c'est un rappel que le format binaire VB6 recèle encore des zones mal couvertes par l'outillage standard.

Une campagne actuelle : DarkCloud

L'exemple le plus parlant aujourd'hui est le voleur d'informations DarkCloud. Observé depuis 2022 et vendu par abonnement (à un tarif d'entrée dérisoire, de l'ordre de quelques dizaines de dollars, via Telegram), il a fait l'objet de plusieurs vagues en 2025. Les analyses publiques (Unit 42, Fortinet, Flashpoint) décrivent des chaînes d'infection en plusieurs étapes, amorcées par des emails de phishing avec archives, menant à des scripts intermédiaires puis à une charge finale écrite en Visual Basic 6.

Cette charge VB6 cumule les protections : plusieurs centaines de chaînes de caractères chiffrées, déchiffrées seulement à l'exécution, et un mécanisme anti-sandbox surveillant l'activité clavier/souris. L'objectif de DarkCloud est le vol de identifiants — navigateurs, clients mail, logiciels de transfert de fichiers, VPN — soit, potentiellement, les clés d'accès à tout un réseau d'entreprise.

Un phénomène qui n'est pas nouveau

Ce n'est pas la première résurgence. Dès 2014, Virus Bulletin documentait un regain d'intérêt pour VB6 et les documents à macros comme vecteur, en partie parce que le code, contrairement à un exploit, ne dépend pas d'une version précise du logiciel cible. La constante, d'hier à aujourd'hui : VB6 offre un excellent rapport simplicité/opacité.

Ce que cela implique pour l'analyse

Comprendre un binaire VB6 malveillant suppose de savoir le lire — identifier les composants COM/OLE/ActiveX référencés, inspecter l'interface, et décompiler la logique quand c'est possible. Ce sont exactement les capacités qu'un outil comme VBReFormer apporte aux analystes et aux équipes de réponse à incident : là où le format VB6 ralentit les outils génériques, un décompilateur spécialisé fait gagner un temps précieux. La même technologie qui aide une entreprise à récupérer son code source perdu sert aussi à disséquer un échantillon suspect.

La rétro-ingénierie de logiciels malveillants doit s'exercer dans un cadre légal et maîtrisé (environnement isolé, autorisation, finalité défensive).

Sources