RootkitRevealer v1.71

Por Mark Russinvl

Publicado: 1 de noviembre de 2006

DescargarDescargar RootkitRevealer(231 KB)
Ejecute ahora desde Sysinternals Live.

Introducción

RootkitRevealer es una utilidad avanzada de detección de rootkit. Se ejecuta en Windows XP (32 bits) y Windows Server 2003 (32 bits), y su salida muestra discrepancias de API del registro y del sistema de archivos que pueden indicar la presencia de un rootkit en modo de usuario o en modo kernel. RootkitRevealer detecta correctamente muchos rootkits persistentes, incluidos AFX, Vanquish y HackerDefender (nota: RootkitRevealer no está pensado para detectar rootkits como Fu que no intentan ocultar sus archivos o claves del Registro). Si lo usa para identificar la presencia de un rootkit, háganoslo saber.

La razón por la que ya no hay una versión de línea de comandos es que los autores de malware han empezado a dirigirse al examen de RootkitRevealer mediante su nombre ejecutable. Por lo tanto, hemos actualizado RootkitRevealer para ejecutar su examen desde una copia con nombre aleatorio de sí misma que se ejecuta como Windows servicio. Este tipo de ejecución no es propicio para una interfaz de línea de comandos. Tenga en cuenta que puede usar opciones de línea de comandos para ejecutar un examen automático con los resultados registrados en un archivo, que es el equivalente del comportamiento de la versión de la línea de comandos.

¿Qué es un Rootkit?

El término rootkit se usa para describir los mecanismos y técnicas por los que el malware, incluidos virus, spyware y troyanos, intenta ocultar su presencia de bloqueadores de spyware, antivirus y utilidades de administración del sistema. Hay varias clasificaciones de rootkit en función de si el malware sobrevive al reinicio y de si se ejecuta en modo de usuario o modo kernel.

Rootkits persistentes
Un rootkit persistente es uno asociado al malware que se activa cada vez que se inicia el sistema. Dado que este malware contiene código que se debe ejecutar automáticamente cada inicio del sistema o cuando un usuario inicia sesión, debe almacenar código en un almacén persistente, como el Registro o el sistema de archivos, y configurar un método por el que el código se ejecuta sin intervención del usuario.

Rootkits basados en memoria
Los rootkits basados en memoria son malware que no tiene código persistente y, por tanto, no sobrevive a un reinicio.

Rootkits en modo de usuario
Hay muchos métodos por los que los rootkits intentan eludir la detección. Por ejemplo, un rootkit en modo de usuario podría interceptar todas las llamadas a las API de Windows FindFirstFile/FindNextFile, que usan las utilidades de exploración del sistema de archivos, incluido el Explorador y el símbolo del sistema, para enumerar el contenido de los directorios del sistema de archivos. Cuando una aplicación realiza una lista de directorios que, de lo contrario, devolvería resultados que contienen entradas que identifican los archivos asociados al rootkit, el rootkit intercepta y modifica la salida para quitar las entradas.

La API nativa Windows actúa como interfaz entre los clientes en modo de usuario y los servicios en modo kernel y los rootkits en modo de usuario más sofisticados interceptan las funciones de enumeración de procesos, registro y sistema de archivos de native API. Esto evita su detección mediante escáneres que comparan los resultados de una enumeración de API Windows con la devuelta por una enumeración de API nativa.

Rootkits en modo kernel
Los rootkits en modo kernel pueden ser incluso más eficaces, ya que no solo pueden interceptar la API nativa en modo kernel, sino que también pueden manipular directamente estructuras de datos en modo kernel. Una técnica común para ocultar la presencia de un proceso de malware es quitar el proceso de la lista de procesos activos del kernel. Dado que las API de administración de procesos se basan en el contenido de la lista, el proceso de malware no se mostrará en herramientas de administración de procesos como Administrador de tareas o el Explorador de procesos.

Funcionamiento de RootkitRevealer

Dado que los rootkits persistentes funcionan cambiando los resultados de la API para que una vista del sistema mediante LAS API difiese de la vista real en el almacenamiento, RootkitRevealer compara los resultados de un examen del sistema en el nivel más alto con el nivel más bajo. El nivel más alto es la API de Windows y el nivel más bajo es el contenido sin procesar de un volumen del sistema de archivos o un subárbol del Registro (un archivo de Hive es el formato de almacenamiento en disco del Registro). Por lo tanto, rootkits, ya sea el modo de usuario o el modo kernel, que manipulan la API de Windows o la API nativa para quitar su presencia de una lista de directorios, por ejemplo, serán vistos por RootkitRevealer como una discrepancia entre la información devuelta por la API de Windows y la que se ve en el examen sin procesar de las estructuras del sistema de archivos de un volumen FAT o NTFS.

