miércoles, enero 17, 2007

El caso de la instalación fallida de antivirus

En cierto foro me encontré con un problema bastante interesante. Cualquier software antivirus que el usuario afectado intentaba instalar en su sistema, Windows Installer devolvía el número de error 1304, que quiere decir, literalmente, "Error al escribir el archivo, verifique que tenga acceso a ese directorio". En un principio este mensaje puede hacer pensar que se trata de un problema de permisos, pero, como descubrirá más adelante, el causante era bien distinto.

En primer lugar examiné el fichero de reporte de instalación que genera AVG al ser instalado, el fichero Avg7inst.log. En él busqué la línea que detalla el problema concreto de instalación, representada en la siguiente imagen:

¿No puede encontrar el archivo o el directorio? Extraño mensaje de error, sin duda.

Como ve, el mensaje de error es bastante despistante. El programa de instalación no pudo crear lo que presumiblemente es uno de los ficheros ejecutables esenciales para el funcionamiento del antivirus porque no encontró el fichero o el directorio. ¿? Pero el directorio se ha creado correctamente, como así referencia el reporte. ¿Qué ocurre entonces? El problema no parecía estar relacionado con los permisos.

¿Cómo averiguar cuál era el causante?

Ante este mensaje de error durante la instalación, no me quedó otra opción que examinar detalladamente la instalación del antivirus hasta llegar al punto en el que se trata de instalar el fichero Avgamsvr.exe. Para ello, pedí al usuario un fichero PML generado por Process Monitor. Process Monitor (http://www.microsoft.com/technet/sysinternals/processesandthreads/processmonitor.mspx), es una excelente herramienta que monitoriza los accesos al registro y a archivos del disco que realizan los procesos del sistema. Combina lo mejor de Regmon, Filemon y Process Explorer en una sola herramienta.

Al abrir el fichero PML y filtrar adecuadamente, me encontré con un código de error algo más esclarecedor:

El error que devolvió el controlador de Process Monitor sin duda era más explicativo.

El código Sharing Violation (infracción al compartir) es un código de error muy común en Windows. Ocurre cuando algún proceso intenta modificar de alguna manera algún fichero que está siendo utilizado por otro proceso. Pero, ¿cuál podría ser el proceso que estaba manejándolo?

Es bastante extraño que un fichero que acaba de ser creado esté siendo accesado por el sistema operativo. Quise echar un vistazo a la pila de llamadas del hilo del proceso Avgsetup.exe que estaba funcionando en el momento de recibir el mensaje de error. Me encontré con esto:

Este era el causante de la instalación fallida.

Si lee la información de la pila, verá que el hilo de la instalación en el punto concreto de la creación del fichero estaba funcionando en modo kernel (todas las funciones tienen una K rosa a la izquierda). En concreto, la función ZwSetSystemInformation del fichero Ntoskrnl.exe llama a un extraño fichero M_hook.sys, residente en el directorio %AppData%\hidires. La función ZwSetSystemInformation no está públicamente documentada, pero su prefijo (Zw) me indica que es una función relacionada con los servicios del sistema que acceden en modo kernel (y por tanto no hay validación de parámetros, al contrario de las que tienen prefijo Nt).

Ya se encontró al culpable

El fichero M_hook.sys tiene toda la pinta de tratarse de un rootkit instalado por algún troyano. Su objetivo debe de ser esconderse de los mecanismos internos del sistema operativo y bloquear la creación en el disco de ficheros relacionados con software antivirus conocido. Ante un sistema comprometido de esta manera, la única solución que garantice que no resta código malicioso en el disco es reinstalar el sistema operativo de cero.

Espero que les haya parecido interesante el artículo. Para evitar este tipo de problemas, recomiendo mantener el sistema al día, trabajar con un usuario con los menores privilegios posibles, activar un antivirus actualizado así como un cortafuegos y tener mucho cuidado con el software que se descarga de Internet, especialmente si proviene de sitios no oficiales o de redes P2P.

domingo, enero 07, 2007

¿Sabía que...? [IV]

En Windows Vista existe la posibilidad de mostrar un menú contextual más amplio con algunas funciones añadidas muy interesantes. Si al hacer clic con el botón derecho del mouse sobre cualquier elemento mantiene pulsada la tecla Shift (Mayúsculas), en el menú contextual aparecerán -entre otras- las opciones Agregar a Inicio rápido, Copiar como ruta de acceso y, si se tratara de una carpeta, Abrir ventana de comandos aquí. Las opciones que sólo aparecen al pulsar simultáneamente Shift se definen en el propio Registro de Windows en la subclave Shell del elemento en cuestión. En cada una de estas subclaves existirá un valor alfanumérico de nombre Extended, sin contenido alguno.

lunes, enero 01, 2007

MVP por un año más

Microsoft me ha concedido el galardón MVP por un año más. Para mí es un gran orgullo pertenecer a ese grupo de personas que tan gran labor realizan en las comunidades técnicas. Esto no hace sino motivarme a aprender cada día un poco más y seguir aportando mis conocimientos con el objetivo de ayudar a los demás. ;-) Por cierto, ¡deseo un feliz año nuevo a todos los lectores de este blog! :-)