Affichage des articles dont le libellé est Les malwares. Afficher tous les articles
Affichage des articles dont le libellé est Les malwares. Afficher tous les articles

Obfuscation

Posted by IT NISRO 0 commentaires

 Dans le but de rendre leur malware durable, les pirates mettent en oeuvre des mécanismes d'obfuscation.

L'obfuscation dans le language informatique consiste à rendre un exécutable ou un code source illisible et difficile à comprendre par un être humain.
Cette pratique peut surprendre au premier abord puisque un bon programme est souvent caractérisé par la qualité de son code pour faciliter sa maintenance.


L'obfuscation n'a pas cet objectif et peut être utilisée dans trois cas :

  • Protéger une propriété intellectuelle
  • Complexifier l'analyse et le reverse engineering
  • Rendre le binaire plus difficile à détecter, en modifiant sa signature.

Un grand nombre de techniques existent pour obfusquer un binaire. Ce chapitre va présenter les plus rencontrées en analyse de malware.

Chaines de caractères                                                                             

L'obfuscation des chaines de caractères est l'une des techniques les plus utilisées par les créateurs de malware.
Cette méthode consiste à dissimuler les chaines de caractères grâce à un algorithme qui va se charger de coder puis décoder les données.
Ainsi, sans connaitre l'algorithme il est impossible de comprendre la chaine de caractère encodée.
Cette technique est fréquemment utilisée pour rendre illisible le code source et les chaines de caractères utilisées par le malware.

Exemple

Pour comprendre ce type d'obfuscation, nous allons montrer en exemple l'algorithme ROT 13. Cet algorithme consiste à permuter chaque lettre d'une chaine selon le tableau suivant :


Table de permutation de l'algorithme ROT 13

Ainsi, la chaine toto devient gbgb.

Le malware herpesnet était connu pour utiliser cette technique :


Analyse des chaines de caractères du malware herpesnet.

Comme le montre la figure ci-dessus, la commande strings retourne des chaines de caractères illisibles.

En décodant le texte avec l'algorithme ROT 13 nous parvenons à obtenir des chaines de caractères compréhensibles :


Analyse des chaines de caractères du malware herpesnet avec décodage.

L'objectif en présence de ce type d'obfuscation, va être de déterminer l'algorithme utilisé pour être en mesure de décoder les chaines de caractères encodées.

Packers                                                                                                   

Autre technique fréquemment utilisée par les créateurs de malware: les packers.

Initialement, les packers avaient pour objectif de compresser un binaire sans altérer son fonctionnement. Dans le domaine des malwares, ils ont rapidement évolués pour ajouter également de l'obfuscation.


Représentation d'un packer.

Comme le montre le schéma ci-dessus, un programme va contenir le binaire original sous format compressé et obfusqué. Lors de son exécution, son rôle est de décompresser et désobfusquer le binaire original en mémoire.
Grace à cette technique, il est difficile pendant l'analyse statique de lire les chaines de caractères ou analyser le format PE. En effet, les seules informations lisibles sont celles du packer.

L'objectif pour l'analyste va être de vérifier si le malware n'utilise pas un packer connu. Si c'est le cas, il est relativement simple d'unpacker le malware.
Il existe une multitude de packer très utilisé et connu : "ASProtect, Themida, UPX, ...". Nous pouvons utiliser des outils comme yara qui permettent de détecter ces packers en fonction de leur signature et permettent de les unpacker.
A noter que les malwares peuvent être packés plusieurs fois. Il faut alors unpacker couche aprés couche jusqu'à obtenir le binaire original.

Anti VM                                                                                                   

Les malwares sont de plus en plus sophistiqués et intègrent la plupart du temps un détecteur de machine virtuel.
Comme nous l'avons vu précédemment, les analystes utilisent des environnements virtualisés pour réaliser leurs analyses, notamment durant la phase d'analyse dynamique. C'est pourquoi les créateurs de malware tentent de les identifier pour interrompre ou fausser l'analyse. Il existe de nombreuses façons de détecter un environnement virtuel. Nous allons en présenter quelques-unes.

  • Détection de caractéristiques types
  • Les malwares peuvent identifier certains élements caractéristiques des machines virtuelles.
    Par exemple, la présence du port nommé "VM" ouvert sous VmWare.

  • Détection de processus
  • Les malwares peuvent également identifier des processus spécifiques aux solutions de virtualisation.
    Par exemple, la présence du processus VBoxService.exe sous VirtualBox, qui correspond aux addons invités.

  • Exploitation de vulnérabilités
  • Comme tout logiciel, les logiciels de virtualisation peuvent présenter des vulnérabilités.
    Les malwares peuvent utiliser ces failles pour modifier le comportement de l'environnement virtualisé.

    Par exemple VirtualBox présentait une vulnérabilité utilisée par de nombreux malwares :


    Exploitation de la vulnérabilité CVE-2012-3221 de Virtualbox.

    Ce code lorsqu'il était exécuté permettait de faire crasher la machine virtuelle.

    Pour éviter d'être détecté il est important de respecter les contraintes de mise en oeuvre de l'environnement d'analyse vu précédemment. Il faut notamment veiller à maintenir à jour ses outils et éviter d'installer des outils spécifiques aux machines virtuelles qui peuvent être facilement détectés comme les addons invité.

    Anti Debug                                                                                              

    Une autre technique d'obfuscation de plus en plus utilisée est l'intégration d'un anti débogueur.
    Cet outil, comme vu précédemment, est utilisé lors de l'analyse dynamique et est très utile pour comprendre le fonctionnement du malware.

    De nombreuses techniques sont utilisées par les créateurs de malwares pour parvenir à détecter de tels outils.

  • Gestion du temps
  • Un débogueur met en pause l'exécution d'un programme pour permettre son analyse.
    Pour détecter un débogueur, certains malware calculent le temps passé dans une fonction.
    Ainsi, si la fonction dure un certain temps, le malware peut facilement supposer la présence d'un outil de déboguage.

  • Détection de processus
  • Tout comme pour la détection d'environnement virtuel, les malwares peuvent vérifier la présence de certains processus de débogueur connus (OllyDbg, Immunity Debugger...).

  • Détection de point d'arrêt
  • Une autre méthode très efficace consiste à détecter la présence de points d'arrêt logiciels ou matériels.

    Il est très difficile de contourner ce type d'obfuscation. Le seul moyen est d'utiliser des debogueurs proposant des fonctionnalités avancées.


    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.


    Membres

    Formulaire de contact

    Nom

    E-mail *

    Message *