RootkitRevealer v1.71

Por Mark Russinovich

Fecha de publicación: 1 de noviembre de 2006

DownloadDescargar 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 sus salidas enumeran las discrepancias de la 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á diseñado 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 iniciado el examen de RootkitRevealer con 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 un servicio de Windows. Este tipo de ejecución no es favorable a 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 al 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 en los que malware, incluidos virus, spyware y troyanos, intentan ocultar su presencia ante 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 si se ejecuta en modo de usuario o modo kernel.

Rootkits persistentes
Un rootkit persistente es uno asociado con 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 se ejecute el código sin intervención del usuario.

Rootkits basados en memoria
Los rootkits basados en memoria son malware que no tiene código persistente y, por lo tanto, no sobreviven 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 FindFirstFile/FindNextFile de Windows, 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 de 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 el sistema de archivos, el Registro y las funciones de enumeración de procesos de la API nativa. Esto impide su detección por escáneres que comparan los resultados de una enumeración de API de Windows con los que devuelve una enumeración de API nativa.

Rootkits en modo kernel
Los rootkits en modo kernel pueden ser aún 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 el 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 que usa las API difiera 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 subárbol es el formato de almacenamiento en disco del Registro). Por lo tanto, los rootkits, ya sea en el modo de usuario o en 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 de sistema de archivos de un volumen FAT o NTFS.

¿Se puede ocultar un rootkit de RootkitRevealer?
En teoría, es posible que un rootkit se oculte de RootkitRevealer. Esto requeriría interceptar las lecturas de RootkitRevealer de los datos del subárbol del Registro o de los datos del sistema de archivos y cambiar el contenido de los datos para que los archivos o datos del Registro del rootkit no estén presentes. Sin embargo, esto requeriría un nivel de sofisticación que no se ha visto en rootkits hasta la fecha. Los cambios en los datos requerirían un conocimiento íntimo de los formatos NTFS, FAT y de subárbol de registro, además de la capacidad de cambiar las estructuras de datos de forma que oculten el rootkit, pero no provoquen estructuras incoherentes o discrepancias de efectos secundarios que serían marcadas por RootkitRevealer.

¿Hay una manera segura de saber 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 de los datos del sistema de archivos y subárbol del Registro realizados por RootkitRevealer, se pueda poner en peligro. Aunque es más fiable comparar un análisis en línea de un sistema y un análisis fuera de línea en un entorno seguro, como una operación de arranque en una instalación de sistema operativo basada en CD, los rootkits pueden llegar a dichas herramientas para evadir la detección incluso de ellas.

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

Uso de RootkitRevealer

RootkitRevealer requiere que la cuenta desde la que se ejecuta tenga asignados los privilegios Copia de seguridad de archivos y directorios, Cargar controladores y Realizar tareas de mantenimiento de volumen (en Windows XP y superior). El grupo Administradores tiene asignados estos privilegios de forma predeterminada. Para minimizar los falsos positivos, ejecute RootkitRevealer en un sistema inactivo.

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

Si tiene preguntas o problemas, visite el Foro sobre RootkitRevealer de Sysinternals.

Examen manual

Para examinar un sistema, inícielo en el sistema y presione el botón Escanear. RootkitRevealer examina el sistema que notifica sus acciones en un área de estado en la parte inferior de su ventana y observa discrepancias en la lista de salida. Las opciones que puede configurar:

  • Ocultar archivos de metadatos NTFS: esta opción está activada de forma predeterminada y hace que RootkitRevealer no muestre archivos de metadatos NTFS estándar, que están ocultos de la API de Windows.
  • Registro de examen: esta opción está activada de forma predeterminada. Deseleccionarla hace que RootkitRevealer no realice 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 examinar 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 notifica el 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ándolo con la utilidad PsExec Sysinternals 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 la configuración de servicio y controlador de dispositivos 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 a HackerDefender no son visibles para los exámenes del directorio de la API de Windows, 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 existe un rootkit, pero debe examinar todas las discrepancias notificadas para asegurarse de que son razonables. Si determina que tiene un rootkit instalado, busque las 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 instalar Windows.

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

