LES ROOTKITS

Les rootkits : définition

Les auteurs de virus ont toujours fait face à un sempiternel problème : comment conserver la présence des codes malicieux le plus longtemps possible à l'insu des utilisateurs et des solutions antivirus? Cette question est d'autant plus actuelle que ces derniers temps, l'écriture de programmes malfaisants n'est plus tellement une affaire de développement personnel mais de business. Effacer ces traces est donc le thème en vogue pour les pirates hommes d'affaires. Par quels moyens peut-on cacher un programme voleur de données bancaires ou encore un serveur proxy illégal destiné à la diffusion de spams depuis l'ordinateur d'une victime?

Les cyber escrocs d'aujourd'hui règlent ce problème de la même façon que les réglaient les cyber hooligans il y a 10-15 ans. Un des premiers virus connus pour PC, Virus.Boot.Brain.a (un virus du secteur de boot qui s'octroyait les fonctions d'accès au disque et lors de la lecture du secteur de démarrage, par exemple du programme antivirus), substituait les données originales par des données infectées. Avec le temps, ces mêmes mécanismes furtifs (l'interception des fonctions système et substitution des données) ont continué d'être utilisés dans les virus Windows.

Ces derniers temps, l'utilisation des technologies de rootkit pour masquer la présence de logiciels malfaisants est de plus en plus populaire. Cette croissance est, entre autres, favorisée par le fait que la majorité des utilisateurs de système d'exploitation Windows travaille avec les droits Administrateur, ce qui facilite grandement l'installation de rootkits dans ces ordinateurs.

Un rootkit (mot emprunté au monde Unix/Linux) est un parasite permettant de s'octroyer des droits "Root", c'est-à-dire les niveaux de droits les plus élevés de l'administrateur d'une machine pour en prendre le contrôle tout en restant furtif.

Sous Windows, la violation du système est beaucoup plus aisée que sous Linux et un rootkit (au sens originel du mot) n'est pas nécessaire pour en prendre le contrôle, d'autant que la très grande majorité des utilisateurs Windows, malgré les avertissements des sites de sécurité, travaille encore et toujours directement en mode administrateur.

Les rootkits visant Windows ont donc évolué pour devenir une sorte de boîte à outils, permettant aux pirates d'implanter des parasites (qui vont leur faciliter la prise de contrôle et la zombification de l'ordinateur infecté) et surtout, de les rendre totalement invisibles grâce à des hookers.

Les rootkits nécessitent une très haute technicité en informatique et ne sont donc à la portée que d'utilisateurs extrêmement avancés. Hormis dans les laboratoires, de tels techniciens ne se retrouvent que dans les mafias. Les mafias russes sont de grands utilisateurs de rootkits.

La force des rootkits, hormis leur furtivité, est que, si le ou les parasites implantés par eux sont détectés et éradiqués, le rootkit lui-même ne l'est pas ! Il va permettre de compromettre à nouveau la machine, encore et encore.

Qu'est-ce qu'un hooker ?

Il s'agit d'un élément de la boîte à outils que constitue le rootkit actuel et qui permet d'intercepter, de bloquer, voire de modifier au passage, une instruction ou un morceau de code.

Un parasite peut donc s'autoprotéger en bloquant une demande d'éradication (antivirus, gestionnaire de tâches, ...), en modifiant la réponse à cette demande pour faire croire qu'elle a abouti, en arrêtant le processus qui a fait cette demande, en se rendant invisible, ...

Qu'est-ce qu'un ordinateur zombie ?

C'est un ordinateur connecté à Internet, compromis par un pirate l'ayant infecté, et qui accomplit des tâches malveillantes à l'insu de son propriétaire.

Est-il besoin de préciser que la quasi totalité des PC zombies tournent sous Windows ? Des groupes crapuleux se sont même spécialisés dans la zombification de PC et leur mise en réseau (Botnets) qu'ils louent ainsi à d'autres gangsters.

Certains estime que 30% des PC dans le monde seraient sous contrôle mafieux ! De même, 30% à 50% du spam mondial utiliserait ces réseaux zombifiés pour se diffuser !

Effrayant !

Fonctionnement

Le fonctionnement d'un rootkit est un peu complexe pour l'utilisateur débutant, mais, pour être complet, je me dois de le détailler ici.

Windows travaille selon deux modes : le mode utilisateur (User mode) et le mode noyau (Kernel mode). La plupart des applications travaillent en mode utilisateur : Word, gestionnaire des tâches, Outlook ...