¿Puede un Rootkit ocultarse de RootkitRevealer?
En teoría, es posible que un rootkit se oculte de RootkitRevealer. Para ello, sería necesario interceptar las lecturas de RootkitRevealer de los datos del subárbol del Registro o los datos del sistema de archivos y cambiar el contenido de los datos de forma que los datos o archivos del Registro del rootkit no estén presentes. Sin embargo, esto requeriría un nivel de sofisticación que no se ve en rootkits hasta la fecha. Los cambios en los datos requerirían un conocimiento profundo de los formatos de subárbol NTFS, FAT y Registry, además de la capacidad de cambiar las estructuras de datos de forma que oculte el rootkit, pero no causen estructuras incoherentes o no válidas ni discrepancias de efecto secundario marcadas por RootkitRevealer.

¿Hay una manera segura de conocer la presencia de un rootkit?
En general, no desde dentro de un sistema en ejecución. Un rootkit en modo kernel puede controlar cualquier aspecto del comportamiento de un sistema para que la información devuelta por cualquier API, incluidas las lecturas sin procesar del subárbol del Registro y los datos del sistema de archivos realizadas por RootkitRevealer, se pueda poner en peligro. Aunque comparar un examen en línea de un sistema y un examen fuera de línea desde un entorno seguro, como un arranque, en una instalación de sistema operativo basado en CD, es más confiable, los rootkits pueden dirigirse a estas herramientas para eludir la detección incluso mediante ellos.

La conclusión es que nunca habrá un escáner rootkit universal, pero los escáneres más eficaces serán los analizadores de comparación en línea o fuera de línea que se integran con el antivirus.

Uso de RootkitRevealer

RootkitRevealer requiere que la cuenta desde la que su ejecución le haya asignado los privilegios Archivos y directorios de copia de seguridad, Controladores de carga y Realizar tareas de mantenimiento del volumen (en Windows XP y versiones posteriores). Al grupo Administradores se le asignan estos privilegios de forma predeterminada. Para minimizar los falsos positivos, ejecute RootkitRevealer en un sistema inactivo.

Para obtener mejores resultados, salga de todas las aplicaciones y mantenga el sistema inactivo durante el proceso de examen de RootkitRevealer.

Si tiene alguna pregunta o problema, visite el foro sysinternals RootkitRevealer.

Examen manual

Para examinar un sistema, inéntelo en el sistema y presione el botón Examinar. RootkitRevealer examina el sistema que informa de sus acciones en un área de estado en la parte inferior de su ventana y señala las discrepancias en la lista de salida. Las opciones que puede configurar:

  • Ocultar archivos de metadatos NTFS: esta opción está activa de forma predeterminada y rootkitRevealer no muestra los archivos de metadatos NTFS estándar, que están ocultos en Windows API.
  • Examinar registro: esta opción está activa de forma predeterminada. Al anular la selección, RootkitRevealer no realiza un examen del Registro.

Iniciar un examen automático

RootkitRevealer admite varias opciones para sistemas de análisis automático:

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

Parámetro Descripción
-a Examinar y salir automáticamente cuando haya terminado.
-c Dar formato a la salida como CSV.
-m Mostrar archivos de metadatos NTFS.
-r No analice el Registro.

Tenga en cuenta que la ubicación de salida del archivo debe estar en un volumen local.

Si especifica la opción -c, no se informa del progreso y las discrepancias se imprimen en formato CSV para facilitar la importación en una base de datos. Puede realizar exámenes de sistemas remotos ejecutándose con la utilidad Sysinternals PsExec mediante una línea de comandos como la siguiente:

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

Interpretación de la salida

Esta es una captura de pantalla de RootkitRevealer que detecta la presencia del popular rootkit HackerDefender. Las discrepancias de clave del Registro muestran que las claves del Registro que almacenan el controlador de dispositivo y la configuración del servicio de HackerDefender no son visibles para la API de Windows, pero están presentes en el examen sin procesar de los datos del subárbol del Registro. Del mismo modo, los archivos asociados Windows HackerDefender no son visibles para los exámenes de directorio de API, pero están presentes en el examen de los datos del sistema de archivos sin procesar.

Rootkit Revealer

Debe examinar todas las discrepancias y determinar la probabilidad de que indiquen la presencia de un rootkit. Desafortunadamente, no hay ninguna manera definitiva de determinar, en función de la salida, si hay un rootkit, pero debe examinar todas las discrepancias notificadas para asegurarse de que son explicables. Si determina que tiene un rootkit instalado, busque instrucciones de eliminación en la web. Si no está seguro de cómo quitar un rootkit, debe volver a formatear el disco duro del sistema y volver a instalarlo Windows.

Además de la información siguiente sobre posibles discrepancias de RootkitRevealer, el foro de RootkitRevealer de Sysinternals analiza los rootkits detectados y los falsos positivos específicos.

Hidden from Windows API

