Déballage et analyse des logiciels malveillants inconnus

· 4min · Juicecat

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

Son exécution ne fait apparemment rien, sauf ouvrir une fenêtre de console vide pendant quelques secondes, ce qui indique qu'au moins quelque chose se passe. Comme c'est souvent le cas avec les logiciels malveillants, je suppose que cet exemple est compressé. Cependant, il est préférable de s'en assurer et également de savoir quel packer a été utilisé. Pour ce faire, nous l'ouvrons avec DIE et visualisons l'entropie du fichier : index.md-2.png La partie à examiner ici est l'entropie très élevée (~ 8) pour la majorité du fichier. L'entropie est simplement une mesure du « caractère aléatoire » des données dans un fichier. Il peut aller de 0 à 8. Un score de 8 signifierait un caractère totalement aléatoire, ce qui est courant dans le cryptage (idéalement). Un fichier typique fluctuera comme ceci : index.md-3.png

Maintenant que nous savons qu'il est emballé, nous devrions également découvrir quel emballeur a été utilisé. Il existe de nombreuses façons de trouver cela, mais la plus simple est de regarder les en-têtes de 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 des logiciels malveillants de faible qualité l’utilisent également car il est gratuit et facile à utiliser.

Les packers sont utilisés pour réduire la taille des fichiers exécutables. Essentiellement, lorsqu'un programme souhaite réduire sa taille, il compressera l'intégralité du fichier, puis attachera un petit programme à son adresse de démarrage qui le décompressera au moment de l'exécution. C'est comme compresser un fichier pour l'envoyer sur Internet, et également envoyer une copie de 7zip avec pour que l'utilisateur puisse en décompresser le contenu. C’est la raison pour laquelle les applications packagées ont souvent une entropie très élevée et stable. Le contenu sont chiffré.

Regarder le code compressé serait inutile, nous devons donc le décompresser avant de faire autre chose. Il existe plusieurs façons de décompresser les logiciels malveillants, mais je vais décompresser manuellement celle-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 se met automatiquement en pause. 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 nouvelle pause.index.md-5.png

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

Le saut final avant les opérations de remise à zéro indique que le programme a été décompressé et va maintenant passer à l'exécution des données décompressées. Ainsi, après une pause avant le saut, nous avançons d’une instruction et faisons à nouveau une pause. Cela nous amènera, espérons-le, au début du « vrai » programme. index.md-7.png

Nous pouvons utiliser un plugin appelé Scylla pour créer le nouveau programme décompressé. Nous utilisons les fonctions IAT Autosearch et Get Imports pour créer les tables d'importation pour nous, puis transférer le programme sur le bureau. index.md-8.png

Nous avons maintenant un dump du programme décompressé, vérifions donc que nous l'avons fait correctement en vérifiant à nouveau l'entropie.

Nous avons donc vérifié que nous avons réussi à décompresser le malware. La prochaine étape serait d'analyser ses activités et de faire un rapport.index.md-9.png