Le mode noyau est réservé pour les accès aux périphériques, à la mémoire RAM et, d’une manière générale, au matériel. Une autre partie du noyau est destinée à répondre aux appels des différents programmes du mode utilisateur.

Windows propose un éventail de fonction permettant aux applications de fonctionner. Cet éventail est nommé API.

Un programme en mode utilisateur qui souhaite ouvrir un fichier va utiliser une fonction (API) nommée OpenFile(). Cette fontion fera appel à la fonction plus primitive NtOpenFile() contenue dans ntdll.dll qui elle-même fera appel à une fonction en mode noyau nommée ZwOpenFile() qui sera exécuté par ntoskrnl.exe.

Il existe différents types de rootkits qui vont agir en mode utilisateur au niveau de NtOpenFile() et d’autres en mode kernel au niveau de ZwOpenFile(). Ces rootkits peuvent être persistants en s'installant définitivement sur le système ou simplement résidents, ce qui complique leur détection.

Techniquement, ils placent des crochets d'interceptions (hooks), soit sur les fonctions de ntdll.dll grâce à une dll, soit sur les fonctions du noyau, grâce à un driver, en modifiant une table en mémoire nommée SSDT (System Service Descriptor Table). Cette table contient les emplacements mémoires des fonctions du noyau Windows.

Ces techniques permettent de rediriger les adresses des fonctions vers l'espace mémoire des rootkits afin de modifier la réponse qui sera renvoyé au programme appellant.

Un rootkit est donc généralement composé :

  • d’un driver : xxx.sys (Kernel mode)
  • d’une .dll : xxx.dll (User mode)
  • d’un programme : xxx.exe
  • d’un fichier de configuration : xxx.ini

Il est également possible, pour certains rootkits, de réaliser un détournement des fonctions du noyau sans modifier cette fameuse SSDT. Ainsi aucune anomalie n'est visible dans cette table. Cette méthode consiste à modifier directement la fonction en mémoire en y ajoutant quelques segments de codes pour réaliser une redirection. On pourrait résumer cette manipulation par de l'injection de code en mémoire centrale.

L'article complet dont je me suis inspiré pour introduire ce sujet, et qui donne quelques exemples en images, est disponible ici.

Comment les détecter ?

Quelques solutions existent et font leurs preuves.

Des outils comme Seem ou Gmer permettent de contrôler la validité de la SSDT (System Service Descriptor Table), d’afficher les processus cachés ou encore de lister les fichiers cachés. En théorie le composant qui doit pointer dans la SSDT se nomme ntoskrnl.exe.

Donc si d'autres programmes ou drivers gèrent cette fonction, cela peut indiquer un détournement hostile. Il faut cependant noter que certains programmes modifient cette SSDT afin de fonctionner correctement. Les anti-virus, certains pare-feu ainsi que d'autres programmes comme DeamonTools, agissent de la sorte.

Il faut donc faire la différence entre les drivers fournis par des logiciels sains et les drivers issus de rootkits. Une simple recherche par le nom du driver sur Google donne souvent des pistes de recherche en cas de doute.

Comment se protéger ?

Il n'existe pas de solution miracle. Néanmoins l'utilisation conjointe d'un antivirus et d’un pare-feu reste fortement conseillée.

Malgré tous les types de protection possibles, il existe des rootkits qui patchent la SSDT, neutralisant ainsi le bon fonctionnement des logiciels de protection pour s'installer en toute impunité.

Dans tous les cas, l'installation d'un rootkit fait suite à une action humaine. Que ce soit l'exécution d'une pièce jointe, d'un email ou une réponse affirmative à l'exécution d'un script d'une page internet, une simple action anodine peut engendrer de gros dégâts.

Leur installation peut également se réaliser grâce à une faille de sécurité, il est donc indispensable que le système soit à jour.

Il existe aussi des logiciels permettant de contrôler les modifications de la table SSDT, de contrôler l'exécution des programmes, ... Seem et Gmer, déjà cités, mais aussi :


Les rapports générés par ces outils sont à analyser avec prudence car les faux-positifs sont beaucoup plus nombreux qu'avec les scanners antivirus ou antimalwares. Si vous êtes néophyte, demandez l'avis d'une personne qualifiée.

Le cas du rootkit pe386 et sa méthode d'éradication sont discutés ici.








mykerinos.net 2007 | dernière mise à jour le 03.02.2007