L'analyse de Malware

Posted by IT NISRO 0 commentaires

L'analyse de Malware peut avoir une grande variété d'objectifs :

  • Récupérer des indicateurs de compromission pour détecter les machines infectées et anticiper les infections
  • Etudier l'impact du malware
  • Identifier les vulnérabilités exploitées
  • Identifier son origine
  • Apprendre et s'amuser !

Les techniques d'analyse                                                                         

Lorsque l'on veut analyser un échantillon suspect, la plupart du temps nous avons à faire à un exécutable sans code source lisible.
Pour être en mesure de comprendre son fonctionnement, il est nécessaire d'utiliser une variété de techniques et d'astuces.
Nous distinguons deux types d'analyses complémentaires :

  • Analyse statique
  • L'objectif est ici de récupérer le maximum d'informations sans exécuter le malware.
    Pour ce faire l'analyste va identifier les chaines de caractères utilisées par le programme, analyser les metadata et utiliser un désassembleur pour analyser le code.
    Cette technique peut se révéler très efficace mais montre rapidement ses limites en présence de malwares complexes comportant de l'obfuscation.

  • Analyse dynamique
  • Contrairement à l'analyse statique, l'analyse dynamique vise à exécuter le malware pour comprendre son comportement. Autrement appelée analyse comportementale, il s'agit ici d'observer les interactions du malware avec le système.
    Pour pouvoir réaliser une analyse dynamique sans risque, il est nécessaire de disposer d'un environnement sécurisé et isolé. L'avantage est ici de voir en pratique le fonctionnement du malware.
    Cependant il y à un risque de ne pas observer certaines fonctionnalités. De plus, certains malwares sophistiqués sont capable de modifier leur comportement en présence d'analyse dynamique.

    Règles d'or                                                                                              

    Pour finir cette introduction, voici quelques règles de bases lorsqu'on fait de l'analyse de malwares :

  • Ne jamais rentrer dans les détails
  • La plupart des malwares sont complexes et il est rare de pouvoir comprendre leur fonctionnement à 100%. C'est pourquoi il est important de comprendre le malware dans son ensemble en étudiant les fonctionnalités principales sans entrer dans les détails.

  • No Silver Bullet
  • Comme dans de nombreux domaines, il n'y a pas de solution miracle en analyse de malware. C'est pourquoi de nombreux outils existent. Il est important de savoir profiter de cette diversité pour trouver la méthode qui est la plus adaptée à notre besoin.


    Environnement d'analyse

    Pour analyser des malwares, nous avons besoin d'exécuter les echantillons suspects pour comprendre leur fonctionnement, lors de l'analyse dynamique.

    Afin d'éviter de compromettre des systèmes en production, les analystes réalisent leurs études dans un environnement spécifique et isolé du réseau.

    Pour cela il est possible d'utiliser une machine physique dédiée à l'analyse de malwares. Cette solution bien qu'efficace, se révèle bien trop contraignante en terme de réutilisabilité.
    En effet, il est nécessaire de réinstaller complètement la machine après chaque analyse avec des outils comme Norton Ghost.
    Pour éviter ces problèmes, les analystes utilisent principalement des environnements basés sur la virtualisation. La virtualisation va permettre de réaliser l'analyser dans un environnement cloisonné.

    Cependant, il faut veiller à garantir une isolation parfaite pour éviter tout échange potentiel avec le système hôte, pouvant se traduire par une infection.
    Par ailleurs, certaines malwares sophistiqués sont capables de détecter une solution de virtualisation pour modifier leur comportement ou cesser de s'exécuter pour empêcher toute analyse.

    Sandbox                                                                                                  

    Dans le domaine de l'analyse de malwares, les sandbox sont des environnements clos et isolés ou sont exécutes les malwares. 
    A l'issu de l'exécution d'un échantillon ou après une durée déterminée, un rapport d'analyse est généré.
    Ce rapport fournit des informations sur l'échantillon relatant aussi bien de l'analyse statique que de l'analyse dynamique (trafic réseau, processus créé, base de registre ...).


    Exemple de rapport d'analyse généré par cuckoo sandbox

    De nombreuses solutions existent sur le marché dont cuckoo sandbox libre et utilisable en ligne ici.

    Très simple à utiliser, cette solution s'avère utile pour avoir rapidement une première idée sur les caractéristiques d'un fichier suspect.
    Néanmoins, il nous est impossible d'agir sur le malware et l'analyse reste limitée aux informations contenues dans le rapport.

    Machine virtuelle                                                                                    

    Les machines virtuelles sont très utilisées dans le domaine de l'analyse de malware. En effet, correctement configurées elles permettent d'assurer une grande isolation.


    Structure d'une machine virtuelle

    Comme le montre le schéma ci-dessus, une machine virtuelle va se lancer comme une application standard sur la machine physique.
    Elle agit comme un container hébergeant son propre système d'exploitation. Ainsi, toutes les applications lancées dans la machine virtuelle n'interagissent seulement qu'avec le système invité.
    En plus de la sécurité, ce procédé apporte une grande souplesse puisqu'il permet de lancer plusieurs machines virtuelles sur une même machine physique. Dans le domaine de l'analyse nous pourrions lancer des analyses sur plusieurs systèmes d'exploitation différents.
    De plus les machines virtuelles offrent des fonctionnalités très intéressantes comme la possibilité de prendre des snapshot. Ceci va permettre de sauvegarder l'état de la machine virtuelle à un instant t, pour la restaurer par la suite. Ainsi, il va être très simple de restaurer l'environnement à la fin de chaque analyse.

    De nombreuses solutions existent, aussi bien des propriétaires que des gratuites :

    Avant de l'utiliser en tant qu'environnement d'analyse, la machine virtuelle doit être configurée pour garantir une isolation suffisante.

  • Isoler le réseau
  • Tout d'abord, afin d'éviter toute prolifération sur le réseau, il est fortement conseillé de désactiver l'accès réseau de la machine virtuelle.
    Pour ce faire il est possible de configurer la carte réseau de la machine virtuel en mode host-only. De cette manière, une interface virtuelle est créée sur la machine physique sur laquelle est reliée la carte réseau de la machine virtuelle, comme le montre le schéma suivant :


    Représentation du mode host-only adapter

    Une autre solution est de créer un LAN virtuel avec plusieurs hôtes invités, représenté par le schéma ci-dessous :


    Simulation d'un LAN virtuel

    Ici, la machine physique exécute deux machines virtuelles. La première est dédiée à l'analyse et est connectée à la seconde machine qui se charge d'offrir des services (DNS, HTTP ...).

  • Installer les dernières mises à jour
  • Comme toute application, une machine virtuelle peut contenir des vulnérabilités exploitables par les malwares.
    Il est donc primordial de maintenir sa solution de virtualisation à jour en appliquant les derniers patchs.

  • Utiliser un environnement minimaliste
  • Il est recommandé de ne pas installer des outils ou des services supplémentaires dans la machine virtuelle.
    Par exemple, en utilisant VirtualBox, il ne faut pas installer les addons invité (guest additions). En effet, ces différents outils peuvent nuire à l'isolation avec le système hôte en créant des interfaces partagées.

    Analyse statique

    Informations sur l'échantillon                                                                  

    La première étape intervenant dans l'analyse statique va consister à récupérer des informations sur le fichier suspect.
    L'objectif est de connaitre le type de fichier en cours d'analyse.
    Pour ce faire, nous pouvons utiliser la commande file disponible sous les systèmes Linux :


    Utilisation de la commande file

    Cette commande va utiliser les magic numbers. Cette en-tete spéciale située au début de tout fichier Windows permet d'indiquer son format.
    Voici quelques associations Magic number/ format de fichier les plus connues :

    Magic number

    Format

    MZ

    Exécutable Windows

    PK

    ZIP

    GIF

    GIF

    %PDF

    PDF

    Identification des chaines de caractères                                                 

    Identifier les chaines de caractères présentes dans un échantillon est la deuxième étape importante du processus d'analyse statique. En effet, en observant simplement les chaines utilisées par un exécutable, nous pouvons avoir un aperçu des fonctionnalités utilisées par le malware.

    Pour ce faire nous pouvons utiliser la commande strings disponible sous Linux ainsi que sous windows par le biais des Sysinternals:

    mohlen@mohlen-VirtualBox:~$ strings fec60c1e5fbff580d5391bba5dfb161a 
    Ph(3@  
    h(3@  
    Ph(3@  
    h(3@  
    \*.*  
    \*.*  
    XPhFM@  
    [...] 
    .db.mp3.waw.jpgjpeg.txt.rtf.pdf.rar.zipeeeeeeeeeeeeeeeeeeeeeeeeee 
    eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeVery bad news... 
    	

    Dans l'exemple ci-dessus, la sortie générée par la commande laisse présumer que l'échantillon analysé est un ransomware.
    En effet, la présence d'extensions et le message "Very bad news" est typique d'un malware appartenant à cette famille.

    A noter que cette commande est également très utile pour détecter les adresses de Command and Control.

    Analyse du format PE                                                                              

    PE pour "portable executable" est le format utilisé par tout exécutable sous Windows. Ce format est une grande richesse d'informations, très utile pour l'analyse de malwares comme :

    • Date de compilation
    • Fonctions importées par l'exécutable
    • Fonctions exportées par l'exécutable
    • Ressources utilisées (Icon, chaines de caractères, version...)

    Le format PE peut se représenter par le schéma suivant :


    Structure du format PE

  • En-tête MZ-DOS
  • Permet à Windows de reconnaitre le fichier comme un exécutable. Il contient notamment le magic number MZ.

  • Segment DOS
  • Exécuté lorsque le programme est lancé en MS-DOS. La plupart du temps il affiche le message This program must be run under Win32.

  • En-tête PE
  • Contient des informations sur le binaire comme sa date de compilation ou encore sa signature.

  • Table des sections
  • Déclare toutes les sections nécessaires au fonctionnement du programme. Voici les sections les plus utilisées :

    Nom

    Description

    .text

    Code exécutable du programme

    .bss

    Variables non initialisées

    .reloc

    Table des relocalisations

    .data

    Variables initialisées

    .rsc

    Ressources (images, fichier de configuration ...)

    .idata

    Imports

    Grace à la table d'imports, il est aisé de déterminer quelles fonctions sont utilisées par l'exécutable. De cette façon en constatant l'utilisation de fonction cryptographique ou l'API réseau nous pouvons rapidement avoir une idée des fonctionnalités du malware.

    Pour faciliter l'analyse de ce format, de nombreux outils existent, tels que :

    Désassemblage                                                                                        

    La dernière étape va consister à essayer de comprendre le code source du malware.
    Pour ce faire, l'analyste va utiliser un désassembleur qui va lui permettre de récupérer les instructions de l'exécutable en assembleur principalement.
    De nombreuses solutions existent, dont la suite gratuite IDA.
    Les désassembleurs offrent des fonctionnalités avancées permettant de faciliter la compréhension du code :

    • Renommage de fonctions
    • Introduction de commentaire
    • Visualisation graphique du code
    • Déchiffrement et désobfuscation

    L'analyse statique est une étape indispensable dans le cadre de l'analyse de malwares.
    Elle permet d'obtenir des informations essentielles sur un échantillon très rapidement. De plus, cette approche est sans risque pour la machine d'analyse puisque la malware n'est pas exécuté.

    Cependant, cette méthode atteint rapidement ses limites en présence d'obfuscation. En effet, il devient très difficile par exemple de parvenir à étudier les chaines de caractères en présence d'encodage.
    Par ailleurs, malgré la large couverture potentielle de cette technique avec le désassemblage, la présence de code assembleur rend la plupart du temps l'analyse très complexe.
    Pour approfondir l'analyse il faudra alors exécuter le malware pour observer son comportement en procédant à de l'analyse dynamique.


    Analyse dynamique

    Méthode                                                                                                  

    A l'inverse de l'analyse statique, l'analyse dynamique vise à exécuter le malware pour étudier son comportement.
    L'analyse dynamique va donc être réalisée dans un environnement sécurisé et isolé, majoritairement dans des solutions virtualisées. Voir le chapitre environnement d'analyse pour apprendre comment monter un tel environnement.
    L'approche de cette analyse va donc être totalement différente de l'analyse statique, qui consistait à lancer des outils indépendamment des autres.

    Le processus d'analyse peut être représenté comme ceci :


    Méthodologie de l'analyse dynamique dans une machine virtuelle

    1) Dans un premier temps une sauvegarde complète du système est réalisée avant toute autre manipulation. Dans une machine virtuelle, nous pouvons utiliser la fonctionnalité "snapshot" permettant de prendre très facilement des instantanés. Cette sauvegarde va permettre de restaurer à l'état initial l'état du système après l'analyse.

    2) Ensuite, le malware est exécuté dans l'environnement.
    Le système doit évidement être compatible avec le malware. Par exemple certains malware requiert une certaine version de Windows pour fonctionner, ou encore des librairies tierces.

    3) Une sauvegarde est éventuellement récupérée après exécution du malware pour être en mesure de réitérer facilement l'analyse sans avoir besoin de refaire tout le processus.

    4) Les données d'analyse sont récupérées sur les différents outils.

    5) En fin d'analyse l'environnement est réinitialisé avec la sauvegarde initiale.

    Il est primordial de respecter ce processus pour chaque analyse afin de garder un environnement sain et sécurisé.

    Récupération de l'activité du Malware                                                    

    Comme vu précédemment, l'analyse dynamique va s'attacher à l'activité du malware en fonctionnement et ses actions sur le système. Pour ce faire trois points principaux sont intéressants à observer :

    Le système de fichiers

    L'une des premières choses à regarder lors de l'analyse dynamique est le système de fichier.
    En effet, un malware est souvent amené à modifier certains fichiers. C'est le cas par exemple des stealers qui vont la plupart du temps faire une capture d'écran pour l'envoyer au C&C.

    Pour analyser l'activité au niveau du système de fichiers, nous pouvons utiliser l'outil fournit par Microsoft par le biais des sysinternals : Process Monitor.
    Très simple d'utilisation, cet outil permet de consulter en temps réel les modifications d'un processus sur un système de fichiers. Il est possible de voir les fichiers lus, créés et les tentatives d'accès refusés pour cause de droits insuffisants.


    Process Monitor

    La base de registre

    Autre point essentiel à observer est l'activité du malware au sein de la base de registre. En effet, comme vu précédemment certains malwares l'utilisent pour se rendre persistant ou encore pour paramétrer le système.

    De la même façon que pour le système de fichiers, nous pouvons utiliser Process Monitor.
    Il va permettre de tracer l'activité au niveau de la base de registre d'un processus particulier.
    Il est ainsi possible de voir les clés lues, crées, modifiés ou consulter.

    Un autre outil est très utilisé dans le domaine de l'analyse de malware : RegShot.
    Il permet de comparer deux états de la base de registre et récupérer leur différence.
    Il est ainsi très facile de consulter les clés crées, modifiées ou supprimées dans la base.

    Activité réseau

    Autre point important à observer durant l'analyse dynamique, l'activité que génère un échantillon sur le réseau. En effet cela permet de détecter les C&C ou encore les méthodes de contamination.
    Pour cela, nous pouvons utiliser des outils comme Wireshark qui permettent de capturer les paquets entrants et sortants.
    Les possibilités offertes par ces logiciels permettent généralement de pouvoir consulter des informations détaillés sur le trafic.


    Capture du traffic réseau avec WireShark

    Débugage                                                                                                

    Généralement l'analyse statique combinée à l'analyse dynamique permet d'avoir une vision global sur le fonctionnement du malware. Cependant, il est parfois nécessaire d'approfondir l'analyse avec des malwares sophistiqués utilisant des méthodes d'obfuscation.

    Le débogeur va permettre de suivre l'exécution du code du malware pour tenter de comprendre au maximum son fonctionnement. En effet, un tel outil va permettre de placer des points d'arret sur l'exécution du malware, pour stopper son activité et consulter son état (variables utilisées, registres ...).
    De nombreux débogueurs existent dont le célèbre outil OllyDbg disponible en version gratuite et offrant de nombreuses fonctionnalités.


    En observant le comportement réel du malware, l'analyse dynamique permet de répondre aux limites de l'analyse statique.

    Cependant ce type d'analyse n'est pas sans risque, puisque le malware est exécuté réellement.
    C'est pourquoi il est important de disposer d'un environnement sécurisé et cloisonné pour éviter toute infection.

    Par ailleurs, certains malwares sophistiqués comme pour l'analyse statique, sont capables de procéder à de l'obfuscation.
    En effet, ils peuvent détecter la présence d'environnement virtualisé ou d'outils utilisés dans le cadre de l'analyse dynamique pour modifier leur comportement.

    Résumé                                                                                                   

    Les malwares sont omniprésent dans l'environnement actuel. L'analyse de malwares n'est donc plus réservée aux éditeurs antivirus mais à la majorité des entreprises, qui subissent des attaques de plus en plus ciblées.

    cette article permit d'introduire les notions de base relatives à l'analyse de malwares.
    Dans un premier temps, une classification des malwares existants et leurs principales fonctionnalités ont été présentés.
    Après cette introduction, vous avez pu découvrir les méthodes et outils utilisés par les analystes pour analyser les logiciels malveillants.

    0 commentaires:

    Enregistrer un commentaire

    Membres

    Formulaire de contact

    Nom

    E-mail *

    Message *