Incursion dans le piratage sans malware, Partie II : Scripts VBA malicieux

VBA

Je suis fan du site Hybrid Analysis. C’est une sorte de zoo dans lequel des malwares sont maintenus en captivité et où vous pouvez observer en toute sécurité des spécimens dangereux capturés dans la nature sans courir de risque. L’équipe de HA exécute le programme malveillant dans des bacs à sable sécurisés et enregistre les appels aux systèmes, les fichiers créés et le trafic Internet, pour afficher ensuite les résultats obtenus pour chaque échantillon de malware. Par conséquent, vous n’êtes pas obligé de vous creuser la tête, ni même (beurk !) d’exécuter du code fortement obfusqué pour comprendre les intentions des hackers.

Les échantillons de HA que j’ai étudiés utilisent comme contenant des scripts JavaScript ou Visual Basic for Applications (VBA), qui sont les « macros » imbriquées dans les documents Word ou Excel joints à des e-mails de phishing. Ces scripts lancent alors une session Powershell sur l’ordinateur de la victime. Les hackers envoient généralement un flux codé en Base64 dans le PowerShell. Tout ceci est très furtif et destiné à compliquer la tâche du logiciel de surveillance qui recherche des mots clés évidents pour se déclencher au besoin.

Par bonheur, les équipes de HA décodent le Base64 et affichent le texte en clair. Vous n’avez pas vraiment besoin de comprendre comment ces scripts fonctionnent car vous verrez la ligne de commande dans les processus produits, dans la section « Process launched » de HA. Les captures d’écran ci-dessous illustrent les informations affichées :

VBA

Hybrid Analysis capture les commandes codées en Base64 envoyées à un processus PowerShell

 

VBA

… puis effectue le décodage pour vous. #amazing

Dans le précédent billet, j’ai créé mon propre conteneur JavaScript légèrement obfusqué pour lancer une session PowerShell.

Ensuite, comme beaucoup de programmes malveillants basés sur le PowerShell, mon script télécharge un second script PowerShell depuis un site Web distant. Pour effectuer l’opération sans risque, ma bidouille télécharge une ligne inoffensive de PS pour afficher un message.

Comme nous sommes dans un blog d’IOS, nous ne faisons jamais les choses simplement. Allons un peu plus loin dans mon scénario.

PowerShell Empire et reverse shells

Un des objectifs de cet exercice est de montrer combien il est (relativement) simple pour un hacker de contourner les défenses classiques du périmètre et les logiciels d’analyse. Si un blogueur en sécurité non spécialisé dans la programmation comme moi est capable de mettre au point un malware totalement indétectable (ou FUD) en seulement deux après-midis (avec l’aide de quelques expressos), imaginez ce que peut faire un ado macédonien un tant soit peu futé !

Et si vous travaillez dans la sécurité et avez besoin de convaincre un responsable obstiné – je sais que cette espèce n’existe pas, mais imaginons que vous travailliez avec l’un d’eux – car l’entreprise doit renforcer ses défenses secondaires, mon exemple d’attaque sans malware pourrait vous être utile.

Je ne suggère pas que vous procédiez réellement au phishing de vos responsables, bien que ce soit possible. Si vous choisissez cette solution et utilisez mes scripts, le message qui s’affiche sur leur portable est à peu près l’équivalent du « bouh ! » en cybersécurité. Cela pourrait être efficace dans votre cas.

Mais si votre responsable vous répond par un « et alors ? », vous pouvez alors contre-attaquer avec ce que je vais vous montrer maintenant.

Les hackers veulent obtenir un accès direct à l’ordinateur portable ou au serveur de la victime. Nous avons déjà étudié comment les chevaux de Troie d’accès distant (RAT) peuvent servir à envoyer et télécharger des fichiers de manière furtive, émettre des commandes et rechercher du contenu de valeur.

Par contre, vous n’avez pas à aller aussi loin. Il est très facile d’obtenir l’accès au shell, ce qui dans certaines situations est tout ce dont le hacker peut avoir besoin – pour s’infiltrer et emporter avec lui quelques fichiers sensibles depuis l’ordinateur portable du CEO.

Vous souvenez-vous de l’excellent environnement de post-exploitation PowerShell Empire dont j’ai parlé dans un précédent billet ?

Il s’agit (hum) d’un outil de test d’intrusion, qui permet entre autres choses de créer facilement un reverse shell basé sur PowerShell. Vous en saurez plus sur le sujet en consultant le site PSE.

