Les malwares

Posted by IT NISRO 0 commentaires

     Les attaques informatiques et les logiciels malveillants sont de plus en plus présents dans le monde d'aujourd'hui.

    Les principaux éditeurs antivirus recensent ainsi plus de 200 000 nouveaux spécimens chaque année. Ces attaques sont de plus en plus ciblées et complexes à éradiquer.

Qu'est ce qu'un malware ?                                                                       

Avant de commencer à présenter les principes de l'analyse de malwares, il est nécessaire de définir précisément ce que nous désignons communément sous le terme "Malware". Nous pouvons rencontrer de nombreuses définitions de la notion de malwares, toutes adoptant une vision et approche différente.

Le terme Malware (ou logiciel malveillant) s'utilise généralement pour caractériser tout logiciel malveillant ayant pour but de compromettre un système informatique sans l'accord de son propriétaire.

Le premier Malware a fait son apparition dès le début de l'informatique, dans les années 1970.
Intitulé Creeper, il était capable d'accéder à des systèmes distants par le biais d'un modem et affichait le message « I'M THE CREEPER : CATCH ME IF YOU CAN » à l'utilisateur.
Depuis, les malwares n'ont cessés d'évoluer et de se complexifier pour devenir aujourd’hui la première menace mondiale. Ils peuvent maintenant opérer sur des systèmes à haute criticité comme ce fut le cas avec le malware stuxnet en 2010 qui était capable de modifier la vitesse de rotation des centrifugeuses des centrales nucléaires.

Aujourd'hui, il existe de nombreuses variations de malwares. Il est important en tant qu'analyste, d'avoir une vision précise des principales familles de malwares existantes.
Chaque famille de malwares à des fonctionnalités et des objectifs spécifiques. Etre capable de classifier la famille d'appartenance d'un malware permet d'identifier rapidement son impact et son but.

