Les malwares Microsoft Office : VBA toujours là !

Protection des donnéesSpamFaille de sécuritéMenaces de sécuritéMicrosoft

Les malwares Microsoft Office : VBA toujours là !

En septembre 2014, nous avions écrit à propos de la résurgence des malwares VBA.malwares

VBA signifie Visual Basic for Applications : Il s’agit d’un outil de programmation puissant, et assez largement utilisé au sein d’applications telles que Microsoft Office.

Il est devenu un langage commun, utilisé de manière très fréquente, lui donnant ainsi une certaine forme de légitimité.

Cependant, nous écrivions à l’époque :

Le code Visual Basic est facile à écrire, flexible et facile à manipuler. Des fonctions identiques peuvent être codées de plusieurs manières différentes, ce qui permet ainsi plus d’options aux créateurs de malwares, qu’avec des exploits, pour produire des versions distinctes et opérationnelles de leurs logiciels.

En résumé, ce qui marche dans un sens, marche aussi dans l’autre !

En effet, au cours des 6 derniers mois, les malwares de type VBA, dissimulés de manière innocente au sein de documents, sont devenus très répandus dans le paysage des menaces informatiques, et représentent ainsi une arme essentielle dans les campagnes de spams.

Compatibilité rétroactive

Evidemment, les hackers qui utilisent des malwares VBA partent du principe que leurs victimes disposent, bien entendu, d’une version d’Office installée au préalable.

Comme vous pouvez le voir, les statistiques de SophosLabs montrent les créateurs de malwares préfèrent les logiciels Word et Excel à PowerPoint.

Les raisons à cette tendance sont simples : les malwares envoyés sous forme de spams, prétendent souvent être des accusés de réception, ou encore des factures. Ces derniers sont typiquement stockés, en général, dans des documents Word ou Excel.

malwares

Les pirates préfèrent aussi les anciens formats tels que “1997-2003” !

Les fichiers au format “1997-2003” sont stockés dans ce que Microsoft appelle : Object Linking and Embedding (OLE) Compound File format, souvent appelé de façon raccourcie : OLE2.

L’OLE2 utilise une structure de type FAT, pour définir les différentes séquences (que vous pouvez imaginer comme des fichiers stockés sur une image disque).

Les autres malwares VBA que nous voyons, sont dans les formats plus récents tels que “2007”, et plus récents encore.

Ces fichiers sont désignés avec un “-X”, qui se rajoute à l’extension du fichier (par exemple, DOCX à la place de DOC, XLSX à la place de XLS).

Les fichiers “-X” sont stockés dans un fichier spécifique, connu sous le nom de Office Open XML (OOXML).

Ce type de fichier se trouve sous la forme d’une archive ZIP, contenant une série de fichiers XML, qui définissent ensemble le contenu et la présentation des documents.

Nous pouvons essayer de deviner pourquoi les créateurs de tels malwares, ont été si réticents à se mettre au format 2007. Une explication probable est le risque de voir chuter fortement les contaminations.

Les nouvelles versions d’Office peuvent ouvrir les nouveaux et les anciens fichiers, grâce à la comptabilité rétroactive. Cependant les anciennes versions d’Office, n’ont jamais été patchées pour leur permettre de gérer les nouveaux formats.

Office XML

Il est intéressant de noter qu’il existe un autre format, peu utilisé, qui avait été introduit dans Office 2003 à l’époque.

Les fichiers avec ce type de  format consistent en un fichier XLM isolé. ils sont tellement rares, qu’ils n’apparaissent même pas dans les statistiques ci-dessus.

A notre grande surprise, cependant, nous avons observé une récente recrudescence d’un nouveau type de malwares VBA, utilisant justement cet ancien format, plutôt inhabituel.

Encore une fois, nous pouvons essayer de deviner pourquoi des hackers ont décidé de ressusciter ce type de format. A priori, le fait qu’il soit peu utilisé, et par conséquent peu associé à d’éventuelles attaques, semble être une raison valable.

Enfin, il se peut que les créateurs de tels malwares espèrent que la rareté des fichiers XML, ne permette pas à des logiciels de sécurité informatique de les neutraliser de manière efficace.

[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]

Les produits Sophos peuvent décomposer les fichiers de type OLE2, XML et OOXML, et extraire leurs contenus de manière identique. En d’autres mots, le même malware, sauvegardé dans 3 formats différents, sera finalement détecté de la même manière.

[/vc_message][/vc_column][/vc_row]

Ouverture du contenant

Le processus d’extraction d’un programme VBA, depuis un fichier Office dépend du format du contenant qui est utilisé.

Concernant les fichiers de type “1997-2003”, le code VBA est stocké dans plusieurs séquences, associées au sein du même contenant OLE2, comme les autres séquences des documents, telles que les séquences des fichiers WORD, qui contiennent les textes de ces derniers.

malwares

Les fichiers Office 2007 stockent également leurs codes VBA sous la forme de séquences dans un fichier OLE2, mais l’autre partie des données relatives au document est, quant à elle, stockée séparément dans un fichier XML, qui est rattaché au contenant principal : une archive ZIP.

Ainsi, le contenant de l’OLE2, qui renferme le code VBA, est simplement un fichier appelé vbaProject.bin, parmi les fichiers XML dans l’archive ZIP externe.

malwares

