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.

10 comentarios:

Anónimo dijo...

gracias, me ha pasado exactamente lo mismo y buscaba solucion :)

Anónimo dijo...

Saludos Daniel... ando desde ayer buscando informacion del error de mi maquina... te explico porque creo que coincide con lo que has descrito... veras.. yo tenia instalado el norton security 2006.. y actualizado al dia.. de repente me dice que se a agotado la licencia.. y no puede actualizarse.. yo pensando que es un problema del norton lo desinstalo.. y intento volverlo a instalar.. con la sorpresa que el mismo software.. me da un error semejante al tuyo .. error 1308.. no puede crear el fichero NMAIN.EXE que es el motor digamos del norton.., sigo con la version 2007 e igual.. pruebo con trend igual.. con un simple.. compresor rar mas actualizado e igual..... y tambien me da el mismo error.. me bajo de norton el 2007 y lo mismo.. he escaneado la maquina desde la pagina de norton.. y no me encuentra nada. relacionado con esto.. lo que encuentra son virus anticuados. que limpio manualmente.. he intentado restaurar el sistema y no me deja.. ya que me dice que no hay cambios, cosa que es mentira ya que si los hay.. y muchos.. en fin estoy con la espalda a la pared y no quiero reinstalarlo todo a ver si me puedes hechar una mano.
roan34@hotmail.com

Anónimo dijo...

Hola, muy agradecido por su commentario. Me ha pasado lo mismo y apesar de no deciarlo, se que mi unica solucion es reinstallar el systema operativo. Gracias por la ayuda.

Anónimo dijo...

No lo puedo creer. Me pasa lo mismo desde hace un par de dias y no encuentro ninguna manera de solucionarlo. Estoy scanneando desde internet con todos los antiviurs posibles, me encuentran alguna que otra pavada pero no hay caso, no llego a solucionar el problema de instalar el antivirus. Probe con AVG, Norton, Pc-Cillin y Panda y ninguno lo pude instalar. Evidentemente voy a tener que reinstalar todo. Lastima... pero bueno, que le voy a hacer...
Muchas gracias por su gran ayuda a tomar esta decision.

Anónimo dijo...

Han podido encontrar alguna solucion o debo formatear la maquina, nomás?

Anónimo dijo...

Sugiero visitar este link. Me paso lo mismo y gracias a esta gente pude solucionar el problema sin tener que formatear la maquina.
Abrazos, Fritz.
http://www.trucoswindows.net/foro/index.php?showtopic=71677&st=0&p=328772&#entry328772

Anónimo dijo...

Hola discuilpa alguien puede decirme los pasos para poder instalar de nuevo el antivirus sin necesidad de formatear mi maquina.
se los agradeceria mi correo es

edgar_611@hotmail.com

si pueden escribanme o agreguenme.Se los agradeceria muchisimo.

Anónimo dijo...

A mi me ha pasado lo mismo pero al instalar el visual Studio .NET 2005 y creo que el problema comenzó desde que abri un archivo de dudosa procedencia y me quedó de lección para no abrir cualquier achivo en mi PC, ahora solo falta Reinsatalar el Windows para poder seguir trabajando.

Por favor si no conocemos la precedencia de un archivo, mejor no abrirlo.

CX dijo...

hola, muchas gracias por el informe.
les cuento q me baje el programita
ELIBAGLA y me saco todo
chauu

Anónimo dijo...

Necesito ayuda xD

Resulta que yo tenia un antivirus de simantec. LUego instale el nod32 y bueno el PC se quedo bloqueado, luego lo reinicie pero cuando se iniciaba el nod32 se me bloqueaba toda la barra de tareas y no podia ejecutar nada.

ayudaa xD

grax