Les aventures des Malvari insaisissables, Partie III: Scripts VBA complexes pour le rire et le profit



Cet article fait partie de la série Fileless Malware. Toutes les autres parties de la série:


Dans les deux derniers articles ( ici et ici ), nous avons parlé de méthodes d'attaque sans fichier, mais tout à fait inoffensives. Maintenant, nous sommes enfin prêts à affronter un véritable malware sans fichier. Un site d' analyse hybride (ci-après dénommé HA) est une ressource sur laquelle je m'appuie pour trouver ces «créatures» malveillantes. En règle générale, les informations que HA fournit pour chaque échantillon: appels système, trafic Internet, etc. - suffisant pour répondre aux besoins de sécurité informatique typiques. Je suis inexorablement attiré à plonger dans l'un de ces exemples de code très déroutant pour voir ce qui se passe vraiment là-bas.

Si vous souhaitez répéter après moi, je vous recommande de le faire dans le bac à sable, par exemple, dans Amazon Web Services. Et si vous vérifiez cela sur votre ordinateur, assurez-vous de commenter les appels système qui lancent PowerShell.

À l'intérieur du code VBA déroutant


Le malware que j'ai finalement trouvé sur le site d'analyse hybride est un script VBA qui a été intégré dans un document Word. Comme je l'ai mentionné la dernière fois, vous aurez besoin d' OfficeMalScanner de Frank Baldwin pour voir le code réel.
Après avoir extrait le script, j'ai chargé le code dans la bibliothèque de macros MS Word, puis lancé son débogage étape par étape à l'aide du débogueur intégré. Mon objectif était de mieux comprendre ce qui se cachait derrière l'obfuscation: jouer à l'analyse IB et connaître les succès et les déceptions associés à ce travail.

Si vous, comme moi, avez d'abord décidé de le faire dans le débogueur, il est fort probable que vous buviez plus d'une tasse de thé (ou café), parcourant un code à couper le souffle ou observant, clignotant, la variable L_JEK, à laquelle est attribuée la ligne "77767E6C797A6F6". .
En travaillant avec ce script VBA déroutant, j'ai réalisé que seule une très petite partie de celui-ci fait un travail utile. La plupart du code est là juste pour vous induire en erreur.
À la fin, j'ai pris une capture d'écran d'une petite partie du code qui fait tout le mal du démarrage d'une ligne de commande PowerShell, qui fonctionne finalement comme une macro VBA.


Tricky: prenez simplement la valeur hexadécimale et soustrayez 7 pour le vrai ASCII.


C'est très simple. Le code VBA contient dans plusieurs variables un enregistrement de la ligne de commande finale en notation hexadécimale, puis le convertit simplement en une chaîne de caractères. Le seul "truc" ici était que les valeurs hexadécimales étaient décalées de 0x07. Ainsi, par exemple, la première partie de la chaîne hexadécimale est obtenue à partir de L_JEK, à laquelle la valeur "77767E6C797A6F6" a été affectée. Si vous prenez 0x77 et soustrayez 0x07, vous obtenez l'hex 0x70. Faites de même pour 0x76 et vous obtenez l'hex 0x6F. Regardez-les dans n'importe quelle table de code ASCII et vous verrez qu'il correspond aux deux premières lettres de «powershell».

En fait, ce n'est pas l'enchevêtrement le plus difficile, mais ce n'est pas obligatoire! Tout ce que vous devez faire est de sauter les scanners antivirus à la recherche de mots clés spécifiques ou de leurs représentations sous forme de chaînes ASCII. Que cet échantillon est assez bon et le fait. Enfin, après que le script recrée la ligne de commande, il l'exécute via la fonction CreateProcess (voir ci-dessous):


Mettez en commentaire les appels système ou définissez un point d'arrêt devant eux.


Pensez-y une seconde. Un document Word a été envoyé à un employé dans un e-mail de phishing. Lorsqu'un document est ouvert, ce script VBA démarre automatiquement une session PowerShell pour commencer la phase suivante de l'attaque. Aucun fichier exécutable et scripts obscurcis n'échappent discrètement aux antivirus et autres scanners.

Ici, c'est le mal!

Par curiosité, j'ai téléchargé une autre macro sur le site HA (ci-dessous) pour voir ce qui se passe d'autre. Ce deuxième code fait à peu près la même chose que celui ci-dessus.


Code secret intégré dans VBA.


Mais alors ce code est un peu plus inventif dans la façon dont il restaure la ligne de commande. Il existe une fonction de décodage appelée «d» qui filtre les caractères de la chaîne de base et les compare à la deuxième chaîne de contrôle. C'est déjà une idée de niveau secondaire, et cela fait aussi un excellent travail: il esquive facilement les scanners et trompe les administrateurs qui ne regardent que brièvement les journaux pour des actions inhabituelles.

Prochain arrêt


Dans ma première série de publications sur l' obscurcissement, j'ai montré que le journal des événements Windows enregistre de nombreux détails des sessions PowerShell, c'est-à-dire si vous activez les paramètres appropriés pour pouvoir effectuer une analyse approfondie après le piratage .

Bien sûr, cela présente également une certaine complexité d'attaques sans fichier, car il est presque impossible de déterminer si le script PowerShell fait quelque chose de mal en vérifiant simplement les commandes qui s'y trouvent tout en affichant les événements du journal de sécurité.

Pourquoi, demandez-vous?

Parce que les sessions PowerShell démarrent tout le temps, et le code malveillant d'une session PowerShell provenant d'un seul pirate peut être lancé en même temps que le code légitime d'un bon administrateur informatique PowerShell. Si vous recevez des notifications chaque fois que le script PS télécharge quelque chose sur Internet, trop de faux positifs seront générés.

La conclusion peut être tirée comme suit: nous constatons l'incapacité des outils traditionnels de défense du périmètre à arrêter de telles attaques, les e-mails de phishing et les logiciels malveillants FUD, et de grandes perspectives pour l'analyse comportementale .

En bref, il s'agit d'une bataille délibérément perdante essayant d'empêcher les pirates de pénétrer à l'intérieur du périmètre. La meilleure stratégie consiste à identifier les accès inhabituels et suspects aux fichiers et à lancer des applications, puis à y répondre en désactivant les comptes ou en prenant une autre mesure en réponse à une violation.

Dans la partie suivante, nous examinerons les types plus avancés d'attaques sans fichier.

Source: https://habr.com/ru/post/fr459506/


All Articles