# Rootkit Unhooker

Rootkit Unhooker, également connu sous les noms de RkU et de RkUnhooker est un anti-rootkit, un H-IDS (utilitaire de détection des intrusions à usage individuel) pour Microsoft Windows, gracieusement mis à disposition des utilisateurs « en l'état » et pour une utilisation à leurs risques et périls.
Au premier trimestre 2007, il peut être considéré comme le meilleur anti-rootkit de sa catégorie qui comporte pourtant d'excellents utilitaires comme DarkSpy, Gmer, IceSword, et leur ancêtre : RootkitRevealer.
Partant du principe qu'aucun utilitaire actuel ne peut garantir une détection totale de toutes les variétés de rootkits présents et à venir, RkUnhooker peut être le complément d'outils de prévention d'intrusion comme « Antihook » ou Winpooch ou des versions récentes d'utilitaires commerciaux comme Nod32, F-Secure, Kaspersky, etc.
Pour ceux qui n'ont encore qu'un antivirus et un pare-feu classiques, RkUnhooker peut même se situer à la base du système de protection contre les rootkits.

## Les auteurs

Rootkit Unhooker est un produit de UG North – Web-development. Des informaticiens connus sous les pseudonymes de « EP_X0FF » (« EvilPhantasy« ), « MP_ART » , « < DnY > » ... participent à son développement.

## Description

L'essentiel de son développement s'est fait au second semestre 2006 et au début de 2007.
Par rapport à d'autres anti-rootkits, RkU apporte une capacité supérieure de détection des fichiers cachés et des modifications effectuées dans le noyau grâce, entre autres, à :
* ses consultations « à bas niveau » des fichiers systèmes en leur état original sur le disque dur pour une comparaison avec les éléments en mémoire ;
* des recherches de crochets (hooks) effectués par les processus et drivers en cours d'exécution...
** dans de nombreuses tables de travail du système Windows, « IAT » (Import Address Table), SSDT, GDT, IDT ...
** dans les IRP (I/O request packets) et les « ADS » (Alternate Data Stream) ;
* la détection des »inline hooks« , quand un processus, driver ou bibliothèque logicielle modifie le »code« d'un autre processus, driver ou bibliothèque logicielle, généralement en y remplaçant certaines instructions par des instructions de détournement vers un nouveau traitement – 'handler' - sous contrôle du rootkit, par le biais d'une fonction de rappel asynchrone (asynchronous callback subroutine).
RkUnhooker offre plusieurs solutions pour analyser les intrusions et les réparer ...
* Établissement d'un rapport complet des crochetages détectés ;
* Possibilité de dump (enregistrement sur le disque sous forme de fichier) d'un composant du système altéré en mémoire, pour une analyse approfondie ;
* Restauration des éléments crochetés du noyau : « décrochage » et remise en leur état original ;
* Broyage des fichiers malsains découverts.

## Environnement et installation

RhUnhooker fonctionne avec des processeurs x86 32 bits et les systèmes d'exploitation Windows 2000 SP4, Windows XP +SP1, SP2 et Windows 2003 +SP1.
En usage ordinaire, il consomme très peu de ressources et convient donc à pratiquement tous les PC. Cependant, lors de certains scans (à la recherche sur le disque de fichiers cachés) il peut utiliser jusqu'à une centaine de Mo.
RkU requiert une installation très légère qui s'effectue en automatique à la racine du disque système dans un répertoire «RkUnhooker» où son exécutable est généré sous un nom aléatoire pour éviter certaines variantes d'attaques faites par les malwares contre les utilitaires de défense. Dans ce répertoire se trouve également son utilitaire de désinstallation et il est possible d'y ajouter les fichiers .dll d'interface et .chm d'aide en français.
Il place le driver «rkhdrv31.sys» dans le répertoire %SystemRoot%\System32\Drivers et implante ses clés dans le Registre Windows (HKLM Legacy et Services). Ce driver s'exécute en mode noyau (ring0).

## Précautions avant le lancement

Dans certaines conditions d'utilisation, par exemple en présence d'outils actifs de défense du noyau ou du registre de Windows, Rootkit Unhooker, ne peut pas fonctionner normalement et parfois même pas être lancé. Dans un environnement système complexe, il peut encore y avoir des conflits avec d'autres logiciels. En cas de problème, vous devrez vérifier votre système et essayer de neutraliser ou même désinstaller le logiciel de sécurité qui s'oppose au fonctionnement de RkU.
Sous peine de risquer un écran bleu de la mort,
* ne jamais essayer de déboguer RkUnhooker avec des outils comme SoftICE ou WinDbg car, naturellement, des fonctionnalités anti-debugg sont incluses ;
* n'appliquer à RkU aucun outil de rétro-ingénierie.

### Avant d'utiliser RkUnhooker

