RootkitRevealer v1.71

Par Mark Russinovich

Date de publication : 1 novembre 2006

DownloadTélécharger RootkitRevealer(231 Ko)
Exécutez maintenant à partir de Sysinternals Live.

Introduction

RootkitRevealer est un utilitaire de détection de rootkit avancé. Il s’exécute sur Windows XP (32 bits) et Windows Server 2003 (32 bits), et sa sortie répertorie les différences de Registre et d’API du système de fichiers qui peuvent indiquer la présence d’un rootkit en mode utilisateur ou en mode noyau. RootkitRevealer détecte correctement de nombreux rootkits persistants, notamment AFX, Vanquish et HackerDefender (remarque : RootkitRevealer n’est pas destiné à détecter les rootkits comme Fu qui ne tentent pas de masquer leurs fichiers ou clés de Registre). Si vous l’utilisez pour identifier la présence d’un rootkit, faites-le nous savoir.

La raison pour laquelle il n’existe plus de version en ligne de commande est que les auteurs de programmes malveillants ont commencé à cibler l’analyse de RootkitRevealer à l’aide de son nom exécutable. Nous avons donc mis à jour RootkitRevealer pour exécuter son analyse à partir d’une copie nommée aléatoirement de lui-même qui s’exécute en tant que service Windows. Ce type d’exécution n’est pas propice à une interface de ligne de commande. Notez que vous pouvez utiliser les options de ligne de commande pour exécuter une analyse automatique avec les résultats enregistrés dans un fichier, ce qui est l’équivalent du comportement de la version de ligne de commande.

Qu’est-ce qu’un rootkit ?

Le terme rootkit est utilisé pour décrire les mécanismes et techniques par lesquels les programmes malveillants, notamment les virus, les logiciels espions et les chevaux de Troie, tentent de masquer leur présence aux bloqueurs de logiciels espions, aux antivirus et aux utilitaires de gestion du système. Il existe plusieurs classifications de rootkit selon que le programme malveillant survive au redémarrage et s’il s’exécute en mode utilisateur ou en mode noyau.

Rootkits persistants
Un rootkit persistant est associé à un programme malveillant qui s’active chaque fois que le système démarre. Étant donné que ces programmes malveillants contiennent du code qui doit être exécuté automatiquement à chaque démarrage du système ou lorsqu’un utilisateur se connecte, ils doivent stocker le code dans un magasin persistant, tel que le Registre ou le système de fichiers, et configurer une méthode par laquelle le code s’exécute sans intervention de l’utilisateur.

Rootkits basés sur la mémoire
Les rootkits basés sur la mémoire sont des programmes malveillants qui n’ont pas de code persistant et ne survivent donc pas à un redémarrage.

Rootkits en mode utilisateur
Il existe de nombreuses méthodes par lesquelles les rootkits tentent d’échapper à la détection. Par exemple, un rootkit en mode utilisateur peut intercepter tous les appels aux API Windows FindFirstFile/FindNextFile, qui sont utilisées par les utilitaires d’exploration du système de fichiers, notamment Explorer et l’invite de commandes, pour énumérer le contenu des répertoires du système de fichiers. Lorsqu’une application effectue une liste de répertoires qui retourne des résultats contenant des entrées identifiant les fichiers associés au rootkit, le rootkit intercepte et modifie la sortie pour supprimer les entrées.

L’API native Windows sert d’interface entre les clients en mode utilisateur et les services en mode noyau et les rootkits en mode utilisateur plus sophistiqués interceptent le système de fichiers, le Registre et les fonctions d’énumération de processus de l’API native. Cela empêche leur détection par des analyseurs qui comparent les résultats d’une énumération d’API Windows à ceux retournés par une énumération d’API native.

Rootkits en mode noyau
Les rootkits en mode noyau peuvent être encore plus puissants, car non seulement ils peuvent intercepter l’API native en mode noyau, mais ils peuvent également manipuler directement les structures de données en mode noyau. Une technique courante pour masquer la présence d’un processus de programme malveillant consiste à supprimer le processus de la liste des processus actifs du noyau. Étant donné que les API de gestion des processus s’appuient sur le contenu de la liste, le processus de programme malveillant ne s’affiche pas dans les outils de gestion des processus tels que le Gestionnaire des tâches ou l’Explorateur de processus.

