Comprendre le VBA Stomping et le VBA Purging : pourquoi une décompilation haute fidélité est essentielle

Le VBA Stomping et le VBA Purging sont des techniques d’obfuscation avancées utilisées par les attaquants pour contourner les mécanismes de détection dans les documents Microsoft Office. Ces techniques exploitent la manière dont les macros sont stockées et exécutées, ce qui pose de sérieux défis aux outils d’analyse statique traditionnels.
Malva.RE, basé sur la technologie vbaDNA, propose un processus de décompilation haute fidélité indispensable pour détecter ces méthodes d’évasion. Explorons en détail le fonctionnement du VBA Stomping et du VBA Purging, et expliquons pourquoi leur détection exige des capacités avancées.
Macros VBA : code source vs P-Code
Dans un document Office, une macro est stockée sous deux formes :
- Code source VBA : code lisible par l’humain, écrit par le développeur, compressé et stocké dans le document.

- P-Code (PerformanceCache) : version compilée et tokenisée de la macro, exécutée par Microsoft Office. Le P-Code est stocké séparément du code source VBA et permet une exécution plus rapide sans recompilation systématique.


VBA Stomping : manipulation du code source pour contourner la détection
Le VBA Stomping est une technique d’évasion consistant à supprimer ou modifier le code source VBA tout en conservant le P-Code intact. La macro reste fonctionnelle, mais les outils d’analyse statique qui s’appuient uniquement sur le code source deviennent inefficaces.

Suppression ou corruption du code source VBA
Les attaquants remplacent le code source par du contenu anodin, des données aléatoires ou le suppriment complètement. Lorsqu’un analyste ouvre l’éditeur VBA, le code semble inoffensif ou inexistant.Conservation du P-Code malveillant
Le P-Code, version compilée de la macro, reste intact et continue de s’exécuter à l’ouverture du document.Exécution via le P-Code
Microsoft Office privilégie l’exécution du P-Code lorsqu’il est présent. L’absence ou la modification du code source n’empêche donc pas l’exécution de la charge malveillante, créant un angle mort pour de nombreux outils de sécurité.
VBA Purging : suppression du P-Code pour exploiter le mécanisme de repli d’Office
Le VBA Purging consiste à supprimer entièrement le P-Code du document, en ne laissant que le code source VBA compressé. Cette technique exploite le mécanisme de repli de Microsoft Office : lorsque le P-Code est absent, Office le régénère dynamiquement à partir du code source au moment de l’exécution.

Suppression du P-Code
Les attaquants modifient la structure interne du document (notamment le MODULEOFFSET) afin d’éliminer le P-Code.Code source compressé
Le code VBA restant est stocké sous forme compressée, ce qui complique l’analyse. Les outils reposant sur l’inspection du P-Code échouent, car celui-ci n’existe plus.Recompilation à l’exécution
À l’ouverture du document, Office décompresse le code source et le recompile en P-Code avant exécution. La macro malveillante fonctionne normalement, tout en échappant à l’analyse préalable.
Pourquoi une décompilation haute fidélité est indispensable
La détection fiable du VBA Stomping et du VBA Purging nécessite bien plus qu’une simple analyse du code source. Un décompilateur haute fidélité comme vbaDNA, intégré à Malva.RE, est indispensable.
Détection du VBA Stomping
Décompilation complète du P-Code
vbaDNA reconstruit intégralement le P-Code en code VBA lisible, révélant la logique réelle de la macro.Comparaison extrêmement fine
vbaDNA compare le P-Code et le code source VBA à un niveau très granulaire. Contrairement aux outils basiques, il détecte la moindre divergence, y compris des différences insignifiantes comme des espaces ou des retours à la ligne.Analyse à l’octet près
L’analyse ne se limite pas aux symboles ou aux noms de fonctions. La structure complète de la macro est examinée jusqu’au niveau binaire, ce qui permet de détecter toute manipulation.
Détection du VBA Purging
Analyse du code source compressé
Lorsque le P-Code est absent, Malva.RE se concentre sur le code source VBA compressé. vbaDNA est capable de le décompresser et de l’analyser intégralement.Détection avant exécution
Même si le P-Code est recréé dynamiquement par Office, Malva.RE expose la logique malveillante avant toute exécution.Interprétation de l’absence de P-Code
Là où certains outils considèrent l’absence de P-Code comme bénigne, Malva.RE l’analyse dans son contexte et identifie les schémas caractéristiques du VBA Purging.
Le workflow Malva.RE : pourquoi il excelle face au VBA Stomping et Purging
Malva.RE se distingue par une chaîne d’analyse complète :
- Décompilation vbaDNA
- Détection automatique des incohérences
- Désobfuscation avec vbSparkle
- Rapports détaillés et exploitables
Conclusion : la haute fidélité est indispensable
La détection du VBA Stomping et du VBA Purging exige une décompilation précise et une analyse approfondie. Grâce à vbaDNA, Malva.RE analyse à la fois le P-Code et le code source VBA avec une précision extrême.
Toute incohérence — logique, structurelle ou même cosmétique — est détectée, garantissant qu’aucune macro malveillante ne passe inaperçue.
Avec Malva.RE, vous disposez d’une défense robuste face à ces techniques d’obfuscation avancées, bien avant qu’elles ne puissent causer des dommages.