Qu’est-ce que l’analyse de logiciels malveillants ?
Table des matières :
Beaucoup d’enfants cassent des choses non pas parce qu’ils sont de petites créatures diaboliques, mais parce qu’ils sont curieux de savoir « comment c’est fait ». Finalement, certains de ces enfants grandissent et deviennent des analystes en cybersécurité. Ils font essentiellement la même chose mais dans un monde d’adultes.
Analyse de malwares est le processus d’étude d’un échantillon de malware pour comprendre de quoi il est composé et comment il fonctionne. Parfois, on ne sait jamais à moins d’essayer, il est donc nécessaire d’exécuter réellement le malware. Et parfois, il est nécessaire d’examiner minutieusement le code ligne par ligne sans déclencher l’exécution.
Bien sûr, apprendre ce qu’est l’analyse de malware apporte de nombreux avantages. Connaître l’ennemi signifie connaître les moyens de vaincre. Cela signifie que les chercheurs en malwares aident leurs équipes SOC à concevoir des algorithmes de détection plus ciblés, ainsi qu’à améliorer leur réponse aux incidents.
La partie passionnante est que les malwares modernes deviennent de plus en plus sophistiqués. Souvent, les analystes en sécurité doivent étudier quelque chose auquel ils n’ont pas accès. Si, il y a dix ans, un malware pouvait être défini par un fichier exécutable unique, maintenant, un fichier n’est que le début d’un voyage. Plongeons un peu plus profondément dans l’analyse de malware et voyons comment le faire.
Comment Commencer l’Analyse de Malware ?
C’est facile – vous pouvez commencer l’analyse de malware après avoir obtenu un échantillon de malware. Les organisations qui adoptent une approche de Défense en Profondeur ont en place de nombreux outils et processus pour trouver régulièrement de nouveaux échantillons. Certains analystes vous diront qu’ils n’ont rien vu de conceptuellement nouveau depuis des années, tandis que d’autres admettront qu’ils ont de nouveaux échantillons de malware environ chaque mois. Tout dépend grandement de la profondeur de la recherche.
Analyser un malware peut consommer beaucoup de temps ; c’est pourquoi de nombreuses équipes SOC préfèrent ne pas aller si loin. Cependant, le temps passé à la recherche est certainement rentable car il n’est jamais trop tard pour améliorer la posture de sécurité.
Quels sont les Types d’Analyse de Malware
L’analyse de malwares peut être effectuée de différentes manières et avec l’utilisation de divers outils. Il existe trois principaux types d’analyse :
- Statique
- Dynamique
- Hybride
Pour savoir comment analyser le malware que vous avez en main, essayez d’abord de répondre à quelques questions :
- Comment ce malware pourrait-il déclencher son exécution ?
- De quelles manières essaiera-t-il d’éviter la détection ?
- Quelles parties du code malveillant pouvons-nous voir et ne pouvons-nous pas voir ?
- Quels outils nous aideront à analyser tous les aspects d’un échantillon de malware donné ?
Si vous avez un échantillon de fichier malveillant, vous pouvez effectuer une analyse statique. Cependant, si ce fichier est conçu uniquement pour lancer d’autres étapes d’une chaîne d’attaque, l’analyse statique ne montrera pas comment la charge utile principale s’exécute. Et parfois, la seule façon de le découvrir est d’exécuter le malware dans un environnement sécurisé. Voyons donc comment effectuer différents types d’analyses de malware et comment elles peuvent être utiles à un analyste en cybersécurité.
Analyse Dynamique des Malwares
L’analyse dynamique des malwares peut être réalisée soit dans un bac à sable automatisé, soit sur une VM où vous pouvez tester l’échantillon manuellement. Gardez à l’esprit que les malwares sophistiqués rechercheront des signes d’un environnement émulé, et l’analyse dynamique automatisée des malwares n’est pas la meilleure option dans ce cas.
Comme tout autre logiciel, un malware peut être programmé pour faire pratiquement tout ce qu’un code peut faire. Vous voulez donc comprendre ce que fait le code (en tant qu’ensemble d’instructions) et quelle en est la logique.
Par exemple, certains outils de sécurité injectent leurs DLL dans les processus locaux. Le malware va scanner l’environnement, et s’il trouve ces fichiers – il se terminera lui-même. Hormis cela, les scanners de malwares rechercheront :
- Débogueurs et autres outils utilisés pour l’analyse interactive (appels API comme IsDebuggerPresent, CheckRemoteDebuggerPresent, NtQueryInformationProcess).
- Processus, fenêtres, clés de registre, fichiers, objets mutex, etc. pour l’analyse des malwares.
Comme son nom l’indique, l’analyse dynamique des malwares consiste à observer le malware en action. Vous voulez interagir avec lui de toutes les manières possibles et créer une image complète de sa fonctionnalité. Pour ce faire, assurez-vous d’utiliser un environnement totalement isolé ; il doit être déconnecté d’Internet, fonctionner sur un réseau uniquement hôte, et la VM ne doit partager aucun dossier avec l’hôte.
Même si les scanners d’évasion de débogueur sont présents dans de nombreux échantillons de malwares, les chercheurs en sécurité utilisent des débogueurs dans l’analyse dynamique des malwares. Ces outils sont bons pour identifier les appels API risqués et les allocations de mémoire. Si le malware utilise activement des techniques sans fichier, il ne sera pas visible dans l’analyse statique car il fonctionne à travers des processus légitimes – pas d’exploitation nécessaire.
Par exemple, un code injecté dans PowerShell alloue de la mémoire dans powershell.exe et exécute un code obfusqué dans un nouveau thread (qui génère un processus de confiance via Process Hollowing):
À l’intérieur du débogueur, vous pourrez voir comment le code parcourt toutes les instructions qu’il est programmé à exécuter. N’oubliez pas de vérifier les chaînes en mémoire et de les comparer avec le code responsable de ces interactions mémorielles. Cherchez les APIs d’injection, telles que VirtualAlloc, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread, etc. Examinez également les transactions NTFS pour Process Doppelgänging injections.
Utilisez des outils de masquage de débogueur pour vous assurer de pouvoir analyser un malware qui évite la détection. Nous parlerons davantage des outils un peu plus tard. Maintenant, voyons comment effectuer une analyse statique des malwares.
Analyse Statique des Malwares
L’analyse statique des malwares est le type d’analyse qui est possible à effectuer sans exécuter un code. Ce type d’analyse peut nécessiter une connaissance avancée des langages logiciels de bas niveau, des instructions du processeur et des principes de gestion de la mémoire.
Cependant, les analystes de niveau débutant ont aussi leurs propres méthodes pour analyser statiquement les fichiers. Par exemple, un simple coup d’œil à une extension de fichier peut vous dire de quel type de fichier il s’agit, ce qui vous permet de suggérer s’il est suspect d’avoir ce fichier à l’endroit où vous l’avez trouvé ou non. Ensuite, vous pouvez rechercher son hachage ou hachage flou dans des ressources de renseignement sur les menaces comme VirusTotal. Soyez prudent lorsque vous émettez des hypothèses, cependant, car même si le hachage n’est pas sur VirusTotal, le fichier peut être malveillant quand même. N’oubliez pas d’analyser d’autres propriétés statiques, telles que les informations d’en-tête.
L’analyse statique peut être effectuée à l’aide d’outils automatiques pour un tri initial, ainsi que d’outils pour une analyse manuelle pour un examen plus approfondi. Les analystes en sécurité étudient les instructions de code, les dépendances et ce qu’elles signifient.
Si vous ouvrez un fichier exécutable dans un Notepad, voici ce que vous verrez :
C’est un code compilé dans un format lisible par une machine. Les processeurs savent quoi faire, mais il est peu probable que les humains comprennent quoi que ce soit ici. Vous devez donc exécuter ce code à travers un désassembleur ou un décompilateur pour le remettre dans un format que vous pouvez lire et analyser. Après avoir fait cela, le code ressemblera à quelque chose comme ceci :
Comprendre les instructions assembly est nécessaire pour tirer des conclusions perspicaces. Consultez ce court guide pour rafraîchir vos connaissances ou plongez plus profondément avec ce manuel de référence d’Oracle.
Vous pouvez également utiliser la suite Sysinternals de Microsoft pour analyser les chaînes. Ses outils peuvent également aider à identifier quel exécutable est associé à certains appels API Windows et même déterminer les IOC. Faites défiler jusqu’à la dernière section de cet article de blog pour découvrir plus d’outils d’analyse de malwares. Et maintenant, parlons des avantages et des inconvénients de l’analyse statique et dynamique des malwares.
Analyse Statique vs Dynamique des Malwares
Évidemment, utiliser plus d’un type d’analyse des malwares serait la meilleure option. L’analyse statique montrera comment un fichier exécutable particulier fonctionne. Pendant ce temps, une chaîne de destruction standard aujourd’hui inclut souvent plus d’un exécutable. Au lieu de cela, il peut s’agir d’une collection de scripts et de fichiers qui se déclenchent les uns les autres. Si c’est le cas, l’analyse statique d’un des fichiers ne suffira pas pour comprendre comment fonctionne l’ensemble de la charge utile.
Selon les objectifs et les cibles de l’équipe SOC, certaines ressources peuvent être consacrées à l’étude des échantillons de malwares. Et c’est un choix très individuel de choisir entre l’analyse statique ou dynamique. Le plus souvent, il y a un besoin de maintenir un juste équilibre entre les deux, ce que l’on appelle souvent l’analyse hybride des malwares.
Analyse Hybride
L’analyse hybride des malwares est une combinaison d’analyse statique et dynamique des malwares.
Lorsqu’il s’agit d’échantillons complexes, il est préférable d’analyser les malwares par étapes. Par exemple, d’abord, vous effectuez une analyse statique et identifiez quels appels API pourraient échapper à la détection. Ensuite, dans un environnement émulé, vous effectuez une analyse dynamique pour voir l’échantillon en action et vérifier s’il télécharge d’autres fichiers binaires. Et si vous obtenez ces derniers, vous pouvez effectuer à nouveau une analyse statique de leur interne.
Cas d’Utilisation de l’Analyse de Malware
Chaque équipe SOC est unique, et les processus de cybersécurité peuvent être organisés différemment, en fonction du contexte de l’entreprise, de l’échelle de l’organisation et des facteurs de risque. Ci-dessous, nous avons rassemblé certains des cas d’utilisation dans lesquels l’analyse de malware est applicable.
Détecter les Menaces
Les IOC et les schémas comportementaux sont des entrées courantes pour divers types d’activités de détection des menaces dans des logiciels spécifiques (SIEM, SOAR, EDR/XDR). Obtenir des données importantes sur les malwares lors d’une analyse aide à détecter les menaces les plus récentes.
Recevoir des Alertes
Recevoir des alertes précises est une partie vitale de toute chaîne de cybersécurité. L’analyse de malware aide à réduire le nombre de faux positifs et de faux négatifs, assurant ainsi un niveau de protection cybernétique plus élevé.
Traquer les Menaces
Les nouvelles souches de malwares sophistiquées ne sont pas si faciles à attraper. C’est là que la chasse aux menaces entre en jeu. Avoir des échantillons de malwares et comprendre comment ils fonctionnent est le meilleur moyen de traquer plus de menaces qui se cachent dans la nature.
Répondre aux Incidents
Évidemment, il n’y a pas de bonne posture de cybersécurité sans la réponse aux incidents. Une réponse appropriée peut être élaborée et exécutée lorsque les ingénieurs en sécurité possèdent des informations détaillées sur l’apparence du malware, quels systèmes il affecte, et quels processus il essaie de lancer.
Quelles sont les Étapes de l’Analyse de Malware ?
Un travail analytique n’est pas le plus facile. Ce qui est facile, c’est de se perdre dans des tas de données ou de mal interpréter le code. Pour que la cyberdéfense soit réussie, les chercheurs divisent leurs activités en quelques étapes d’analyse de malware.
Évaluation et Priorisation
L’étape initiale d’une analyse de malware peut être effectuée avec l’aide d’outils d’automatisation. Pour l’analyse statique, certaines étapes de préparation sont nécessaires, comme le décompilage du code. Quoi qu’il en soit, dans la première étape de l’analyse de malware, il est nécessaire de trier les parties du code qui nécessitent une attention particulière. Elles peuvent également être divisées en niveaux de difficulté et de priorité. Une fois le périmètre du code malveillant à examiner défini et priorisé, il est temps de passer à l’étape suivante.
Interprétation des Données
Ensuite, les analystes en sécurité examinent des échantillons spécifiques de malwares. Comme je l’ai mentionné précédemment, cela peut être fait en analysant les propriétés statiques ou en exécutant le malware dans un environnement sûr et isolé. Lorsque l’analyste de malware obtient toutes les données qui peuvent être exposées lors des analyses statiques et dynamiques, il tente d’interpréter ce qu’il voit. Il peut ensuite tester davantage les échantillons en renommant les variables, en exécutant le code et en faisant des commentaires sur les schémas d’exécution.
Ingénierie Inverse
C’est la partie la plus difficile, surtout s’il y a un échantillon chiffré, et il n’est pas clair ce qu’il fait et pourquoi. De plus, le code peut avoir plusieurs dépendances qui ne sont pas non plus si évidentes. Tenter de désosser un malware est une tâche avancée. Pourtant, c’est la clé d’une approche de Défense en Profondeur.
Conclusions & Actions Futur
Lorsque les conclusions de l’analyse sont formulées, il est temps de les documenter et de prendre des mesures supplémentaires. L’analyste rédige un rapport de malware dans lequel il décrit un échantillon de malware, les étapes de l’analyse qui ont été prises et les conclusions. Il peut également donner quelques recommandations d’atténuation.
Quels sont les Outils pour l’Analyse de Malware ?
Il existe une vaste sélection d’outils pour l’analyse de malware que les ingénieurs de sécurité utilisent quotidiennement. Commençons par les outils d’analyse statique :
- PeStudio est largement utilisé par les équipes CERT du monde entier pour capturer les artefacts de fichiers malveillants.
- PEiD reconnaît facilement les malwares empaquetés et chiffrés et donne des détails sur ce dont ils sont composés.
- BinText est un extracteur de texte qui peut trouver des chaînes Ascii, Unicode, et Resource dans un fichier.
- MD5deep calculera les hachages malveillants. Utilisé comme analyseur de malware, ce paquet logiciel exécutera de nombreux fichiers à travers divers condensés cryptographiques.
- Dependency walker scannera les modules Windows 32-bit ou 64-bit et créera un arbre de dépendance.
- IDA Pro désassemblera le code binaire en un code source. Il offre également une capacité de débogage multiplateforme qui peut gérer des applications à distance.
Lorsqu’il s’agit d’analyser les malwares dans des bacs à sable, vous avez peut-être déjà essayé Cuckoo, mais je recommanderais de vérifier ANY.RUN and Joe Sandbox Cloud. Ils ont tous les deux un mappage MITRE ATT&CK®, utilisent des règles et fournissent une vue très détaillée des comportements.
Bien sûr, Wireshark n’a pas besoin d’introduction, car c’est toujours l’un des outils les plus utilisés pour l’analyse en temps réel des réseaux. INetSim simule de manière réaliste des services Internet dans un environnement de laboratoire (il est très peu probable que les échantillons reconnaissent la simulation). Ensuite, il y a la suite Microsoft Sysinternals que j’ai déjà mentionnée ci-dessus. Vous y trouverez toute une gamme d’outils pour l’analyse dynamique des malwares. ScyllaHide est un autre outil intéressant qui vous permet de cacher un débogueur du malware que vous souhaitez exécuter. Et si vous avez envie de faire un projet sérieux d’ingénierie inverse, consultez Ghidra , une suite d’outils développée par la direction de recherche de la NSA.
Apprendre à faire de l’analyse de malwares peut sembler ennuyeux au début, mais soyez patient et creusez plus profondément pour trouver de vrais trésors. Une fois que vous vous sentirez à l’aise avec les données de bas niveau, vous serez capable de voir ce que peu de gens verraient. Ainsi, au lieu de penser que les ingénieurs de malwares sont les gars les plus intelligents au monde, vous serez capable de prouver que même les malwares les plus avancés ne font pas de magie – c’est juste un autre morceau de logiciel qui peut être décomposé et neutralisé.
Enfin, pour une détection et une chasse aux menaces rapides et efficaces, abonnez-vous à SOC Prime Detection as Code Platform – ici, vous trouverez des milliers de règles basées sur Sigma pour repérer les dernières cyberattaques. Et si vous êtes prêt à partager votre propre expertise et à monétiser vos connaissances, rejoignez notre initiative de crowdsourcing mondial, Threat Bounty, qui aide à rendre le monde cybernétique plus sûr.