Rootkit : la menace fantôme

Aujourd’hui je vais demander toute votre attention. Je vais aborder un sujet difficile et assez technique mais qui concerne (malheureusement) tout le monde. En tout cas pour l’instant il concerne surtout les utilisateurs de Windows, mais les autres ne vont pas rigoler bien longtemps.

Au moment ou la plupart des utilisateurs de PC comprennent à peu près la menace des virus sous toutes ses formes (e-mails piégés, programmes en P2P vérolés, chevaux de Troie, sites web piégés), et que ces utilisateurs sont à peine au courant de la menace des spywares (programmes qui s’installent – légalement – avec certains logiciels et qui espionnent l’activité de votre PC ou vous envoient des pubs sans votre consentement), voici une menace qui pourrait être nouvelle si elle n’existait pas depuis un moment déjà. Les rootkits ne sont en effet pas nouveaux, mais depuis quelques mois des témoignages de techniciens se multiplient concernant l’utilisation de ces nouveaux parasites… Et ça fait froid dans le dos.

Pour les informaticiens qui me lisent, voici un petit schéma qui explique le problème :

Et pour les non-informaticiens, voici l’explication : ce schéma représente de façon simplifiée comment fonctionne votre ordinateur. Je vais me limiter à Windows puisque c’est sur ce système que les rootkits se multiplient. Tout en bas, en noir, il y a le matériel qui compose votre PC, c’est à dire tous les périphériques (clavier, souris, écran, disque dur, etc). Chacun étant différent, le système a besoin de drivers pour pouvoir y accéder. C’est ce qu’on appelle le « bas niveau » d’un système puisqu’à ce niveau là on gère les informations de façon brute. Au-dessus se trouve la partie la plus importante du système d’exploitation, le kernel, qui est la première chose chargée par Windows (quand le logo Windows XP apparaît, le kernel est chargé). Le kernel s’exécute avant même les drivers car c’est lui qui est le centre névralgique du système : il gère les périphériques, ainsi que les applications. Les applications, elles, sont tout en haut. Il s’agit des programmes que vous utilisez (Explorer – le bureau de Windows -, Outlook Express, Media Player, que sais-je) ainsi que tous les programmes dont Windows a besoin pour fonctionner normalement. Enfin, au milieu, les API (Application Programmable Interface) sont un ensemble de plusieurs milliers de fonctions que les applications utilisent systémétiquement pour afficher des choses sur l’écran, accéder au disque dur… bref, pour pouvoir intéragir avec la machine. Toutes les applications sont sensées passer par les API pour accéder aux fonctions du système d’exploitation.

Un virus, dans sa forme actuelle, n’est qu’une application comme une autre. La différence est qu’il se cache pour que l’utilisateur ne le voie pas. Un virus est détectable par un antivirus car ce dernier va pouvoir scanner la mémoire ainsi que le disque dur (en passant par les API) et comparer ce qu’il trouve avec une base de données de virus connus.

Un rootkit n’est pas une application comme les autres. Un rootkit se présente sous la forme d’une extension de kernel. Autrement dit, le rootkit va se lancer en même temps que le noyau du système et se greffer à lui. Le rootkit va pouvoir alors remplacer certaines fonctions du noyau par les siennes, et ce avant même que n’importe quel autre programme (antivirus ou autre) ne puisse s’exécuter.

Qu’est-ce que ça implique ? Un antivirus ne pourrait-il pas juste scanner la mémoire et le disque comme il le fait d’habitude ? Il peut le faire… et ne trouvera rien. Car les accès mémoire et disque passent invariablement par le kernel. Qui est controlé par le rootkit… qui renvoie de fausses informations. Par exemple, admettons que le rootkit se soit installé sur le disque en C:\Program Files\ROOTKIT_DTC. Lorsque l’antivirus va demander au système de lister tout le contenu de « C:\Program Files », le rootkit va intercepter la demande et renvoyer la liste en y omettant le dossier « ROOTKIT_DTC ». Et à partir de là, il est simplement impossible pour une application normale de détecter la présence d’un rootkit.
Il en va de même pour les scans de la mémoire centrale, de la base de registre, et plus important, de la liste des applications en cours d’exécution. Cette liste est en effet maintenue par le kernel, et lorsqu’une application demandera cette liste, le rootkit, là encore, interceptera l’appel et supprimera de la liste transmise tous les processus qui lui sont liés.

La détection d’un rootkit est elle alors impossible ? En théorie, un système infecté par un rootkit est considéré comme « traître » : toutes les informations qu’il fournit peuvent être faussées. Pour un programme quelconque, la seule solution est d’accéder directement aux périphérique via les drivers – de faire du bas niveau – et encore faut-il que le programme en question sache ce qu’il cherche. La meilleure solution reste de démarrer sur un autre disque dur ou mieux, sur un CD avec un système « sain ». Malheureusement les outils n’existent pas encore (et Windows ne peut démarrer à partir d’un CD).
En tout état de cause, il n’existe pour l’instant AUCUN PROGRAMME que le grand public puisse utiliser pour tester la présence de rootkits sur son système. Il y a par contre quelques outils réservés aux utilisateurs avertis et techniciens, mais même ces utilisateurs se font infecter par des rootkits sans s’en rendre compte.

Et ici, je vais citer deux témoignages de personnes dont l’ordinateur a été infecté par des rootkits. Comme vous le verrez, ce sont des programmeurs ayant un niveau conséquent en informatique. Ces deux personnes ont le point commun d’avoir trouvé un rootkit installé sur leur système – par hasard.