Le format XML, sous Office 2003, utilise également un contenant OLE2 dédié, pour stocker les codes VBA, avec la différence structurelle suivante : les données sont compressées à l’aide du format MSO (un format appartenant à Microsoft, et aussi utilisé pour les pièces jointes), et ensuite cryptées sous forme de texte avec un base64.

malwares

En extrayant les données en base64, et en les décryptant, nous obtenons un fichier MSO, signalé par le texte “ActiveMime” au début de la séquence.

La décompression du fichier MSO, nous fournit le contenant OLE2, avec le programme VBA.

Et ensuite ?

En utilisant l’exemple d’un malware récent, nous avons extrait le code VBA depuis son contenant XML.

Voici ce que nous avons trouvé :

malwares

Au premier coup d’œil, le code apparait plutôt compliqué, mais ce dernier est en fait très simple. Il a délibérément été étoffé, et rendu complexe, pour dissimuler ses réelles intentions.

Cette sous-routine est le point d’entrée du code VBA, et notre attention se porte immédiatement sur les séquences identiques, et incompréhensibles qui sont déclarées au début du fichier. Elles apparaissent de manière identique, sous la forme de 4 lignes, répétées par groupe de 3.

Nous regarderons de plus près ces séquences plus tard, mais tout d’abord occupons-nous du code dupliqué (mis en évidence en rouge).

Ces 4 lignes ne semblent pas avoir d’effet sur le fonctionnement de la sous-routine.

Le code déclare une variable qui n’est pas renseignée, ainsi qu’une boucle FOR dont la condition de fin ne permet pas à cette dernière d’être exécutée. Enfin, une structure conditionnelle SI qui est toujours fausse.

Une telle programmation est souvent désigné comme un “dead code”, probablement crée automatiquement par un générateur de codes.

En retirant ce “dead code”, nous nous retrouvons avec une sous-routine, beaucoup plus lisible et simple, bien qu’il ne soit pas encore possible de savoir ce que ce code réalise vraiment :

malwares

Un signe distinctif est l’appel répété de la fonction “ho3NnG”.

Chaque appel est accompagné par l’une des séquences programmées et constantes, déclarées au début du fichier.

La fonction “ho3NnG”, quant à elle, contenue dans un module séparé, semble vouloir une nouvelle fois nous perdre par sa complexité.

Mais nous remarquons tout de suite la quantité importante de GoTo, qui est présente au sein de la fonction :

malwares

Etant donné que ces sauts ne sont pas conditionnels, et qu’il n’y a pas non plus de labels entre chaque saut et leur destination, le code prit en sandwich entre chaque saut, ne peut jamais être exécuté.

Un code comme celui-ci, est connu sous le nom de “unreacheable code”, nous pouvons donc tout simplement l’ignorer.

Sans ces perturbations apportées par l’ “unreachable code”, et avec un peu de réorganisation, nous nous retrouvons avec une fonction beaucoup plus simple et lisible :

malwares

Le code ci-dessus boucle sur une fonction de conversion de séquences, et applique l’opérateur XOR à chaque caractère, avec la valeur décimale 255 (cela a pour effet de retourner chaque bit au sein de chaque octet).

Le résultat de chaque XOR est stocké dans une nouvelle séquence, qui est renvoyée vers la fonction appelée.

Cette fonction de décodage de texte, est très répandue dans l’univers des malwares. En effet, c’est une manière simple de masquer les données telles que les noms de fichiers, les messages et les URLs qui seraient sinon trop visibles et éveilleraient immédiatement les soupçons, quant à leurs réelles intentions.

Nous pouvons, à présent, remplacer les appels originaux de la fonction “ho3NnG”, avec les données décodées qui se répète à chaque fois.

Ainsi, le résultat ressemble à ceci :

malwares

Ensuite, un peu de formatage et de nettoyage, quelques variables renommées, et enfin les vraies intentions de ce fichier apparaissent beaucoup plus clairement.

Ce code, en réalité, effectue les opérations suivantes :

Pourquoi utiliser un downloader ?

Les hackers auraient pu simplement incorporer le contenu de abs5ajsu.exe, sous la forme de données codées dans le code VBA, de telle manière à permettre au malware de fonctionner même hors ligne.

Cependant, en utilisant un downloader, ils retardent jusqu’au dernier moment la révélation de leurs réelles intentions.

Le malware qu’ils utilisent pour leur attaque est démasqué uniquement au moment de l’ouverture du fichier Office (et non au moment de la réception de ce dernier).

Ils ont alors plus de flexibilité : ils peuvent changer le malware a tout moment, l’adapter en fonction de la géolocalisation de leur victime, ou bien encore télécharger des fichiers “clean” comme leurre.

Dans cet exemple, le malware qui a été téléchargé, était une variante de Dridex, un cheval de Troie bancaire, dérivé de Cridex.

Ce downloader VBA spécifique, est souvent associé avec la puissance de Dridex, comptabilisant à peu près 70% de tous les malwares de type VBA, au cours des 3 derniers mois.

Les bonnes vieilles méthodes restent toujours d‘actualités !

[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]

Sophos détecte et bloque les malwares désignés sous le nom de Troj/DocDl-GO (pour la partie downloader VBA) et Troj/Dridex-AZ (pour la partie malware qui est réellement lancé dans votre système).

[/vc_message][/vc_column][/vc_row]

Billet inspiré de : “From the Labs: New developments in Microsoft Office malware” par Graham Chantry de Naked Security

Partagez “Les malwares Microsoft Office : VBA toujours là !” avec http://wp.me/p2YJS1-1FP

 

3 Commentaires

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.