Fonctionnement de RootkitRevealer

Étant donné que les rootkits persistants fonctionnent en modifiant les résultats de l’API afin qu’une vue système utilisant des API diffère de la vue réelle dans le stockage, RootkitRevealer compare les résultats d’une analyse système au niveau le plus élevé avec ceux du niveau le plus bas. Le niveau le plus élevé est l’API Windows et le niveau le plus bas est le contenu brut d’un volume de système de fichiers ou d’une hive du Registre (un fichier hive est le format de stockage sur disque du Registre). Ainsi, les rootkits en mode utilisateur ou en mode noyau qui manipulent l’API Windows ou l’API native pour supprimer leur présence d’une liste de répertoires, par exemple, seront vus par RootkitRevealer comme une différence entre les informations retournées par l’API Windows et celles observées dans l’analyse brute des structures du système de fichiers d’un volume FAT ou NTFS.

Un rootkit peut-il se masquer de RootkitRevealer
Il est théoriquement possible pour un rootkit de se masquer de RootkitRevealer. Pour ce faire, il devrait intercepter les lectures de RootkitRevealer des données de hive du Registre ou des données du système de fichiers et modifier le contenu des données de sorte que les données du Registre ou les fichiers du rootkit ne soient pas présents. Toutefois, cela nécessiterait un niveau de sophistication qui n’a pas été observé dans les rootkits à ce jour. Les modifications apportées aux données nécessitent à la fois une connaissance approfondie des formats NTFS, FAT et hive du Registre, ainsi que la possibilité de modifier les structures de données de sorte qu’elles masquent le rootkit, mais ne provoquent pas de structures incohérentes ou non valides ou des différences d’effet secondaire qui seraient signalées par RootkitRevealer.

Existe-t-il un moyen sûr de connaître la présence d’un rootkit
En général, pas à partir d’un système en cours d’exécution. Un rootkit en mode noyau peut contrôler n’importe quel aspect du comportement d’un système afin que les informations retournées par n’importe quelle API, y compris les lectures brutes de la hive du Registre et des données du système de fichiers effectuées par RootkitRevealer, puissent être compromises. Bien qu’il soit plus fiable de comparer une analyse en ligne d’un système et une analyse hors ligne à partir d’un environnement sécurisé, tel qu’un démarrage dans une installation de système d’exploitation sur CD, les Rootkits peuvent cibler ces outils pour échapper à la détection.

L’essentiel est qu’il n’y aura jamais d’analyseur rootkit universel, mais les analyseurs les plus puissants seront des analyseurs de comparaison en ligne/hors ligne qui s’intègrent à l’antivirus.

Utilisation de RootkitRevealer

RootkitRevealer exige que le compte à partir duquel il s’exécute ait reçu les privilèges Fichiers et répertoires de sauvegarde, Charger les pilotes et Effectuer les tâches de maintenance en volume (sur Windows XP et versions ultérieures). Ces privilèges sont attribués par défaut au groupe Administrateurs. Pour réduire les faux positifs, exécutez RootkitRevealer sur un système inactif.

Pour de meilleurs résultats, quittez toutes les applications et laissez le système inactif pendant le processus d’analyse de RootkitRevealer.

Si vous avez des questions ou des problèmes, visitez le forum Sysinternals RootkitRevealer.

Analyse manuelle

Pour analyser un système, lancez-le sur le système et appuyez sur le bouton Analyser. RootkitRevealer analyse le système pour signaler ses actions dans une zone d’état en bas de sa fenêtre et noter les différences dans la liste de sortie. Les options que vous pouvez configurer :

  • Masquer les fichiers de métadonnées NTFS : cette option est activée par défaut et RootkitRevealer n’affiche pas les fichiers de métadonnées NTFS standard, qui sont masqués dans l’API Windows.
  • Analyser le Registre : cette option est activée par défaut. Lorsque cette option est désactivée, RootkitRevealer n’effectue pas d’analyse du Registre.

Lancement d’une analyse automatique

RootkitRevealer prend en charge plusieurs options pour analyser automatiquement les systèmes :

