RootkitRevealer es una utilidad avanzada de detección de rootkits. Se ejecuta en Windows NT 4 y versiones posteriores y su salida incluye una lista de discrepancias entre el Registro y la API del sistema de archivos que puede indicar la presencia de un rootkit de modo de usuario o de modo núcleo. RootkitRevealer detecta correctamente todos los rootkits persistentes publicados en www.rootkit.com, que incluyen AFX, Vence y HackerDefender (Nota: RootkitRevealer no está destinado a detectar rootkits como Fu que no intentan ocultar sus archivos ni sus claves del registro). Si lo usa para identificar la presencia de un rootkit, comuníquenoslo.
La razón por la cual ya no existe una versión de línea de comandos es que los autores de código malintencionado comenzaron a centrarse en el análisis de RootkitRevealer mediante su nombre de archivo ejecutable. Por lo cual, tuvimos que actualizar RootkitRevealer para que ejecute su análisis a partir de una copia con nombre aleatorio que se ejecuta como servicio de Windows. Este tipo de ejecución no es favorable para una interfaz de línea de comandos. Tenga en cuenta que puede usar las opciones de línea de comandos para ejecutar un análisis automático con resultados registrados en un archivo, lo que es equivalente al comportamiento de la versión de línea de comandos.
El término rootkit se usa para describir mecanismos y técnicas por los cuáles código mal intencionado, incluidos virus, spyware y caballos de Troya, intentan ocultar su presencia de bloqueadores de spyware, antivirus y utilidades de administración del sistema. Existen varias clasificaciones de rootkits que dependen de si el código mal intencionado sobrevive el reinicio o si se ejecutan de modo de usuario o modo núcleo.
Rootkits persistentes
Un rootkit persistente está asociado con código mal intencionado que se activa cada vez que se inicia el sistema. Debido a que dicho código mal intencionado contiene código que se debe ejecutar automáticamente en cada inicio del sistema o cuando un usuario inicia sesión, debe almacenar código en un almacenamiento persistente, como por ejemplo, el Registro o el sistema de archivos, y configurar un método por el cuál el código se ejecute sin intervención del usuario.
Rootkits basados en memoria
Los rootkits basados en memoria son código mal intencionado que no contienen código persistente y por tanto no sobreviven un reinicio.
Rootkits de modo de usuario
Existen muchos métodos por los cuales los rootkits intentan evadir la detección. Por ejemplo, es posible que un rootkit de modo de usuario intercepte todas las llamadas a las API de Windows FindFirstFile/FindNextFile, usadas por utilidades de exploración del sistema de archivos, que incluyen 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 normalmente devolvería resultados que contienen entradas identificando archivos asociados con el rootkit, el rootkit intercepta y modifica la salida para eliminar las entradas.
La API nativa de Windows sirve como interfaz entre clientes de modo de usuario y servicios de modo núcleo y los rootkits más sofisticados de modo de usuario interceptan funciones de enumeración del sistema de archivos, Registro y procesos de la API nativa. Esto evita su detección por parte de analizadores, que comparan los resultados de la enumeración de una API de Windows con los devueltos por la enumeración de una API nativa.
Rootkits de modo núcleo
Los rootkits de modo núcleo pueden ser aún más eficaces, debido a que no sólo pueden interceptar la API nativa de modo núcleo, sino que también pueden manipular directamente estructuras de datos de modo núcleo. Una técnica frecuente para ocultar la presencia de un proceso de código mal intencionado es quitar el proceso de la lista de procesos activos del núcleo. Dado que las API de administración de procesos dependen del contenido de la lista, el proceso de código mal intencionado no se mostrará en herramientas de administración de procesos como el administrador de tareas o el explorador de procesos.
Dado que los rootkits persistentes funcionan cambiando los resultados de la API para que la vista de sistema que usan las API difiera de la vista real en almacenamiento, RootkitRevealer compara los resultados de un análisis de sistema en el nivel más alto con los del nivel más bajo. El nivel más alto es la API de Windows y el nivel más bajo son los contenidos sin procesar de un volumen del sistema de archivos o de un subárbol del Registro (un archivo de subárbol es el formato de almacenamiento del registro en disco). Así, los rootkits, sean de modo de usuario o de modo núcleo, que manipulan la API de Windows o la API nativa para eliminar su presencia de una lista de directorios, serán vistos por ejemplo por RootkitRevealer como una discrepancia entre la información devuelta por la API de Windows y la obtenida por el análisis de nivel bajo de las estructuras del sistema de archivos del volumen FAT o NTFS.
¿Puede un rootkit ocultarse de RootkitRevealer?
Teóricamente, es posible que un rootkit se oculte de RootkitRevealer. Hacerlo requeriría interceptar lecturas de RootkitRevealer de datos de subárboles del Registro o datos del sistema de archivos y cambiar el contenido de los datos de manera tal que los archivos o datos de Registro del rootkit no estén presentes. Sin embargo, esto requeriría un nivel de sofisticación no visto en los rootkits en la actualidad. Los cambios a los datos requerirían un conocimiento íntimo de los formatos NTFS, FAT y subárboles de Registro, sumada la capacidad de cambiar estructuras de datos para que éstas ocultan el rootkit, pero sin producir estructuras incoherentes o no válidas ni discrepancias secundarias que pudieran ser marcadas por RootkitRevealer.
¿Existe una manera segura de conocer sobre la presencia de un rootkit?
En general, no en un sistema en ejecución. Un rootkit de modo núcleo puede controlar cualquier aspecto del comportamiento de un sistema, por lo cual la información devuelta por cualquier API, incluidas las lecturas de bajo nivel de datos de subárboles del Registro y del sistema de archivos realizadas por RootkitRevealer, pueden verse comprometidas. Si bien la comparación de un análisis en línea de un sistema y un análisis fuera de línea desde un entorno seguro como, por ejemplo, el inicio en una instalación de sistema operativo basada en CD, puede ser más confiable, los rootkits pueden centrarse en dichas herramientas para evadir la detección incluso por ellos mismos.
Lo fundamental es que nunca existirá un analizador universal de rootkit, sino que los analizadores más eficaces serán analizadores por comparación en línea/fuera de línea integrados con antivirus.
RootkitRevealer requiere que la cuenta desde la que se ejecuta tenga asignados los privilegios para hacer copias de seguridad de archivos y directorios, cargar controladores de dispositivos y realizar las tareas de mantenimiento del volumen (en Windows XP y versiones posteriores). El grupo Administradores tiene asignado estos privilegios de forma predeterminada. Para minimizar los falsos positivos al ejecutar RootkitRevealer en un sistema inactivo.
Para obtener los mejores resultados, cierre todas las aplicaciones y mantenga inactivo el sistema durante el proceso de análisis de RootkitRevealer.
Si tiene alguna pregunta o problema, visite el foro Sysinternals RootkitRevealer.
Para analizar un sistema, inícielo en éste y haga clic en el botón Scan. RootkitRevealer analizará el sistema e informará sus acciones en un área de estado en la parte inferior de su ventana e indicará las discrepancias en la lista de salida. Opciones que se pueden configurar:
| • | Hide NTFS Metadata Files: esta opción está activada de forma predeterminada, por lo cual RootkitRevealer no muestra los archivos estándar de metadatos de NTFS que se ocultan de la API de Windows. |
| • | Scan Registry: esta opción está activada de forma predeterminada. Al desactivarla RootkitRevealer no realiza un análisis del Registro. |
RootkitRevealer admite varias opciones para el análisis automático de sistemas:
usage: rootkitrevealer [-a [-c] [-m] [-r] outputfile]
-a
Permite analizar automáticamente y salir al finalizar.
-c
Permite dar formato a la salida como CSV
-m
Permite mostrar archivos de metadatos de NTFS
-r
No analiza el Registro.
Observe que la ubicación de la salida del archivo debe encontrarse en un volumen local.
Si especifica la opción -c, no se notificará del progreso y se imprimirán las discrepancias en formato CSV para una importación sencilla en una base de datos. Puede realizar análisis de sistemas remotos si se ejecuta con la utilidad de PsExec de Sysinternals mediante la siguiente línea de comandos:
psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log
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 de HackerDefender y la configuración del servicio no son visibles a la API de Windows, pero están presentes en el análisis de nivel bajo de los datos del subárbol del Registro. Del mismo modo, los archivos asociados de Hackerdefender no son visibles para el análisis del directorio de la API de Windows, pero están presentes en el análisis de los datos sin procesar del sistema de archivos.

