Les rootkits : le malware UNIXien adapté à Windows

On a tendance à croire que les malwares ne sévissent que sur les machines équipées du système d’exploitation Windows. Cette affirmation est fausse. Tout d’abord, aucune machine ni système n’est « free-malware » et toutes les machines peuvent être infectées.

Si effectivement, statistiquement, il y a plus de malwares sous Windows, c’est parce qu’il y a plus de personnes utilisant Windows que Linux et qu’il est donc – économiquement parlant – de s’attaquer à la première catégorie d’utilisateurs.

Mais les rootkits ont initialement été conçus pour l’univers UNIX et c’est en 2005 qu’on a redécouvert l’intérêt des rootkits lors d’une conférence. Concrètement, qu’est qu’un rootkit ? C’est un programme ou un ensemble de programme qu'un intrus utilise pour cacher sa présence sur un système informatique et pour lui donner accès à l'ordinateur dans le futur – il installe donc une backdoor. Pour atteindre cet objectif, le rootkit modifie le flux d'exécution du système d'exploitation ou manipule les données d'audit et de compatibilité sur lesquelles se fonde le système d'exploitation.

Contrairement au Trojan, le rootkit n’est pas aussi facilement détectable, il ne suffit pas d’ouvrir une invite de commande pour le détecter. Le but du rootkit est aussi de se cacher.          Ils peuvent se cacher mais aussi cacher la présence d’autres outils permettant comme les keyloggers. Par ailleurs, l’une des seules façons de les détecter – a posteriori – sur une machine fonctionnant sous Windows, c’est  lorsque l’utilisateur va obtenir ce qui a été appelé « l’écran bleu de la mort ». Il s’agit du fameux affichage qui apparaît après le démarrage de la machine et qui signale une erreur. Lorsque le rootkit a été mal codé, il provoque certaines erreurs qui génèrent ce fameux Blue Screen of Death.

Il existe plusieurs types de rootkits mais ici, on se contentera de rappeler les deux principaux :

-          Les rootkits par injection de DLL ;

-          Les rootkits en mode noyau.

Une injection DLL est une injection de code locale, consistant à introduire une bibliothèque de liaison dynamique dans un processus. Les rootkits par injection de DLL est confiné à l’environnement de l’utilisateur et sert à détourner, à remplacer ou à modifier certaines fonctions. Si on reprend l’exemple de la commande netstat, toutes les connexions réseaux ne seront pas affichées. Ceci explique pourquoi cette ligne de commande est inutile dans la détection des rootkits.

Les rootkits en mode noyau s’attaquent – comme le nom l’indique – au noyau du système d’exploitation. Ils manipulent les données du noyau et ce sont eux qui génèrent les Blue Screen of Death lorsqu’ils sont mal codés.

Détecter un rootkit sans outils ni connaissances est difficile justement parce que l’une de ses fonctions est de se cacher. Il existe deux techniques : immédiate sur un système en fonctionnement ou post-mortem avec une copie acquise du système. Pour « bien » faire, il faut procéder aux deux analyses afin d’obtenir une image réellement complète.

Pour Greg Hoglund, père de l’un des premiers rootkits sur Windows (NTRootkit – 1999), la première étape de détection d’un rootkit consiste à inspecter la mémoire car comme n’importe quel logiciel, le rootkit a besoin d’exister quelque part en mémoire, on recherche donc les points d’entrée. L’autre alternative, au lieu de surveiller les points d’entrée de mémoire, consiste à scanner régulièrement la mémoire à la recherche de modules connus ou de signatures correspondant à des rootkits. Mais cette démarche – comme celle de la recherche de signature par les anti-virus – ne peut s’appliquer qu’aux rootkits déjà référencés.  La troisième approche consiste à recherche les hooks dans le système d’exploitation et dans le processus mais cette technique possède les mêmes faiblesses que la première méthode : elle est laborieuse car de nombreux emplacements peuvent se prêter à la dissimulation d’hooks.  

Les rootkits ne sont pas cantonnés à l’univers des machines. Les smartphones sont également en prise avec ce type d’attaques. A titre d’exemple, CarrierIQ, une application pour smartphone initialement installé par les opérateurs pour détecter les problèmes liés au réseau, avait la capacité de collecter des données personnelles. La seule façon de s’en débarrasser est d’installer une nouvelle ROM.

C’est d’ailleurs l’une des façons de se débarrasser définitivement d’un rootkit même si ce n’est pas spécialement la meilleure : le formatage de bas niveau mais qui présente l’inconvénient de devoir tout réinstaller. A l’heure actuelle, les antivirus sont programmés pour détecter les rootkits et selon un test, c’est Avast qui s’en tire le mieux. 

[MAJ du 27/10/2012] : Voici une liste d'outils permettant la détection de rootkits sur Linux, avec petits tutoriels pour certains.

Commentaires

Personne n'a jamais dit que les malwares étaient propres au monde de Windows, il est simplement plus facile pour un utilisateur de Windows de s'infecter de par le fait du l'user par défaut est administrateur de sa machine et de son environnement clic and play.
Le fait qu'il n'existe pas par défaut de dépôts pour les applications sous Windows empire la chose, combien d'utilisateurs novices téléchargent leurs applications ailleurs que sur le site de l'éditeur.
Le premier vecteur de malware c'est utilisateur lui-même, peu importe son système d'exploitation, il suffit qu'il fasse n'importe quoi, et le plus sûr des OS deviens une passoire.

Non mais j'entends souvent dire des trucs de ce type :) De toutes façons, peu importe l'environnement, la plus grande faille en informatique, c'est l'interface chaise-clavier :p

Beaucoup pour le DL j'en sais quelque chose :p

les programmes c'est comme les bonbons , quand on sais pas d'ou ça viend on en mange pas

Ajouter un commentaire