Utilisation : rootkitrevealer [-a [-c] [-m] [-r] outputfile]

Paramètre Description
-a Analysez et quittez automatiquement lorsque vous avez terminé.
-c Sortie au format CSV.
-m Afficher les fichiers de métadonnées NTFS.
-r Ne pas analyser le Registre.

Notez que l’emplacement de sortie du fichier doit se trouver sur un volume local.

Si vous spécifiez l’option -c, il ne signale pas la progression et les différences sont enregistrées au format CSV pour faciliter l’importation dans une base de données. Vous pouvez effectuer des analyses de systèmes distants en l’exécutant avec l’utilitaire Sysinternals PsExec à l’aide d’une ligne de commande comme suit :

psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log

Interprétation de la sortie

Il s’agit d’une capture d’écran de RootkitRevealer détectant la présence du rootkit HackerDefender populaire. Les différences de clés du Registre indiquent que les clés de Registre qui stockent le pilote de périphérique et les paramètres de service de HackerDefender ne sont pas visibles par l’API Windows, mais sont présentes dans l’analyse brute des données de hive du Registre. De même, les fichiers associés à HackerDefender ne sont pas visibles pour les analyses du répertoire de l’API Windows, mais sont présents dans l’analyse des données brutes du système de fichiers.

Rootkit Revealer

Vous devez examiner toutes les différences et déterminer la probabilité qu’elles indiquent la présence d’un rootkit. Malheureusement, il n’existe aucun moyen définitif de déterminer, en fonction de la sortie, si un rootkit est présent, mais vous devez examiner toutes les différences signalées pour vous assurer qu’elles sont explicables. Si vous déterminez que vous avez installé un rootkit, recherchez des instructions de suppression sur le web. Si vous ne savez pas comment supprimer un rootkit, vous devez reformater le disque dur du système et réinstaller Windows.

En plus des informations ci-dessous sur les différences possibles de RootkitRevealer, le Forum RootkitRevealer sur Sysinternals traite des rootkits détectés et des faux positifs spécifiques.

Masqué dans l’API Windows

Ces différences sont celles exposées par la plupart des rootkits. Toutefois, si vous n’avez pas sélectionné Masquer les fichiers de métadonnées NTFS, vous devez vous attendre à voir un certain nombre d’entrées de ce type sur n’importe quel volume NTFS, car NTFS masque ses fichiers de métadonnées, tels que $MFT et $Secure, dans l’API Windows. Les fichiers de métadonnées présents sur les volumes NTFS varient selon la version de NTFS et les fonctionnalités NTFS qui ont été activées sur le volume. Il existe également des produits antivirus, tels que Kaspersky Antivirus, qui utilisent des techniques de rootkit pour masquer les données qu’ils stockent dans d’autres flux de données NTFS. Si vous exécutez un tel analyseur de virus, vous verrez une différence Masqué dans l’API Windows pour un flux de données alternatif sur chaque fichier NTFS. RootkitRevealer ne prend pas en charge les filtres de sortie, car les rootkits peuvent tirer parti de tout filtrage. Enfin, si un fichier est supprimé pendant une analyse, vous pouvez également voir cette différence.

Il s’agit d’une liste de fichiers de métadonnées NTFS définis à partir de Windows Server 2003 :

  • $AttrDef
  • $BadClus
  • $BadClus:$Bad
  • $BitMap
  • $Boot
  • $LogFile
  • $Mft
  • $MftMirr
  • $Secure
  • $UpCase
  • $Volume
  • $Extend
  • $Extend\$Reparse
  • $Extend\$ObjId
  • $Extend\$UsnJrnl
  • $Extend\$UsnJrnl:$Max
  • $Extend\$Quota

Accès refusé.
RootkitRevealer ne doit jamais signaler cette différence, car il utilise des mécanismes qui lui permettent d’accéder à n’importe quel fichier, répertoire ou clé de Registre sur un système.

Visible dans l’API Windows, l’index d’annuaire, mais pas dans MFT.
Visible dans l’API Windows, mais pas dans MFT ou l’index d’annuaire.
Visible dans l’API Windows, MFT, mais pas dans l’index d’annuaire.
Visible dans l’index d’annuaire, mais pas dans l’API Windows ou MFT.