Debe examinar todas las discrepancias y determinar la posibilidad de que indiquen la presencia de un rootkit. Lamentablemente, no hay manera definitiva de determinar, según la salida, si un rootkit está presente, pero debería examinar todas las discrepancias informadas para asegurarse de que tienen explicación. Si determina que tiene un rootkit instalado, busque en la Web para obtener las instrucciones de eliminación. Si no está seguro sobre cómo quitar un rootkit, deberá volver a dar formato al disco duro de sistema y reinstalar Windows.
Además de la siguiente información sobre discrepancias de RootkitRevealer posibles, el foro de RootkitRevealer en Sysinternals trata sobre rootkits detectados y falsos positivos específicos.
Estas discrepancias aparecen en la mayoría de los rootkits, sin embargo, si no activó Hide NTFS metadata files verá varias de estas entradas en cualquier volumen NTFS dado que NTFS oculta sus archivos de metadatos, tales como $MFT y $Secure, de la API de Windows. Los archivos de metadatos presentes en volúmenes NTFS varían con la versión de NTFS y las características de NTFS habilitadas en el volumen. También existen productos antivirus, como Kaspersky Antivirus, que usan técnicas de rootkit para ocultar datos almacenados en secuencias alternativas de datos de NTFS. Si ejecuta dicho analizador de virus, verá una discrepancia oculta de la API de Windows para una secuencia alternativa de datos en cada archivo de NTFS. RootkitRevealer no admite filtros de salida porque los rootkits pueden aprovechar cualquier filtrado. Por último, si un archivo se elimina durante un análisis, también es posible que observe esta discrepancia.
Esta es una lista de archivos de metadatos de NTFS definidos según 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 |
Access is Denied.
RootkitRevealer nunca debe notificar esta discrepancia porque usa mecanismos que le permiten tener acceso a cualquier archivo, directorio o clave de registro en un sistema.
Visible in Windows API, directory index, but not in MFT.
Visible in Windows API, but not in MFT or directory index.
Visible in Windows API, MFT, but not in directory index.
Visible in directory index, but not Windows API or MFT.
El análisis de un sistema de archivos incluye tres componentes: La API de Windows, la tabla principal de archivos de NTFS (MFT) y las estructuras del índice del directorio en disco de NTFS. Estas discrepancias indican que un archivo aparece sólo en uno o dos análisis. Una razón frecuente es la creación o eliminación de un archivo durante los análisis. Este es un ejemplo de un informe de discrepancia de RootkitRevealer para un archivo creado durante el análisis:
C:\newfile.txt
3/1/2005 5:26 PM
8 bytes
Visible in Windows API, but not in MFT or directory index.
Windows API length not consistent with raw hive data.
Los rootkits pueden intentar ocultarse tergiversando el tamaño de un valor del Registro para que su contenido no sea visible para la API de Windows. Debe examinar este tipo de discrepancias, aunque también pueden aparecer como resultado de cambios en los valores del Registro durante un análisis.
Type mismatch between Windows API and raw hive data.
Los valores del Registro tienen un tipo, como por ejemplo, DWORD y REG_SZ, y esta discrepancia indica que el tipo de valor informado a través de la API de Windows difiere de aquel que tienen los datos sin procesar de subárbol. Un rootkit puede enmascarar sus datos al almacenarlos, por ejemplo, como un valor REG_BINARY, y hacer que la API de Windows crea que es un valor REG_SZ; si almacena un 0 en el inicio de los datos, la API de Windows no podrá tener acceso a los datos posteriores.
Key name contains embedded nulls.
La API de Windows trata los nombres de las claves como cadenas terminadas en nulos mientras que el núcleo las trata como cadenas contadas. Por lo tanto, es posible crear claves de Registro que son visibles para el sistema operativo, pero sólo parcialmente visibles para herramientas del Registro como Regedit. El código de ejemplo Reghide (en inglés) en Sysinternals muestra esta técnica, que usan tanto el código mal intencionado como los rootkits para ocultar los datos del Registro. Use la utilidad Regdellnull de Sysinternals para eliminar claves con nulos incrustados.
Data mismatch between Windows API and raw hive data.
Esta discrepancia ocurrirá si un valor del registro se actualiza mientras se realiza el análisis del Registro. Los valores que cambian con frecuencia incluyen marcas de hora como, por ejemplo, el valor del tiempo de actividad de Microsoft SQL Server que se muestra a continuación, y valores tipo "último análisis" del analizador de virus. Debe investigar cualquier valor informado para asegurarse de que se trate de una aplicación o valor del Registro del sistema válidos.
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc
3/1/2005 4:33 PM
8 bytes
Los siguientes sitios web y libros son recursos de información acerca de los rootkits:
Webcast a petición de TechNet: Limpieza avanzada de software malintencionado
Aprenda con Mark cómo usar las herramientas de Sysinternals para identificar infecciones de código mal intencionado, desde spyware estándar a rootkits de modo núcleo, y eliminarlos del sistema.
Comprender el software malintencionado: virus, spyware y rootkits
El webinar de Mark en Microsoft TechEd 2005 abarca virus, spyware y rootkits.
Sony, rootkits y administración de derechos digitales que han ido demasiado lejos
Lea la entrada de blog de Mark sobre su descubrimiento y análisis de un rootkit de Sony en uno de sus equipos.
Descubriendo los rootkits
El artículo de Mark en el número de junio de Windows IT Pro Magazine ofrece una descripción general de las tecnologías de rootkits y cómo funciona RootkitRevealer.
www.rootkit.com
Este sitio contiene código de ejemplo para varios rootkits de modo de usuario y modo núcleo así como discusiones continuas sobre cómo desarrollar rootkits.
Rootkits: Subverting the Windows Kernel
Este libro de Greg Hoglund y Jamie Butler es el tratado más exhaustivo disponible sobre rootkits.
www.phrack.org
Este sitio almacena el archivo de Phrack, una revista orientada a crackers, donde los programadores analizan los defectos en productos relacionados con la seguridad, técnicas de rootkit y otros trucos de código mal intencionado.
research.microsoft.com/rootkit/
Esta es la página principal de Microsoft sobre la investigación de rootkits donde Microsoft publica artículos e información acerca de sus esfuerzos para combatir rootkits.
The Art of Computer Virus Research and Defense, por Peter Szor
Malware: Fighting Malicious Code, por Ed Skoudis y Lenny Zeltser
Windows Internals, 4th Edition, por Mark Russinovich y Dave Solomon (el libro no trata sobre rootkits, sino sobre cómo comprender la arquitectura de Windows ayuda a comprender los rootkits).
Descargar RootkitRevealer (231 KB)