Problemas con la inicialización de Explorer.exe (II)
Completando mi artículo anterior sobre problemas durante la inicialización de Explorer.exe, este artículo se centrará en otra posible causa del problema: una infección de virus.
Es posible que se encuentre con un sistema con los siguientes síntomas: Al iniciar el sistema, no aparece ni el escritorio ni la barra de tareas. Al abrir Administrador de tareas, hacer clic sobre Archivo, Nueva tarea y tratar de ejecutar Explorer.exe no ocurre nada, al menos aparentemente. Digo aparentemente porque es posible que un virus haya modificado el registro de tal forma que al intentar ejecutar Explorer.exe se esté ejecutando un componente malicioso del virus. Este artículo tratará una posible vía de infección.
La clave de registro Image File Execution Options
En mi anterior blog tengo algo de información sobre los pasos que realiza la función CreateProcess antes de "dar a luz" al correspondiente proceso hijo en Windows NT. En dicho artículo me centré únicamente en la parte que tiene que ver con la compatibilidad con sistemas anteriores mediante la aplicación de shims. En Windows Vista la creación de procesos ha variado de manera muy considerable con respecto a Windows XP. Si le interesa saber los detalles sobre esto, reserve una copia de la quinta edición del libro "Windows Internals", donde se explican éste y otros aspectos.
En Windows existe la posibilidad de ejecutar un proceso directamente en un depurador, y una de las formas de conseguir esto es mediante la clave de Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options. Dicha clave puede contener una subclave con el mismo nombre que el proceso que quiere depurar y, dentro de ésta, un valor alfanumérico Debugger que indique qué depurador se quiere utilizar. Dos usos prácticos de esta clave de Registro son:
- Depurar procesos críticos del sistema operativo, como Lsass.exe o Winlogon.exe. Para ello lo que se suele hacer es agregar la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Winlogon.exe y, dentro de ella, crear un valor alfanumérico de nombre Debugger cuyo contenido sea por ejemplo "C:\Depuradores\ntsd.exe -d -g -G" Con esto, cada vez que el sistema ejecute Winlogon.exe vamos a añadir el depurador NT Symbolic Debugger, Ntsd. (La última versión está disponible en el paquete Debugging Tools for Windows).
- Process Explorer emplea esta clave de registro cuando se hace uso de la opción que permite reemplazar Administrador de tareas por Process Explorer (algo bastante recomendable, por cierto). Así logra que cuando el sistema trate de ejecutar Taskmgr.exe (el ejecutable de Administrador de tareas), Process Explorer se ejecute en su lugar.
El software malicioso también hace uso de esta clave
Los autores de software malicioso pronto se dieron cuenta de las enormes posibilidades que ofrece esta clave de Registro y comenzaron a crear código malicioso que se agregara a dicha clave con nombres de ejecutables legítimos del sistema operativo, como el caso de Explorer.exe que nos ocupa. En concreto, un usuario afectado tenía en su sistema la clave de Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Explorer, y dentro de ella, un valor Debugger con contenido "C:\Archivos de programa\Microsoft Common\Wuauclt.exe". Lo que se consigue con esto es que, cada vez que o bien el usuario o el sistema intente ejecutar Explorer.exe (algo que ocurre naturalmente durante el inicio de sesión), acabe ejecutándose ese tal ejecutable C:\Archivos de programa\Microsoft Common\wuauclt.exe, que es un troyano. Por la información que he recabado de diversas empresas de seguridad, parece formar parte de los últimamente tan populares virus del tipo "Autorun", es decir, los que infectan unidades USB y agregan ficheros ocultos Autorun.inf que apuntan a código malicioso. La documentación que he encontrado indica también que hay variantes rootkit de este tipo de virus.
Cómo solucionar el problema
La solución en este caso consiste en pasar primero un antivirus actualizado al sistema. De todas formas, la desinfección raramente es completa tras el análisis de un único antivirus. Bien porque sus firmas no son capaces de detectar el virus (ningún antivirus es efectivo al 100%), bien porque el entorno infectado impide la actuación correcta del antivirus. En estos casos se puede probar con otro antivirus (una segunda opinión), o bien abordar una desinfección manual. No comentaré en detalle los detalles de una desinfección manual entre otros motivos porque no soy experto en la eliminación de malware y además cada malware emplea sus trucos para pasar desapercibido de cara al usuario. Mi recomendación en estos casos es hacer uso de las herramientas Autoruns y Process Explorer iniciando el sistema en Modo seguro.
Prevención
Las infecciones de virus se aprovechan en gran medida de los privilegios del usuario infectado. En la mayoría de casos, al menos en sistemas XP, estos privilegios son administrativos, por lo que los daños pueden ser catastróficos. Mis recomendaciones para evitar este tipo de infecciones son las ya conocidas:
- Utilizar una cuenta de usuario limitado para el trabajo cotidiano con el PC.
- Mantener actualizado el sistema operativo desde Windows Update.
- Activar un antivirus y un cortafuegos y mantenerlos al día.
- Desconfiar del software que provenga de fuentes no oficiales.
Resumen
Dejo finalmente un resumen con los posibles problemas de inicialización de Explorer.exe. Recuerde los síntomas: El sistema llega a la pantalla de bienvenida o de inicio de sesión pero, una vez el usuario se ha autenticado correctamente, solo se muestra un escritorio vacío, sin iconos, sin barra de tareas.
Si al iniciar manualmente Explorer.exe desde Administrador de tareas (Ctrl+Alt+Supr, menú Archivo, Nueva tarea) todo funciona correctamente
Si al iniciar manualmente Explorer.exe desde Administrador de tareas (Ctrl+Alt+Supr, menú Archivo, Nueva tarea) sigue fallando
- Causa 1: Virus. Leer este mismo artículo para intentar localizar dónde está el componente malicioso que está interfiriendo con la carga del proceso Explorer.exe
- Causa 2: Explorer.exe o algún componente relacionado con su carga está dañado o mal registrado. Este artículo ofrece pautas para depurar el problema.