Estas discrepancias son las que muestran la mayoría de los rootkits. sin embargo, si no ha activado ocultar archivos de metadatos NTFS, debería esperar ver una serie de estas entradas en cualquier volumen NTFS, ya que NTFS oculta sus archivos de metada, como $MFT y $Secure, de la API de Windows. Los archivos de metadatos presentes en los volúmenes NTFS varían según la versión de NTFS y las características NTFS que se han habilitado en el volumen. También hay productos antivirus, como Antivirus Antivirus de Antivirus, que usan técnicas de rootkit para ocultar los datos que almacenan en flujos de datos alternativos NTFS. Si ejecuta este tipo de escáner de virus, verá una discrepancia de la API Hidden from Windows para un flujo de datos alternativo en cada archivo NTFS. RootkitRevealer no admite filtros de salida porque rootkits puede aprovechar cualquier filtrado. Por último, si se elimina un archivo durante un examen, es posible que también vea esta discrepancia.

Esta es una lista de archivos de metadatos NTFS definidos a partir 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

El acceso es Denegado.
RootkitRevealer nunca debe notificar esta discrepancia, ya que usa mecanismos que le permiten acceder a cualquier archivo, directorio o clave del Registro en un sistema.

Visible en Windows API, índice de directorio, pero no en MFT.
Visible en Windows API, pero no en MFT o índice de directorio.
Visible en Windows API, MFT, pero no en el índice de directorio.
Visible en el índice de directorio, pero Windows API o MFT.

Un examen del sistema de archivos consta de tres componentes: la API Windows, la tabla de archivos maestros NTFS (MFT) y las estructuras de índice de directorio ntfs en disco. Estas discrepancias indican que un archivo solo aparece en uno o dos de los exámenes. Una razón común es que se crea o elimina un archivo durante los exámenes. Este es un ejemplo del informe de discrepancias de RootkitRevealer para un archivo creado durante el examen:

C:\newfile.txt
1/03/2005 5:26 p. m.
8 bytes
Visible en Windows API, pero no en MFT o índice de directorio.

Windows longitud de API no coherente con los datos de Hive sin procesar.
Los rootkits pueden intentar ocultarse mediante la representación errónea del tamaño de un valor del Registro para que su contenido no sea visible para la API de Windows. Debe examinar cualquier discrepancia de este tipo, aunque también puede aparecer como resultado de los valores del Registro que cambian durante un examen.

Error de coincidencia de tipos entre Windows API y datos de Hive sin procesar.
Los valores del Registro tienen un tipo, como DWORD y REG_SZ, y esta discrepancia indica que el tipo de un valor notificado a través de la API de Windows difiere del de los datos de Hive sin procesar. Un rootkit puede enmascarar sus datos si los almacena como un valor REG_BINARY, por ejemplo, y hace que la API de Windows crea que es un valor REG_SZ; si almacena un valor 0 al principio de los datos, la API de Windows no podrá acceder a los datos posteriores.

El nombre de clave contiene valores NULL incrustados.
La API Windows trata los nombres de clave como cadenas terminadas en NULL, mientras que el kernel los trata como cadenas con recuento. Por lo tanto, es posible crear claves del Registro que sean visibles para el sistema operativo, pero que solo sean parcialmente visibles para herramientas del Registro como Regedit. El código de ejemplo Reghide de Sysinternals muestra esta técnica, que usan malware y rootkits para ocultar los datos del Registro. Use la utilidad Sysinternals RegDelNull para eliminar claves con valores NULL incrustados.

No hay coincidencia de datos entre Windows API y datos de Hive sin procesar.
Esta discrepancia se producirá si se actualiza un valor del Registro mientras el examen del Registro está en curso. Los valores que cambian con frecuencia incluyen marcas de tiempo como Microsoft SQL Server valor de tiempo de actividad, que se muestra a continuación, y los valores de "último examen" del analizador de virus. Debe investigar cualquier valor notificado para asegurarse de que es un valor válido de la aplicación o del Registro del sistema.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
1/03/2005 4:33 p. m.
8 bytes

Recursos de Rootkit

Los siguientes sitios web y libros son orígenes de más información sobre rootkits:

Sony, Rootkits y Digital Rights Management llegaron demasiado lejos
Lea la entrada de blog de Mark sobre su detección y análisis de un rootkit de Sony en uno de sus equipos.

Desenterración de rootkits
El artículo de mark june Windows IT Pro Magazine proporciona información general sobre las tecnologías rootkit y cómo funciona RootkitRevealer.

Rootkits: subvertir el Windows kernel
Este libro de Greg Kit y Greg Sketch es el tratamiento más completo de los rootkits disponibles.

www.phrack.org
Este sitio almacena el archivo de Phrack,una revista orientada a cracker en la que los desarrolladores analizan los errores en productos relacionados con la seguridad, técnicas de rootkit y otros trucos de malware.

El arte de la investigación y defensa de virus informáticos,por Peter Szor

Malware: Fighting Malicious Code, de Ed Qrudis y Lenny Zeltser

Windows Internals, 4.ªedición, de Mark Russinvl y Dave Dave Dave (el libro no habla sobre rootkits, pero comprender la arquitectura de Windows es útil para comprender rootkits).

DescargarDownload RootkitRevealer(231 KB)

Ejecute ahora desde Sysinternals Live.