* L'utilisateur doit impérativement savoir quels logiciels il a installé sur son PC et qui sont en fonction. En effet, RkUnhooker va détecter la présence de tous ces logiciels et surtout des crochetages « sains » effectués par bon nombre d'entre eux ;
* En cas de doute sur l'authenticité d'un des logiciels ou d'un service Windows, il faut effectuer des vérifications complémentaires avant d'agir, se méfier des fausses alertes ;
* Pour éviter de nombreuses confusions possibles, il est souvent préférable d'interrompre la connexion à Internet et de procéder à la désactivation des logiciels de sécurité (pare-feu, antivirus, etc.) ainsi que celui des logiciels et services volontairement installés. Au besoin, il est possible d'utiliser pour cela le module [Démarrage] de »Seem« seem.about.free.fr.

## Modules de détection des crochets et intrusions

Rappel ... Dans tous les cas de figure, les listes établies portent sur l'ensemble des éléments cachés ou des modules crochetés, qu'ils le soient par des logiciels désirés (pare-feu, antivirus, Alcohol\Daemon Tools, Skype etc.) ou par des malwares.
* SSDT Détecteur de crochetages/Restaurateur
RkU vous montre l'état de la « SSDT », quelles fonctions (également appelées 'services' dans la terminologie de Microsoft) sont crochetés, et permet de les décrocher. Quand RkU décroche une fonction, il remplace l'adresse du crochet par l'originale. Des paramètres (Setup) permettent de limiter la liste aux seuls crochets effectués dans les fonctions de la « SSDT » ou à celles qui sont effectuées depuis un « handler » situé hors du noyau. Il est possible de procéder au « décrochage » d'un des éléments listés ou de l'ensemble.
* Détecteur de processus cachés
Cette liste comporte des processus ordinaires mais aussi ceux qui sont invisibles des utilitaires ordinaires comme Task Manager, Process Explorer etc. De nombreuses fonctions sont disponibles pour un processus sélectionné, depuis l'arrêt simple ou son « arrêt forcé » jusqu'au broyage du fichier sur le disque en passant par une possibilité de « dump ».
* Détecteur des drivers cachés
Les fonctions disponibles portent essentiellement sur la copie, « dump » d'un driver sélectionné et sur son éventuel broyage sur le disque.
* Détecteur des fichiers cachés
La recherche s'effectue « à bas niveau » sur le disque et une comparaison est faite avec la liste obtenue de manière classique. Elle peut s'avérer très longue sur des disques de forte capacité. Il faut être patient ou limiter la recherche à la partition système. Dans les versions récentes, une nouvelle technique inspirée par le « FileReg » de IceSword a été implantée.
* Détecteur de 'Code Hooks'
Une autre tactique des rootkits malintentionnés est le camouflage par crochetage des fonctions API de Windows. RkU peut détecter cette méthode furtive en comparant l'image et l'intégrité du 'code' en mémoire avec les originaux du système. De plus, RkU contrôle également les principaux composants du système d'exploitation comme les drivers des disques et du réseau. RkU peut restaurer le 'code' original par remplacement de celui qui est en mémoire.
Attention : dans certains cas ceci peut entraîner un 'BSoD' (écran bleu de la mort) et un redémarrage du PC.
Catégories de crochetages détectés:
* Inline - existent en mode noyau (KernelMode) et en mode utilisateur (User Mode). Le processus ou le driver intrus injectent leur propre 'code' dans le corps de la fonction crochetée, provoquant un renvoi vers leur 'handler'. Cette technique peut également s'appliquer aux drivers sans détournement d'adresse : c'est le 'IRP inline hooking'.
Difficulté de détection – variable, de moyenne à très difficile.
* IAT - existent en mode noyau et en mode utilisateur. Le processus ou le driver intrusremplce l'adresse des fonctions par la sienne en modifiant la 'Import Table'. Ce type de crochetage se fait presque seulement en mode utilisateur.
Difficulté de détection – variable, de très facile à facile.
* Syscall - System Call - Appel système, instruction (ou interruption) spéciale utilisée par le système opératoire pour les transferts du mode utilisateur vers le mode noyau. L'intrus remplace l'adresse de destination par celle de son 'handler'. Ce type de crochetage peut être combiné avec le 'Inline'.
Difficulté de détection – variable, de très facile à moyenne.
* Rapport
L'établissement d'un rapport peut servir à une analyse complète par chacun des crochetages à tête reposée. Il sera aussi le bienvenu pour ceux qui veulent aider au tri entre les divers crochets pour déterminer ceux qui proviennent d'intrus indésirables. Plusieurs options sont possibles dont un choix du(des) types de crochets à rechercher et une sélection du(des) disques à scanner à la recherche de fichiers cachés.

## RkU Test Rootkit et Unreal

Pour faire progresser son H-IDS, l'équipe de Rootkit Unhooker imagine des méthodes de contournement PoC puis les met en pratique par des rootkits de démonstration inoffensifs que chacun peut utiliser pour vérifier l'efficacité de ses défenses. RkUnhooker est alors amélioré pour contrer ces méthodes d'intrusion