Les familles de malwares                                                                        

  • Backdoor
  • Les backdoor sont des malwares installant une porte dérobée (backdoor) sur la machine infectée. Cette porte dérobée est alors utilisée par l'attaquant pour s'introduire dans le système à tout moment.

    Initialement, pour créer cette porte dérobée, les attaquants ouvraient un port en écoute sur la victime. Grace à ce port actif, l'attaquant pouvait alors se connecter à la machine pour l'administrer à distance.
    Cette première technique montra rapidement ces limites. En effet, cette méthode requiert une connexion et une action manuelle de la part de l'attaquant sur chaque machine à infecter, limitant ainsi le nombre de machines pouvant être administrées.

    Pour répondre à ces limites, les portes dérobées ont rapidement dérivées en botnet. Les botnet sont un ensemble de machines administrées à distance par le biais d'un serveur central dénommé C&C (Command and Control). L'utilisation d'un C&C permet à l'attaquant de gérer un nombre potentiellement important de machines infectées depuis un point central.

    Pour faciliter l'administration des botnet, des frameworks existent. Ces frameworks appelés RAT (Remote Administration Tool), permettent de procéder à toutes sortes d'actions sur les machines infectées (base de registre, attaques ...).

    Face à ce type de malware, la priorité de l'analyste va être d'identifier le C&C pour rompre la communication. Cette étape va permettre d'empêcher la machine infectée d'envoyer et recevoir des messages à son serveur central. Une fois la liaison inactive, l'analyste va s'attacher à comprendre le protocole d'échange entre le malware et son C&C, afin de mettre en place une détection générique d'une infection sur le réseau.

  • Ransomware
  • Ces malwares vont empêcher la victime d'utiliser son système ou accéder à ses données tant qu'elle n'a pas payée une rançon à l'attaquant.

    Exemple de ransomware

    Pour empêcher l'accès aux données, la plupart des variantes vont chiffrer les données de la machine pour les rendre inaccessibles. La clé de déchiffrement sera alors livrée à l'utilisateur lors du paiement de la rançon.

    L'objectif principal pour l'analyste, va être d'identifier les méthodes et algorithme de cryptage utilisés.

  • Stealer
  • Comme leur nom l'indique, ces malwares vont tenter de dérober des informations sur les victimes. A l'instar des backdoor, ces malwares vont dialoguer avec l'attaquant par le biais d'un C&C pour transmettre les données récupérées.

    L'objectif pour le pirate étant principalement de récupérer des informations sensibles (numéro de carte de crédits, mot de passe ...).

    La mission principale de l'analyste, va être d'identifier le serveur central pour rompre la communication et empêcher l'envoie de données.
    Ensuite, il va essayer de comprendre quelles informations sont impactées pour estimer les risques encourus par l'infection.

  • Rootkit
  • Ce malware a pour but de s'introduire dans un système et de dissimuler son activité. Pour cela il va supprimer toutes traces dans les fichiers de journalisation, la base de registres.... Il va également se dissimuler au sein du système de fichiers par le biais de mécanisme de hook.
    Les hook vont consister à remplacer un appel système par un autre. De cette façon, il peut par exemple cacher certains fichiers liés au rootkit dans l'explorateur Windows.
    Par ailleurs, les rootkits peuvent stopper certains processus comme les antivirus ou encore les pare feu.
    De par leurs actions, les rootkit nécessitent des privilèges élevés. C'est pourquoi il n'est pas rare de trouver des rootkit au niveau du noyau.
    La plupart du temps un rootkit est associé à un autre malware, pour le rendre difficile à détecter.

    Les rootkit sont les malwares les plus difficiles à analyser à cause de leurs nombreuses fonctionnalités et leur dissimulation.

    Communication avec le Command and Control

        La plupart des malwares présentés précédemment vont tenter de communiquer avec l'attaquant.
    C'est le cas par exemple des keyloggers appartenant à la famille des stealer qui vont transmettre des informations dérobées de la victime au pirate.

    Dans le domaine de l'analyse, l'équipement de l'attaquant en communication avec le malware est nommé Command and Control.
    Les canaux de communication entre le malware et son Command and Control sont le plus souvent le point faible de l'infection. En effet, il suffirait de rendre la liaison inactive à l'aide d'équipement spécialisé comme un pare feu pour rendre le malware inopérationel.
    Pour empêcher cela, les créateurs de malwares mettent en place des systèmes et des mécanismes de plus en plus sophistiqués pour communiquer avec leur malware.
    La plupart de ces méthodes sont basées sur le principe du DNS.
    Nous allons présenter les trois méthodes les plus connues et les plus utilisées par ordre de complexité.

    Transmission des noms de domaines                                             

    Dans cette première technique, le Command and Control transmet régulièrement une nouvelle liste de noms de domaine aux victimes. La plupart du temps, les malwares disposent de plusieurs noms de domaine pour contacter leur Command and Control.
    De cette façon, en cas d'adresse inacessible d'autres adresses sont utilisables.

    Fast flux                                                                                        

    Ici, la communication entre les malwares et le serveur central va utiliser un des principes de base du fonctionnement du protocole DNS.
    Il s'agit simplement d'associer à un nom de domaine plusieurs adresses IP.

    Domain Generation Algorithm                                                       

    Cette dernière méthode est la plus évoluée des techniques présentées dans ce document.
    A l'opposé des deux méthodes décrites précédement, les malwares vont générer localement les adresses DNS permettant de contacter les C&C.
    Par exemple, le malware Conficker générait des milliers de noms de domaines chaque jour et tentait de contacter les adresses pour trouver d'éventuels C&C.
    La difficulté de mise en place de cette méthode est de trouver un algorithme de génération efficace avec un mécanisme suffisamment aléatoire pour éviter d'être détecté.


    Fonctionalités des malwares

    Persistence                                                                                    

    Pour être efficace, un malware va chercher à rester persistant sur le système cible, c'est à dire qu'il va essayer d'être actif au redémarrage du système.
    Nous pouvons distinguer quatre techniques principales permettant de rendre persistant un malware au sein d'un système :

  • Base de registre
  • Sous les environnement Windows, la base de registre contient tous les paramétrages relatifs au système et aux programmes.
    Cette base permet notamment, par le biais de certaines clés, d'associer des programmes au redémarrage du système. En voici une liste non exhaustive :

            HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
            [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
            [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
            [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
            [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit]
            [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
            [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
            [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
            [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
            [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]
            

    Ces clés varient d'une version de windows à l'autre. Il est donc intéressant de consulter le support officiel pour connaitre la liste de ces entrées pour une version spécifique.

  • Fichier
  • Sous Windows certains fichiers spéciaux permettent de paramétrer le système et son démarrage. C'est le cas par exemple du fichier boot.ini.

  • Service
  • Pour rester persistant, un malware peut s'intégrer sur le système en tant que service.
    Un service est une bibliothèque (.dll) chargée et exécutée au démarrage du système par le processus svhost.exe.
    L'avantage de cette technique est qu'elle permet également de dissimuler l'activité du malware. En effet les services ne sont pas visibles directement par le gestionnaire de taches, puisqu'ils appartiennent au processus svhost.exe.

  • Driver
  • Certains malwares vont même jusqu'a s'intégrer dans des drivers ou encore au niveau du MBR.
    Dans ce cas il est très difficile de les identifier.

    Dissimulation                                                                                      

    Les malwares vont également essayer de cacher au maximum leurs activités au sein du système. Il peuvent tout d'abord s'intégrer dans le système en tant que service pour ne pas être visible directement dans le gestionnaire des taches.
    En effet comme vu précédemment, les services sont chargés par le processus svhost.exe.
    De nombreuses autres techniques de dissimulation existent, les plus connues sont les hook et l'injection de code.

    Hook

    Les hook sont très utilisés notamment par les rootkit. Ils consistent à remplacer une fonctionnalité externe par sa propre fonction.
    Par exemple remplacer la fonction permettant de liste les processus en activité dans le gestionnaire des taches Windows par sa propre fonction.
    En faisant de la sort, il est aisé de cacher la présence du malware dans la liste des processus actifs sur le système.

    Injection de code

    Cette méthode permet de s'intégrer dans un processus légitime du système. Les processus explorer.exe ou winlogon.exe sont couvent ciblés par les malwares dans un environnement Windows.
    L'intérêt est réel puisqu'il permet de se cacher dans un processus habituel pour paraitre inexistant auprès de l'utilisateur.

    Pour faire de l'injection de code de nombreuses méthodes existent.
    Une des plus courantes est l'utilisation de la base de registre. Il suffit de s'inscrire dans la clé de base de registre suivante pour injecter une DLL dans un processus spécifique :

    HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs

    Cette clé permet d'indiquer les DLL chargées avec le système.


    0 commentaires:

    Enregistrer un commentaire

    Membres

    Formulaire de contact

    Nom

    E-mail *

    Message *