5.4. Les Rootkits

Le rootkit est un programme permettant d'automatiser la dissimulation et l'effacement des traces d'un pirate sur une machine. L'objectif d'un rootkit est de modifier les commandes permettant d'administrer le système, de cacher les ports ouverts par le pirate.

Les premiers rootkits étaient assez basiques, ils modifiaient juste les commandes ls, ps, netstat.

L'administrateur pouvait détecter ces modifications sur les logiciels concernés. Alors une seconde génération de rootkits apparut. Il faut savoir que des commandes comme ps, ls ... font appels à des bibliothèques partagées pour fonctionner. Les nouveaux rootkits modifiaient donc le code de ces bibliothèques pour modifier le comportement de ces commandes à l'avantage du pirate.

Encore une fois, ceci était détectable. Donc une troisième génération de rootkits est née afin de modifier directement le comportement du noyau, par le biais de modules chargés en mémoire (LKM). C'est à l'heure actuelle la dernière génération.

Différents rootkits sont disponibles sur Linux.

Je ne donnerai (volontairement) pas dans cette partie une description complète de l'utilisation des rootkits. Cela n'a aucun intérêt pour ce guide.

La plupart des rootkits utilisent le principe des backdoors (Section 5.3, « Les backdoors ») pour permettre au pirate de se connecter selon son envie sur un système.

5.4.1. Comment s'en protéger ?

  1. Les checksums. Une base de données de checksums sur les différents fichiers système peut déjà constituer une bonne parade. Je vous conseille d'effectuer des checksums à la fin d'une installation sur les différents fichiers comme ls, ps, stat ifconfig, etc. et sur les différentes bibliothèques partagées.

    Cette base de donnée devrait être stockée sur un CDROM ou tout autre support non réinscriptible.

  2. Compiler les programmes vitaux en statique. Comme je l'ai dit précédemment, certaines commandes font appels à des librairies partagées et des utilitaires comme "md5sum" (qui sert à faire des checksums) sous Linux font appels à des librairies partagées. D'où son comportement pourrait être modifié indirectement par un rootkit attaquant les librairies partagées. Pour éviter ce genre de désagrément, compilez une partie des programmes vitaux en statique, ainsi vous disposerez d'une trousse de secours en cas d'infection par rootkits.

    Bien sûr, pour compiler les programmes vitaux en statique, faut-il encore disposer d'un OS qui permette d'accéder aux sources de ces programmes vitaux...

  3. Chkrootkit. Chkrootkit (pour CHecK ROOTKIT) vous permet de détecter la présence d'un rootkit, il fonctionne sous Linux (FreeBsd...) et est téléchargeable librement sur www.chkrootkit.org.

  4. Compilez votre noyau en statique. Vous éviterez ainsi le chargement de modules externes.