Oculto de la API de Windows

Estas discrepancias son las expuestas por la mayoría de rootkits. Sin embargo, si no ha comprobado los archivos de metadatos de NTFS ocultos, debería esperar ver una serie de entradas de este tipo en cualquier volumen NTFS, ya que NTFS oculta sus archivos de metadatos, como $MFT y $Secure, de la API de Windows. Los archivos de metadatos presentes en volúmenes NTFS varían según la versión de NTFS y las características de NTFS que se han habilitado en el volumen. También hay productos antivirus, como Kaspersky Antivirus, que usan técnicas de rootkit para ocultar los datos que almacenan en flujos de datos alternativos de NTFS. Si está ejecutando un escáner de virus de este tipo, verá una discrepancia oculta de la API de Windows para un flujo de datos alternativo en cada archivo NTFS. RootkitRevealer no admite filtros de salida porque los rootkits pueden 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 como 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

Acceso 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 la API de Windows, en el índice de directorios, pero no en MFT.
Visible en la API de Windows, pero no en el índice de directorios o MFT.
Visible en la API de Windows, MFT, pero no en el índice de directorios.
Visible en el índice de directorios, pero no en la API de Windows ni en MFT.

Un examen del sistema de archivos consta de tres componentes: la API de Windows, la tabla de archivos maestros NTFS (MFT) y las estructuras de índice de directorios en disco de NTFS. Estas discrepancias indican que un archivo aparece solo en uno o dos de los exámenes. Una razón común es que un archivo se cree o elimine 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/3/2005 5:26 PM
8 bytes
Visible en la API de Windows, pero no en el índice de directorios o MFT.

La longitud de la API de Windows no es coherente con los datos de subárbol sin procesar.
Los rootkits pueden intentar ocultarse incorrectamente mediante la representación incorrecta 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 valores del Registro que cambian durante un examen.

Error de coincidencia de tipos entre la API de Windows y los datos de subárbol sin procesar.
Los valores del Registro tienen un tipo, como DWORD y REG_SZ, y esta discrepancia señala que el tipo de un valor notificado a través de la API de Windows difiere del de los datos de subárbol sin procesar. Un rootkit puede enmascarar sus datos almacenándolos como un valor de REG_BINARY, por ejemplo, y haciendo que la API de Windows crea que es un valor REG_SZ. Si almacena un 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 de 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 visibles para el sistema operativo, pero solo parcialmente visibles para las herramientas del Registro como Regedit. El código de ejemplo Reghide de Sysinternals muestra esta técnica, que usa malware y rootkits para ocultar los datos del Registro. Use la utilidad RegDelNull de Sysinternals para eliminar claves con valores NULL incrustados.

Error de coincidencia de datos entre la API de Windows y los datos de subárbol 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 el valor de tiempo de actividad de Microsoft SQL Server, que se muestra a continuación, y los valores del "último examen". Es necesario investigar cualquier valor informado para asegurarse de que se trata de un valor válido del registro de la aplicación o del sistema.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
1/3/2005 4:33 P. M
8 bytes

Recursos de Rootkit

Los siguientes sitios web y libros son fuentes con más información sobre rootkits:

Sony, los rootkits y la administración de derechos digitales han llegado demasiado lejos
Lee la entrada de blog de Mark en su descubrimiento y análisis de un rootkit de Sony en uno de sus equipos.

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

Rootkits: subvertir el kernel de Windows
Este libro de Greg Hoglund y Jamie Butler es el tratamiento más completo sobre rootkits que existe.

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

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

Malware: Luchando contra el código malicioso, de Ed Skoudis and Lenny Zeltser

Windows Internals, 4th Edition, de Mark Russinovich y Dave Salomón (el libro no habla de rootkits, pero comprender la arquitectura de Windows es útil para comprender rootkits).

DownloadDescargar RootkitRevealer(231 KB)

Ejecute ahora desde Sysinternals Live.