Practical Malware Analysis - Lab 01x2

Cette série de writeups couvre les différents exercices du lab “Practical Malware Analysis”. Ce premier chapitre à pour but d’introduire à l’analyse statique basique de différents samples.

Lab 1-2 (Lab01-02.exe)

1 - Does either file match any existing antivirus signatures

Le fichier exécutable est majoritairement reconnu par les solutions antivirales comme étant malveillant : image-left

2 - Are there any indications that this file is packed or obfuscated? If so, what are these indicators? If the file is packed, unpack it if possible.

Une simple observation des différentes sections du binaire sous CFF Explorer montre que l’exécutable est packé avec l’utilitaire UPX. En effet, le nom des sections correspond au nom par défaut des sections d’un exécutable packé avec UPX. De plus, l’inégalité des tailles entre les sections montre bien qu’un chargement en mémoire d’un morceau du code sera effectué. image-left Puisque UPX est un packer bien connu, il suffit de télécharger l’utilitaire et de dépacker l’exécutable avec la commande :

upx -d Lab01-02.exe

image-left Il est désormais possible d’analyser proprement le contenu du binaire.

3 - Do any imports hint at this program’s functionality? If so, which imports are they and what do they tell you?

L’exécutable fait appel à des fonctions provenant de plusieurs bibliothèques différentes. Les imports laissent deviner que le binaire va interagir avec la machine cible par le biais d’un ou de plusieurs services Windows, et que celui-ci va récupérer des ressources additionnels sur internet. Premièrement, le programme est capable de créer des mutex et des nouveaux processus : image-left Mais aussi de créer et d‘interagir avec des services Windows : image-left Enfin, le programme est capable d’aller chercher des ressources distantes (HTTP ou FTP) via les deux fonctions suivantes : image-left Les imports ne permettent pas encore de déterminer la nature du code malveillant, mais uniquement quelques fonctionnalités de celui-ci.

4 - What host- or network-based indicators could be used to identify this malware on infected machines?

En cherchant les chaînes de caractères présentes dans le binaire, et en corrélant celles-ci avec les différentes fonctions utilisées par le programme, il est possible de déterminer si une machine est infectée. Dans un premier temps, la présence de la chaine “MalService”, et le fait que le programme soit capable de créer de nouveaux service Windows laisse à penser que ce nom est celui du service malveillant initié par le programme : image-left Deuxièmement, la chaine “HGL345” semble correspondre au nom du mutex utilisé par le programme malveillant : image-left En cherchant la signification de cette chaîne sur internet je suis tombé sur un une documentation de la fonction CreateMutex qui utilise cette chaine comme nom par défaut (https://www.aldeid.com/wiki/CreateMutex) . Il semblerait aussi que le programme utilise d’une manière ou d’une autre Internet Explorer 8.0. Une corrélation entre les potentielles machines infectés et la présence d’IE 8.0 peut donc être faite : image-left A noter que l’analyse du code assembleur du programme permettra de confirmer ces théories par la suite. Pour terminer, la seule empreinte réseau du programme semble être liée à l’adresse suivante : image-left Sachant que le programme utilise la fonction InternetOpenUrlA, il est possible de d’émettre l’hypothèse que le programme va chercher à contacter cette adresse. Si l’adresse n’est pas légitime, il est possible de bloquer l’accès à cette dernière. Une nouvelle fois, seul le désassemblage du programme permettra de répondre à ces questions. Même si cela n’est pas demandé dans le cadre de cet exercice, je vais tout de même désassembler ce programme pour chercher à comprendre son fonctionnement.

Analyse du malware:

Le programme commence par chercher à ouvrir son mutex “HGL345”, afin de tester si la machine est déjà infectée. Si c’est le cas, celui-ci s’arrête immédiatement : image-left Si le mutex n’existe pas, celui-ci est initié. Une connexion au gestionnaire de contrôle de service Windows de la machine locale est ensuite faite, de façon à créer le service “MalService”. Ce service tourne sous le compte “LocalSystem” (mais n’appartient à aucuns groupes). Le binaire associé au service sera ici l’exécutable analysé, dont la localisation sera récupéré dynamiquement. Le service sera ajouté à la liste des services à démarrer en même temps que la machine, de façon à ajouter une couche de persistance. image-left Un timer est ensuite initié pour attendre la septième semaine de l’année 2100: image-left Lorsque cette date est atteinte, le programme va créer récursivement et infiniment des nouveaux processus: image-left Ces processus vont, eux aussi de manière récursive, télécharger le contenu de la page internet présente à l’adresse “http://www.malwareanalysisbook.com” (Flag 8000000h pour un téléchargement de la ressource). image-left Le programme ne cherche donc pas à télécharger de nouveaux composants malicieux en provenance de cette URL, mais bien à initier un déni de service dessus. Les machines infectés avec ce code malveillant vont ainsi toutes se mettre à télécharger récursivement et infiniment la page web concerné, causant très rapidement un crash du serveur web, croulant sous de trop nombreuses requêtes. A noter que la chaine “Internet Explorer 8.0” ne sert finalement que d’user-agent pour les connexions vers le site victime du déni de service.