Une analyse du système de fichiers se compose de trois composants : l’API Windows, la table de fichiers maîtres (MFT) NTFS et les structures d’index d’annuaire sur le disque NTFS. Ces différences indiquent qu’un fichier n’apparaît que dans une ou deux analyses. Une raison courante est qu’un fichier est créé ou supprimé pendant les analyses. Voici un exemple de rapport de différences de RootkitRevealer pour un fichier créé pendant l’analyse :

C:\newfile.txt
1/03/2005 17:26
8 octets
Visible dans l’API Windows, mais pas dans MFT ou l’index d’annuaire.

Longueur de l’API Windows non cohérente avec les données hive brutes.
Les rootkits peuvent tenter de se masquer en dénaturant la taille d’une valeur de Registre afin que ses contenus ne soient pas visibles par l’API Windows. Vous devez examiner toute différence de ce type, bien qu’elle puisse également apparaître en raison de valeurs de Registre modifiées pendant une analyse.

Incompatibilité de type entre l’API Windows et les données hive brutes.
Les valeurs de Registre ont un type, tel que DWORD et REG_SZ, et cette différence indique que le type d’une valeur tel que signalé via l’API Windows diffère de celui des données hive brutes. Un rootkit peut masquer ses données en les stockant en tant que valeur REG_BINARY, par exemple, et en faisant croire à l’API Windows qu’il s’agit d’une valeur REG_SZ. S’il stocke un 0 au début des données, l’API Windows ne pourra pas accéder aux données suivantes.

Le nom de la clé contient des valeurs NULL incorporées.
L’API Windows traite les noms de clés comme des chaînes terminées par un caractère NULL, tandis que le noyau les traite comme des chaînes comptées. Ainsi, il est possible de créer des clés de Registre qui sont visibles par le système d’exploitation, mais qui ne sont visibles que partiellement par les outils de Registre tels que Regedit. L’exemple de code Reghide sur Sysinternals illustre cette technique, qui est utilisée par les programmes malveillants et les rootkits pour masquer les données du Registre. Utilisez l’utilitaire Sysinternals RegDelNull pour supprimer des clés avec des valeurs NULL incorporées.

Incompatibilité de données entre l’API Windows et les données hive brutes.
Cette différence se produit si une valeur de Registre est mise à jour pendant que l’analyse du Registre est en cours. Les valeurs qui changent fréquemment incluent des horodatages tels que la valeur de temps d’activité de Microsoft SQL Server, illustrée ci-dessous, et les valeurs de « dernière analyse » de l’antivirus. Vous devez examiner toute valeur signalée pour vous assurer qu’il s’agit d’une valeur de Registre d’application ou de système valide.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
1/03/2005 16:33
8 octets

Ressources rootkit

Les sites web et les livres suivants sont des sources d’informations supplémentaires sur les rootkits :

Sony, rootkits et gestion des droits numériques allés trop loin
Lisez l’entrée de blog de Mark sur la découverte et l’analyse d’un rootkit Sony sur l’un de ses ordinateurs.

Déterrer des rootkits
L’article de Mark du Windows IT Pro Magazine de juin fournit une vue d’ensemble des technologies rootkit et du fonctionnement de RootkitRevealer.

Rootkits : subvertir le noyau Windows
Ce livre de Greg Hoglund et Jamie Butler est le traitement des rootkits le plus complet disponible.

www.phrack.org
Ce site stocke les archives de Phrack, un magazine axé sur les analyseurs où les développeurs discutent des défauts dans les produits liés à la sécurité, des techniques de rootkit et d’autres astuces de programmes malveillants.

The Art of Computer Virus Research and Defense, par Peter Szor

Malware: Fighting Malware Code, par Ed Skoudis et Lenny Zeltser

Windows Internals, 4e édition, par Mark Russinovich et Dave Solomon (le livre ne parle pas des rootkits, mais comprendre l’architecture Windows est utile pour comprendre les rootkits).

DownloadTélécharger RootkitRevealer(231 Ko)

Exécuter maintenant à partir de Sysinternals Live.