Rootkits et Malwares : le savoir-faire du SophosLabs
[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]
Voici le premier article d’une série qui viendra ponctuellement vous éclairer sur les techniques utilisées au sein de SophosLabs, pour le traitement des malwares.
Nous espérons que cet article vous plaira, si vous avez un sujet en particulier que vous voudriez que nous traitions à l’avenir, merci de nous le faire savoir.
Merci à Mike Wood, du SophosLabs à Vancouver, pour tous ces efforts en coulisses, qui ont permis l’écriture de cet article.
[/vc_message][/vc_column][/vc_row]
Sur les traces des rootkits et autres malwares
Lorsqu’un nouveau type de malwares fait parler de lui, la première question que les gens se posent en général est : « comment fonctionne-t-il ? », ou encore « qu’est-ce
Autrefois, à l’époque où on ne comptait pas plus d’une centaine de nouveaux malwares chaque année, presque tous ces virus étaient codés en langage machine. Ainsi nous commencions, en général, par une approche dite statique ou analytique, afin de « désassembler » ou encore « décompiler » le code.
Une fois que nous avions découvert la séquence d’opérations exécutée par le malware, comme par exemple, le scan complet de tous les répertoires sur le disque C: et l’infiltration de tous les fichiers .COM, nous prenions un ordinateur tout juste reconfiguré, en le laissant agir. Nous confirmions enfin notre première analyse, cette fois par une approche plutôt de type dynamique et déductive.
Cependant, à l’heure actuelle, chaque jour ce sont des centaines de nouveaux malwares qui fleurissent, tous écrit dans des langages différents, et empruntant des chemins très variés d’un malware à l’autre.
Bien sûr, la plupart des malwares que nous récupérons ne sont pas complètement nouveaux.
Ils sont uniques d’un point de vue technique essentiellement. En effet ils se composent d’une séquence d’octets inédite, de la même manière que bonjour et BONJOUR, ne sont pas totalement équivalents.
En fait, la plupart des nouveaux échantillons qui apparaissent chaque jour, sont des variantes mineures de malwares que nous avons déjà détectés, ou que nous connaissons déjà, mais qui sont tout simplement cryptés ou conditionnés différemment.
Cependant, cela nous laisse assez de spécimens de malwares qui méritent d’être inspectés.
Ainsi, aujourd’hui, nous commençons en général par l’approche dynamique et déductive, en utilisant des systèmes automatiques qui font fonctionner ces malwares dans un environnement sous contrôle, au lieu d’essayer de déconstruire chaque échantillon manuellement, comme nous le faisions par le passé.
Tout ceci nous amène de façon incontournable aux questions qui se cachent derrière les questions de départ, à savoir : “Comment expliquer le fonctionnement de ces malwares ? » et « Comment garder un suivi et un contrôle de ce que ces malwares font ? ».
Sur les traces des malwares
Les techniques classiques de suivi, lorsque vous êtes sur la piste d’un programme suspect comprennent :
[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]
Capture d’image (Snapshot)
Capturer, au préalable, une image (snapshot), qui enregistre l’état du système, par exemple les noms de tous les fichiers (et leurs nombres), ainsi que le contenu des registres. Ensuite, stocker ces informations en sécurité.
Lancer ensuite le malware.
Faites une capture d’image, après coup, et comparer le avec celle de départ.
[/vc_message][/vc_column][/vc_row]
[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]
Suivi des “System Calls”
Conserver une trace des « system calls », comme les fonctions explicites CreateFile(), CreateProcess() ou encore URLDownloadToFile(), et enregistrer les paramètres qui ont été utilisés.
[/vc_message][/vc_column][/vc_row]
Par exemple, la capture d’image permet de mettre le doigt sur les fichiers téléchargés par le malware, et le suivi des “System calls” permet de savoir depuis quel endroit ils ont été téléchargés. La technique de la capture d’image nous renseigne sur la manière avec laquelle les choses se sont terminées, et la technique du suivi des “system calls”, nous permet de comprendre comment nous sommes arrivés à de tels résultats.
Cependant, les techniques de capture d’image et du suivi des “system calls”, ne suffisent pas et peuvent laisser des zones d’ombres dans notre compréhension des malwares.
Les problèmes potentiels inclus :
Plus important encore, comment savoir si ce malware réalise vraiment des actions malveillantes, comme l’installation d’un rootkit, l’écriture à des emplacements inhabituels du disque que nous ne contrôlons pas, par le biais des “system calls”, ou encore l’utilisation de fonctions ou d’exploits totalement inconnus.
L’utilisation de la virtualisation
La virtualisation peut nous aider ici.
A moins d’avoir à faire à des malwares qui agissent différemment quand ils sont lancés depuis un environnement virtualisé (par exemple, VMWare, Xen, VirtualBox), nous utilisons rarement des ordinateurs dits « bare metal » (sous-entendu directement opérationnels sur la machine, sans système d’exploitation), mais plutôt de « vrais » ordinateurs.
Les machines virtuelles, qui sont en fait des logiciels tout simplement, comportent un certain nombre d’avantages, notamment :
Le dernier point est particulièrement intéressant si vous êtes à la recherche des changements qui ont eu lieu. En effet, nous pouvons comparer l’état du disque avant et après que le malware ait été lancé.
Cette comparaison se produit au niveau de l’ordinateur hôte lui-même, lorsque la machine virtuelle est « gelée » ou « arrêtée », de manière à empêcher d’être dupé par le malware, qui pourrait nous envoyer des résultats bidons (ce comportement est connu sous le nom de « stealth » ou encore anti-anti-virus).
Au final, nous obtenons une image des secteurs sur le disque, et de tous les changements qui ont eu lieu au niveau de l’image du disque virtuel, y compris ceux qui n’auraient peut être pas été visibles sur une machine conventionnelle.
Ces derniers comprennent, les données écrites dans des fichiers temporaires, le fichier swap, les secteurs de boot et de partition du disque, et même des emplacements qui sont officiellement non utilisés.
Ceci est une astuce utilisée par les rootkits avec succès : ils implantent un système de fichier protégé, caché dans les secteurs vides du disque, et dans lesquelles ils peuvent stocker des programmes, des données, et des fichiers de configuration, qui sont complétement invisibles pour le système d’exploitation.
Ainsi, un enregistrement au niveau des secteurs des changements intervenus, ainsi que de leurs localisations, est une bonne manière de contre-attaquer les malwares. En effet, les changements opérés sur le disque, en dehors de la zone d’attribution du système d’exploitation, pourront être mis en évidence, et être immédiatement signalés comme suspects.
Besoin d’aller plus vite
Cependant, comparer les images avant et après, au niveau des secteurs, peut prendre beaucoup de temps.
Une image d’un disque virtuel d’une installation Windows 8.1 basique, par exemple, représente 8Go ou plus. Ainsi, la vérification de chaque secteur « avant » et « après », signifie lire en fait 2 fois 8Go de données brutes, même si une poignée de secteurs ont été modifiée.
Cependant, il existe un raccourci assez pratique que nous pouvons utiliser.
La plupart des systèmes de virtualisation inclus une fonction de capture d’image intégrée (snapshooting), aussi connue sous le nom de disque des différences (« disk differencing », afin de rendre plus aisée l’annulation de tous les changements intervenus, après avoir utilisé la machine virtuelle pendant un certain temps.
Ceci est très pratique lorsque vous êtes en train de tester un nouveau logiciel, où bien lorsque vous analysez des malwares.
Plutôt que d’écrire les changements directement sur l’image du disque de départ, une image séparée contenant uniquement les différences, est utilisée pour le stockage des changements.
Ainsi, lorsque vous lisez à nouveau le disque principal, le logiciel de virtualisation vérifie quels secteurs se trouvent dans l’image des différences, avant de lire le disque principal le cas échéant.
En d’autres mots, si nous lançons notre malware à l’intérieur d’une machine virtuelle qui est en mode différenciation, nous obtenons automatiquement une liste de ce qui a changé et où exactement. Ainsi, lors de l’examen des différences, nous ne pouvons pas être dupés par une quelconque autoprotection, ou bien encore par un processus invisible intégré directement dans le fonctionnement du malware.
Bien sûr, l’image des différences nous dit uniquement quels secteurs ont été touchés. Nous devons donc encore investiguer par nous-même, quels fichiers appartiennent aux secteurs concernés. Cependant, les changements qui n’appartiennent à aucun fichier (comme, par exemple, dans le cas où ils font partie d’un rootkit qui opère à l’extérieur du système d’exploitation), sortent du lot immédiatement.
Le message délivré par ces changements
L’avantage le plus flagrant, en pistant les changements au niveau du disque grâce à l’image des différences, est la facilité et la fiabilité de détection de ce que l’on appelle les modifications de disque non autorisées, telles que celles réalisées par des rootkits de type low-level.
Mais nous pouvons aussi utiliser l’image des différences pour pister les changements au niveau des fichiers.
En travaillant à l’envers, depuis l’image des différences, en passant par la table d’allocation des fichiers NTFS (appelée le MFT pour Master File Table), nous pouvons rapidement trouver quel fichier correspond à telle modification du disque.
Cela nous permet de voir rapidement ce qui a changé, sans traiter le disque principal virtuel dans son intégralité.
Si un changement en particulier semble être intéressant, nous pouvons l’extraire directement depuis les fichiers situés sur l’image virtuel du disque, pour une analyse plus approfondie.
Cette méthode peut sembler fastidieuse, en comparaison avec la constitution d’images au niveau du disque virtuel et le scanning de toutes les listes de répertoires, comme nous le faisons dans le système d’images (snapshot) traditionnel.
En effet, au pire, sur un ordinateur où chaque fichier change, lors du passage du malware, l’image des différences peut avoir une taille similaire à l’image de départ.
Cependant, en pratique, si nous calons nos captures d’images judicieusement, afin de minimiser la quantité de changements, lors de l’exécution du malware (rappelez-vous que l’image des différences enregistre tous les changements, incluant ceux de moindre importance ou inintéressants), nous pouvons obtenir une analyse plus rapide que la méthode traditionnelle.
Dans le SophosLabs, la vitesse de traitement a été augmentée par 60, ainsi ce qui prenait avant une minute, à présent prend une seconde.
Voilà un bon exemple qui illustre comment nous pouvons travailler intelligemment et rapidement en même temps.
[vc_row][vc_column width=”1/1″][vc_message color=”alert-info”]
Détecter et tuer les rootkits avec le Free Sophos Virus Removal Tool
C’est un outil simple et facile d’utilisation pour les utilisateurs de Windows. Il fonctionne conjointement avec votre anti-virus existant, pour trouver et se débarrasser de toutes menaces qui rodent sur votre ordinateur, incluant les rootkits et autres malwares furtifs.
Il effectue son travail sans vous demander au préalable de désinstaller le logiciel déjà en place (retirer votre anti-virus principal au moment où vous avez une menace d’infection est très risqué).
Téléchargez-le et testez-le. Utilisez la dernière version mise à jour par Sophos, et laissez-le scanner les mémoires et le disque dur. S’il trouve une menace quelconque, vous pouvez cliquer sur un bouton pour lancer le processus de nettoyage.
[/vc_message][/vc_column][/vc_row]
Billet inspiré de : “Notes from SophosLabs: On the trail of rootkits and other malware” de Paul Ducklin de Naked Security
Partagez “Rootkits et Malwares : le savoir-faire du SophosLabs” avec http://bit.ly/1uMPo8i