Dissecting and comparing different binaries to malware analysis
Sommaire
Filipi Pires
En rédigeant ce retex, je suis tombé sur un article du conférencier qui explique une conférence identique qu’il a tenue : Malware Analysis Dissecting PDF File
Le conférencier veut nous sensibiliser sur l’importance de connaître ses outils et leurs limitations. Cela, dans le but de rester en sécurité lors de l’étude d’un malware mais également pour ne pas passer à côté d’éléments importants. Le but de l’analyse est de déterminer si oui ou non ce fichier est malveillant.
Il existe deux méthodes pour analyser un malware :
- analyse statique -> on regarde le binaire sans l’exécuter, identification des fonctions importantes, utilisation de dll… C’est de ce type d’analyse dont il est question ici.
- analyse dynamique -> utilisation d’une sandbox, analyse du comportement du malware, on l’exécute.
Le workflow de l’analyse d’un malware est comme suit :
- identification d’artefact -> rapport -> amélioration de la sécurité -> threat intel (optionnel, si l’organisme dispose des ressources)
La conférence porte plutôt sur l’analyse d’artefact pour déterminer si un fichier est malveillant et le comprendre plus en détail le cas échéant. Pour illustrer ses propos, le présentateur nous invite à reconsidérer les types de fichiers. Sur un système UNIX, le magic number sert à déterminer le type d’un fichier, la manière dont il sera interprêté et avec quel outil il sera lu/exécuté. Un malware aura tendance à se cacher dans un fichier légitime. Pour illustrer cela, le conférencier analyse un fichier avec deux commandes tout en expliquant les limitations de l’outil :
file
: se base sur le magic number pour déterminer le type d’un fichier, qui est manipulable facilement.strings
: affiche les chaînes de caractères affichables, plus spécifiquement les chaînes de plus de 4 caractères. Le conférencier montre un exemple dans lequelstrings
ne trouve pas l’information utile.
L’outil est important, mais le comprendre l’est encore plus.
Analyse d’un PDF #
Le conférencier analyse un PDF avec les deux commandes précédentes et utilise ensuite des outils spécifiques pour les PDF :
- pdftk
pdfinfo
- pdfid (vraiment intéressant pour de l’analyse)
- pdf-parser
Les résultats intéressants sont :
- javascript dans le PDF (équivalent macro pour les fichiers doc). (
pdfinfo
,pdfid
) - champ
OpenAction
(pdfid
) action à l’ouverture - champ
stream
(pdfid
) qui contient souvent le payload malicieux - liens entre les
stream
et les exécution d’action (pdf-parser --raw file.pdf
)
A ce moment là, on observe que le pdf contient du javascript obfusqué qui s’exécute à l’ouverture du fichier. On pourrait s’arrêter ici, car le but est atteint, on est quasiment certain que le fichier est malveillant à ce stade. Cependant, le conférencier continue pour nous montrer comment extraire le payload et déterminer ce qu’il fait.
Lorsqu’on extrait le stream
contenant le javascript, on s’apperçoit qu’il est obfusqué. Le présentateur modifie le script pour afficher le javascript obfusqué et supprime l’eval
pour ne pas que le code s’exécute. Il reste un niveau d’obfuscation qui est cassé avec Malzilla. On s’appercoit alors que le script permet de communiquer avec un C2 (Command and Control), on a la confirmation que l’IP est malveillante avec un localisateur d’IP.