Le premier témoignage est celui de JeremyK, un développeur de Microsoft qui reçut début juillet un rapport de bug banal (détails sur cette page). La résolution du bug lui a pris deux heures et l’aide de plusieurs collègues ingénieurs… le problème était qu’en exécutant pas à pas le programme, Windows crashait sur une vulgaire instruction (« a benign instruction was blowing up »). Grosso-modo, c’est comme si l’ordinateur plantait en faisant 1+1, ce qui est impossible à moins d’un sérieux problème matériel… Ce qui a sauvé cet ingénieur est le fameux « coredump », le fichier contenant la copie de la mémoire vive généré par Windows en cas de plantage sévère (désactivé par défaut). En analysant ce coredump, il s’est rendu compte que les instructions que lui renvoyait son debugger lorsqu’il traçait le programme n’étaient pas les instructions qui étaient réellement en mémoire – un rootkit, HackerDefender, était installé dans le kernel et cachait sa présence. C’est un bug dans le rootkit qui faisait planter Windows.

Le second et certainement le plus scandaleux, est celui reporté par Mark Russinovich de Sysinternals (détails sur cette page). Voici un résumé de son histoire : un jour, un programme basique de détection de rootkits trouve la présence de 12 fichiers cachés par un rootkit (ainsi que 10 clés de la base de registre).


Il se lance donc dans une enquête très technique qui aboutit, à sa grande surprise,à la conclusion suivante : le rootkit en question est édité par une société appelée « First 4 Internet » qui fabrique des logiciels de DRM, autrement dit de protection des droits numériques. Ce logiciel s’était installé sur son système au moment où il avait voulu écouter le dernier CD qu’il avait acheté : « Get Right with the Man » des Van Zant brothers, édité par Sony BMG. Ce CD était protégé par la copie, mais bien évidemment nulle part dans les conditions d’utilisation il était indiqué que cette protection incluait un rootkit. Non seulement ce logiciel avait patché le kernel de Windows, mais en plus il lançait un programme qui scannait tous les programmes en cours d’exécution huit fois chacun toutes les deux secondes. Autrement dit, ce programme lui bouffait des ressources machine pour éviter que le gentil consommateur qu’il était ne puisse lancer un programme de copie de CD (même une fois le CD audio original retiré du PC). Dans son article, Mark indique qu’il était « en rage ». Il s’est donc lancé dans la difficile tâche de supprimer ce rootkit manuellement, puisqu’aucun désinstalleur n’était fourni… et a fini par complètement perdre l’accès à son lecteur CD qui n’apparaissait plus dans le Poste de travail.

Le plus gagesque est certainement que le rootkit se contente simplement de cacher au système les fichier dont le nom commence par « $sys$ ». Ceci implique une énorme faille de sécurité : comme l’indique un contributeur sur Slashdot, il suffit à un petit malin de créer un virus dont les noms de fichiers commencent par « $sys$ » pour être protégé des antivirus par le système anti-DRM de Sony. D’un autre côté, pour savoir si le rootkit est installé sur votre PC il suffit de renommer un fichier en $sys$ quelque chose (s’il disparait de la liste des fichiers, vous l’avez). Sans compter que personne ne sait exactement ce que fait cette protection. Peut-être envoie-t-elle par internet la liste des fichiers musicaux qu’elle trouve sur le PC ? Enfin, sachez que ce rootkit se lance même en mode sans échec, ce qui signifie que si jamais un jour il se met à bugger sérieusement votre système sera irrémédiablement perdu (une réinstallation complète sera nécessaire).

Pour Mark, l’aventure s’est finalement bien terminée mais il dit qu’il ne mettra plus jamais un seul CD protégé contre la copie dans son PC. Des lecteurs lui conseillent de porter plainte contre Sony, d’autres signalent que son article est en violation de la DMCA (la loi américaine interdisant de contourner un dispositif anti-copie). Pour ma part, j’ai toujours boycotté les CD protégé contre la copie et je vous invite à faire de même.

Ce n’est que le début des applications à grande échelle des rootkits. On peut imaginer dans un futur très proche que des rootkits permettant d’intercepter les frappes au clavier, des informations personnelles et d’autres choses encore commencent à circuler à grande échelle (c’est déjà le cas à petite échelle mais au contraire des virus, les rootkits ne se reproduisent pas… encore). Les utilisateurs que nous sommes sont complètement démunis contre ces attaques, surtout quand elles adviennent dans un contexte où l’utilisateur est en situation de confiance vis-à-vis de l’attaquant (cas du CD Sony-BMG). De son côté, Microsoft a prévenu que toute tentative de patcher le kernel dans Windows Vista – la prochaine version de Windows – se solderait par un plantage immédiat du système. Mais peut-on faire confiance à Microsoft, quand on sait que des multinationales (majors de la musique et du cinéma) font pression sur eux pour prendre le contrôle de nos PC ? Et les agences gouvernementales américaines qui traquent les terroristes, ne font-elles aucune pression non plus ?

Un interview sur les rootkits
rootkit.com
Liste des CD Sony protégés par un rootkit
Démonstration de la dernière version de Hacker Defender qui nique tout les détecteurs de rootkits actuels et récupère les mots de passe tapés au clavier (vidéo)

Les commentaires sont fermés.