On le trouve maintenant régulièrement dans diverses infections comme par exemple : Win32.Packed.Tibs / Win32.Email-Worm.Zhelatin
Démonstration des dangers des rookits
La démonstration se présente sur une machine où l'on peut voir :
capt 1. - Kaspersky ne détecte aucun code malicieux dans le dossier system32 de Windows

capt 2. - Rien de bien extraordinaire sur le rapport HijackThis.
Notez bien les lignes 023 (les services Windows)

capt 3. - Enfin Process Explorer ne montre aucun processus malicieux en cours d'execution.

Maintenant effectuons un scan avec le logiciel anti-rootkit gmer
Les éléments en rouge appartiennent à des rootkits. nous vous pouvons voir :
- des modules chargés au niveau du noyau (kernel) Windows
- un processus (Process) et une library (librairie): C:\Windows\System32\koos.exe
- un service pe386
Si vous regardez la fenêtre en dessous, nous constatons que le fichier C:\Windows\System32\koos.exe n'est pas présent.
Si l'on se reporte aux captures présentes, on peut voir aussi que :
- sur la capt 2 - Le rapport HijackThis n'a pas mentionné de service pe386
- sur la capt 3 - Process Explorer ne mentionne pas de processus koos.exe

L'onglet Processes de gmer montre bien que le processus koos est en cours d'execution... il apparaît en rouge car il est caché.

IceSword nous montre, en haut à droite, que le processus koos a établi une connexion vers le 80 sur l'adresse 64.92.165.150.. pire encore.. la ligne TCP 0.0.0.0:29291 0.0.0.0.0 LISTENING nous montre que le port 29291 est en écoute.
La commande netstat -ano nous le confirme... Le processus à l'origine de la connexion et du port possede le PID 1040.. seulement si vous regardez dans la partie gauche sur les gestionnaire de tâches (taskmgr), vous verrez qu'aucun processus avec le PID 1040 n'est visible.
Ce rootkit donne donc la possibilité aux pirates de se connecter sur l'ordinateur sur lequel le rootkit est présent.

A partir de gmer.. j'ai supprimé divers éléments du rootkit (service/modules).
A partir d'IceSword, j'ai copié le fichier koos.exe sur le bureau et laissé celui d'origine en place dans system32.
On peut voir que même en copiant le fichier, ce dernier n'est toujours pas visible (capture de gauche).
Cela vient du fait que le driver qui masque le fichier est encore actif.. il faut redémarrer Windows pour qu'il ne se charge plus au démarrage.

Après redémarrage, le fichier est visible et l'antivirus détecte le fichier utilisé par le rootkit, le rootkit est en fait Trojan.Wopla

Conclusion de la démonstration
Nous venons de voir que les rootkits sont un vrai danger puisqu'ils sont capables de se dissimuler au sein du système de l'utilisateur mais aussi des autres programmes, les antivirus y compris.
Ceci permet donc une fois installé de n'éveiller aucun soupçon et effectuer les opérations pour lesquelles le rootkit a été programmé.
Une fois installé, le rootkit est le maître du système et peut faire ce pour quoi il a été programmé comme :
- Ouvrir un accès aux pirates(port ouvert)
- Transformer l'ordinateur en machine à envoyer des spams et ceci à l'insu du firewall
- Désactiver/supprimer les antivirus/firewall, c'est par exemple le cas de : Win32.Bagle
- Télécharger & installer d'autres malwares
- etc..
Tant que le rootkit est actif, les fichiers ne seront pas visibles et non détectés par l'antivirus, une fois le mécanisme désactivé, les fichiers deviennent visible et l'antivirus peut faire son travail.
Voici une vidéo issu du site de Gmer qui montre aussi comment un rootkit peut se cacher d'un antivirus : http://www.gmer.net/kav6.wmv
Autre vidéo avec l'infection Trojan.Win32.Alureon/Trojan.TDSS
ou une autre vidéo avec le malware Trojan.Carberp :
Le fonctionnement des rootkits
Cette partie décrit comment les rootkits font pour se cacher au sein du système. Seront abordés les rootkits kernel-mode qui fonctionnent au niveau du noyau et non les rootkits user-land.
Certaines parties peuvent être techniques, elles sont donc destinées à un certain public.
Avant de commencer, quelques définitions :
Les API Windows : Ce sont des fonctions utilisées en programmation, il en existe plusieurs catégories.
Certaines catégories permettent d'intéragir avec le système d'exploitation, à savoir obtenir l'accès aux systèmes de fichiers, aux processus, au registre Windows, au réseau etc.. Concrètement dans notre cas, lorsqu'un programme désire lister des processus, fichiers au lieu d'écrire un bout de code, Microsoft a mis à disposition des développeurs ces API pour se faire.
Appels Système - Syscall : Lorsqu'un programme fait un appel à un API via l'instruction CALL
Table SSDT - System Service Descriptor Table : c'est la table qui contient l'adresse des API.
Lorsqu'un appel système est fait.. Windows regarde dans la table SDDT l'adresse de l'API afin de diriger l'appel système vers l'API afin de pouvoir l'executer.
Voici ce qui se passe lorsqu'un programme (Antivirus, gestionnaire de tâches) désire obtenir la liste des processus en cours, le programme fait un appel système, Windows regarde dans la table SSDT l'adresse de cet API puis l'execute.
Vous obtenez alors la liste des processus.
De même pour la liste des fichiers dans un répertoire etc..

Maintenant que font les rootkits ?
Ils vont tout simplement altérer la table SSDT (hook) afin de rediriger les appels systèmes non plus vers les API Windows mais vers leurs "propres API" afin de fausser le résultat.
Dès lors, lorsque vous désirez lister les processus en cours.. Windows va toujours regarder la table SSDT mais l'adresse de l'API a été modifiée par le rootkit et pointe maintenant vers son code, le rootkit n'a plus qu'à renvoyer la liste des processus SAUF le sien. Il est maintenant invisible.
De même pour les fichiers dans le répertoire etc..

Un rootkit kernel-mode est toujours composé d'au moins un driver (.sys en général), le driver est chargé via un service.
Le fichier driver est bien sûr caché au niveau du disque et le service n'est pas présent dans service.msc, ni via la base de registre (regedit) : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
Voici quelques exemples de rootkits courants :
- Rootkit Userland - Une variante de Zlob / Trojan.DNS (fichier kdxxxx.exe) qui est un rootkit assez répandu effectuant des redirections lors des recherches sur Google
- Rootkit Kernel-mode - Haxdoor/Goldun
- Rootkit Kernel-mode - Email-Worm.Win32.Zhelatin.a / Rootkit.Agent.dh / Trojan.Peacomm avec le driver caché : C:\Windows\System32\wincom32.sys
- Rootkit Kernel-mode - Rootkit.Win32.Agent.ea
Les bootkits (Rootkit MBR)
Les bootkits sont des rootkits qui se logent dans le MBR (Master Boot Record), c'est à dire l'amplacement du charge du système d'exploitation ceci afin d'être actif le plus tôt possible.
Pour plus d'informations sur les bootkits, se reporter à la page : Les bootkits.