Déballage et analyse des logiciels malveillants inconnus

· 4min · Juicecat

J'ai un fichier mystère à analyser. En surface, il s'agit d'un fichier exécutable Windows non menaçant. Son nom est malware.exeindex.md-1.png

L'exécuter ne fait rien, sauf ouvrir une fenêtre de console vide pendant quelques secondes, ce qui indique qu'au moins quelque chose se passe. Comme cela est commun avec les logiciels malveillants, je suppose que cet échantillon est emballé. Cependant, il est préférable de s'assurer et de savoir quel packer a été utilisé. Pour ce faire, nous l'ouvrirons avec DIE et affichons l'entropie du fichier: index.md-2.png La pièce à examiner ici est l'entropie très élevée (~ 8) pour la majorité du fichier. L'entropie est simplement une mesure du "hasard" des données dans un fichier. Il peut aller de 0 à 8. Un score de 8 signifierait un aléatoire complet, ce qui est courant dans le cryptage (idéalement). Un fichier typique fluctuerait comme ceci: index.md-3.png

Maintenant que nous savons qu'il est bondé, nous devons également découvrir quel packer a été utilisé. Il existe de nombreuses façons de trouver cela, mais la plus facile est de regarder les en-têtes des sections dans la première image d'entropie. Nous voyons qu'il existe un en-tête du nom UPX2. UPX est l'un des packers les plus courants disponibles. Il est utilisé pour de nombreuses applications légitimes, mais les logiciels malveillants de bas grade l'utilisent également car il est gratuit et facile à utiliser.

Les emballeurs sont utilisés pour réduire la taille des fichiers exécutables. Essentiellement, lorsqu'un programme souhaite réduire sa taille, il comprimera l'intégralité du fichier, puis joignera un petit programme à l'adresse de début de lui-même qui le décompressera à l'exécution. C'est comme zipper un fichier pour l'envoyer sur Internet, et également envoyer une copie de 7ZIP avec pour l'utilisateur pour déballer le contenu. C'est la raison pour laquelle les applications emballées ont souvent une entropie très élevée et stable. Le contenu Are crypté.

Regarder le code emballé serait inutile, nous devons donc le déballer avant de faire autre chose. Il existe plusieurs façons de déballer les logiciels malveillants, mais je vais déballer manuellement celui-ci dans le but d'avoir un article de blog plus cool. Je commence par attacher mon débogueur, x32dbg au programme. Le débogueur s'arrête automatiquement. index.md-4.png

La première chose que nous faisons est d'exécuter le programme jusqu'au point d'entrée, puis de faire une pause à nouveau.index.md-5.png

Maintenant que nous sommes en pause, nous commençons à chercher la fin de la partie débmacker du code dans le binaire. Dans ce cas, il se trouvait vers la fin du code - une dernière instruction jmp avant que l'espace ne soit rempli d'opérations à zéro. index.md-6.png

Le saut final avant les opérations de mise à zéro indique que le programme a été déballé et va maintenant passer à l'exécution des données déballées. Donc, après avoir réussi avant le saut, nous faisons passer une instruction en avant et nous arrêtons à nouveau. Cela nous amènera, espérons-le, le début du "vrai" programme. index.md-7.png

Nous pouvons utiliser un plugin appelé Scylla pour tailler le nouveau programme déballé. Nous utilisons les fonctions IAT AutoSearch et obtenons des fonctions d'importation pour créer les tables d'importation pour nous, puis vider le programme sur Desktop. index.md-8.png

Nous avons maintenant un dépotoir du programme déballé, alors vérifions que nous l'avons fait correctement en vérifiant à nouveau l'entropie.

Nous avons donc vérifié que nous avons réussi à déballer les logiciels malveillants. L'étape suivante serait d'analyser ses activités et de faire un rapport.index.md-9.png