Voici un bref aperçu de la procédure à suivre. Je mets en place mon environnement de test de malware dans mon infrastructure AWS afin de pouvoir travailler en toute sécurité. Et vous pouvez faire de même pour apporter une preuve de concept à vos responsables (sans vous faire virer pour avoir exécuté sur site un logiciel de piratage appartenant à la zone grise.)

Si vous affichez la console principale de PowerShell Empire, vous voyez ceci :

VBA

Pour commencer, vous configurez un programme d’écoute sur votre ordinateur de piratage. Saisissez la commande « listener » puis « set Host » et indiquez l’adresse IP de votre système (l’adresse « téléphone maison » du reverse shell). Ensuite, lancez la procédure d’écoute à l’aide de la commande « execute » (ci-dessous).
Le programme d’écoute constitue une extrémité de votre connexion au shell.

VBA

Pour l’autre extrémité, vous devrez générer du code côté agent en entrant la commande « launcher » (ci-dessous). Ceci génère du code pour un agent PowerShell — notez qu’il est codé en Base64 — et formera la deuxième étape de la charge. Autrement dit, le code de mon contenant JavaScript de la dernière fois va maintenant faire appel à l’agent de lanceur PowerShell à la place du code dangereux pour émettre le « Malware diabolique » et se connecter à l’agent distant en mode reverse-shell.

VBA

La magie du reverse-shell. Cette commande PowerShell codée se reconnectera au programme d’écoute distant et configurera un shell.

Pour faire cette expérience, j’ai joué le rôle de la victime innocente et cliqué sur Evil.doc, le fichier JavaScript que j’ai créé la dernière fois. Vous vous rappelez ? Le PowerShell ayant été configuré de manière à ne pas afficher de fenêtre, la victime ne remarquera rien d’inhabituel. Toutefois, si vous consultez le Gestionnaire de tâches Windows, vous verrez le processus PowerShell en arrière-plan, qui ne déclenchera peut-être pas d’alarmes car ce n’est que le PowerShell, pas vrai ?

VBA

À présent, lorsque vous cliquez sur Evil.doc, un processus masqué en arrière-plan se connecte à l’agent PowerShell.

Revêtant alors ma casquette de hacker-testeur d’intrusion, je suis retourné sur ma console PowerShell Empire, et vu le message indiquant que mon agent était actif.

VBA

J’ai alors exécuté une commande d’interaction pour afficher un shell dans PSE. Je suis dans la place ! En bref : je suis entré par effraction dans le serveur Taco que j’ai jadis mis en place.

VBA

Ce que je viens de décrire demande beaucoup de travail. Si vous faites ça pour le fun entre midi et deux pour améliorer vos connaissances en sécurité informatique, c’est un moyen efficace de voir comment les hackers contournent les défenses du périmètre et s’infiltrent de manière furtive dans votre système.

Et les responsables informatique qui pensent, en croisant les doigts, avoir mis en place une défense à toute épreuve, trouveront cela très instructif – si vous arrivez à les convaincre de rester assis suffisamment longtemps.

Passons à la mise en service

Comme je l’ai suggéré, le piratage sans malware en conditions réelles est juste une variante de ce que je viens de présenter. Pour vous donner un petit avant-goût du prochain billet, j’ai recherché un spécimen Hybrid Analysis fonctionnant de la même manière que l’échantillon créé par mes soins. Je n’ai pas eu à chercher très longtemps car leur site contient de nombreux exemples de cette technique d’attaque.

Le malware que j’ai fini par trouver dans Hybrid Analysis est un script VBA imbriqué dans un document Word. Donc au lieu d’usurper l’extension .doc comme je l’ai fait dans mon exemple JavaScript, ce programme malveillant sans malware est un véritable document Microsoft.

Si vous jouez à la maison, j’ai sélectionné cet échantillon nommé rfq.doc.

J’ai vite appris que bien souvent on ne peut pas extraire directement les scripts VBA malveillants réels. Les hackers les compressent ou les dissimulent et ils n’apparaissent pas dans les outils de macro intégrés à Word.

Pour les extraire, vous aurez besoin d’un outil spécial. Par chance, je suis tombé sur l’OfficeMalScanner de Frank Boldewin. Danke, Frank.

Grâce à cet outil, j’ai extrait le code VBA soigneusement obfusqué. Cela donne un peu ça :

VBA

L’obfuscation par des pros. Je suis impressionné !

Les hackers sont très forts au jeu de l’obfuscation et mes efforts pour créer Evil.doc ont tout du travail d’amateur.

Quoi qu’il en soit, la prochaine fois que nous sortirons nos débogueurs VBA Word, explorez un peu ce code et comparez notre analyse à celle de HA.