RootkitRevealer v1.71

Par Mark Russinovich

Publication : 1er novembre 2006

TéléchargerTé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 d’API du registre et 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 équivaut au 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, y compris 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 l’Explorateur et l’invite de commandes, pour énumérer le contenu des répertoires de 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 fonctions d’énumération de processus, de registre et de système de fichiers d’interception en mode utilisateur plus sophistiqués de l’API native. Cela empêche leur détection par des scanneurs 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 celui 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 ruche du Registre (un fichier hive est le format de stockage sur disque du Registre). Ainsi, les rootkits, qu’il s’agisse du mode utilisateur ou du 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 dans RootkitRevealer. Pour ce faire, vous devez 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 ou fichiers du registre 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 afin qu’elles masquent le rootkit, mais ne provoquent pas de structures incohérentes ou non valides, ni d’effets secondaires qui seraient marqués 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 des ruches du Registre et des données du système de fichiers effectuées par RootkitRevealer, puissent être compromises. Bien que la comparaison d’une analyse en ligne d’un système et d’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, soit plus fiable, les rootkits peuvent cibler de tels outils pour échapper à la détection par eux-même.

L’essentiel est qu’il n’y aura jamais de scanneur rootkit universel, mais les scanneurs 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 son exécution lui ait attribué les privilèges Fichiers et répertoires de sauvegarde, Charger des pilotes et Effectuer des tâches de maintenance en volume (sur Windows XP et versions ultérieures). Ces privilèges sont attribués au groupe Administrateurs par défaut. 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 rootkitRevealer.

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

Analyse manuelle

Pour analyser un système, lancez-le sur le système et appuyez sur le bouton Analyser. RootkitRevealer analyse le système signalant ses actions dans une zone d’état située en bas de sa fenêtre et notant 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. La désélection a RootkitRevealer n’effectue pas d’analyse du Registre.

Lancement d’une analyse automatique

RootkitRevealer prend en charge plusieurs options pour les systèmes d’analyse automatique :

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

Paramètre Description
-a Analysez et quittez automatiquement lorsque vous avez terminé.
-c Mettez en forme la sortie au format CSV.
-m Afficher les fichiers de métadonnées NTFS.
-r N’analysez pas le Registre.

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

Si vous spécifiez l’option -c, elle ne signale pas la progression et les différences sont imprimé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 ruche 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é de l’API Windows

Ces différences sont celles exposées par la plupart des rootkits; Toutefois, si vous n’avez pas vérifié 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 metada, tels que $MFT et $Secure, à partir de 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 scanneur de virus, vous verrez une différence d’API Masqué dans Windows pour un autre flux de données 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

L’accès est 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 NTFS (MFT) et les structures d’index du répertoire sur 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 d’écart de RootkitRevealer pour un fichier créé pendant l’analyse :

C:\newfile.txt
1/03/2005 17:26 PM
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 son contenu ne soit pas visible 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 qui changent 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 ; si elle 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 une valeur 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 pour les outils de Registre tels que Regedit. L’exemple de code Reghide sur Sysinternals illustre cette technique, qui est utilisée à la fois 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é des 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 de fonctionnement microsoft SQL Server, illustrée ci-dessous, et les valeurs de « dernière analyse » du scanneur antivirus. Vous devez examiner toute valeur signalée pour vous assurer qu’il s’agit d’une valeur de Registre système ou d’application 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 du blog de Mark sur sa découverte et l’analyse d’un rootkit Sony sur l’un de ses ordinateurs.

Déterrer des rootkits
L’article de Mark de juin sur Windows IT Pro Magazine 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 le plus complet des rootkits disponibles.

www.phrack.org
Ce site stocke les archives de Phrack, un magazine orienté cracker où les développeurs discutent des défauts dans les produits liés à la sécurité, les 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 la compréhension de l’architecture Windows est utile pour comprendre les rootkits).

TéléchargerTélécharger RootkitRevealer(231 Ko)

Exécutez maintenant à partir de Sysinternals Live.