Your subscription isn't valid. We found the following error:
The OrangeBox Web Home service isn't running in Windows on your computer. Please reboot your computer. If this message occured after a reboot of the computer, contact your administrator.
En este artículo verá cómo llegué a la causa de la aparición de la molesta página web.
En primer lugar revisé la configuración del navegador para ver si se había agregado algún tipo de proxy a la conexión a Internet. Pero no, no se había agregado ningún proxy; además, la lista de procesos observada desde Process Explorer indicaba que no había ningún proceso residente que pudiera estar interceptando las salidas HTTP de la máquina. La causa debía estar entonces en el kernel de Windows, específicamente en algún controlador de arranque (boot driver) o similar que hubiera instalado el producto y que estaría interceptando silenciosamente las conexiones web del sistema.
En aquel momento no tenía disponible otra máquina física libre para realizar una sesión remota de depuración de kernel (live kernel debugging) y tampoco tenía muchas ganas de realizarla desde una máquina virtual. :-P Así que me dispuse a volcar la memoria del sistema afectado y "escudriñar" entre todos los datos intentando buscar alguno que me diera algo de luz sobre el problema. ¿Qué dato podría utilizar como guía? Decidí anotar la palabra "webfilter", que es la que aparecía en la URL de la barra de direcciones del navegador cada vez que se intentaba abrir una página web.
Generando un volcado de memoria
Para generar manualmente un volcado de memoria en un sistema NT se puede emplear el método descrito en este artículo de la KB de Microsoft. El controlador i8042prt.sys busca el valor "CrashOnCtrlScroll" durante su carga; si este valor tiene contenido "1", el controlador se mantiene "escuchando" en su ISR (Interrupt Service Routine) esperando la combinación de teclas Ctrl derecho+Bloq. desplazamiento+Bloq. desplazamiento. Esto hace que la función I8xProcessCrashDump haga una llamada al kernel, concretamente a la función KeBugCheckEx del fichero Ntdll.dll, lo que genera finalmente el volcado de memoria y posterior reinicio del sistema (si así está configurado en el panel Inicio y recuperación de Propiedades del sistema).
|
Analizando con Windbg
Windbg es un depurador de Microsoft que puede ser descargado de forma gratuita desde la dirección: http://www.microsoft.com/whdc/devtools/debugging/default.mspx. Antes de utilizarlo, es importante que se configuren correctamente los símbolos del sistema.
|
Una vez que los símbolos estaban correctamente configurados, abrí el fichero de volcado desde Windbg pulsando sobre File, Open Crash Dump.
Con el fichero de volcado ya cargado en Windbg, podemos examinar la pila de llamadas en el momento que se generó el volcado de memoria. En este caso esto no resultó de demasiada utilidad, puesto que en el momento que generé manualmente el volcado de memoria el sistema estaba en estado inactivo y funcionando correctamente.
Para buscar cadenas dentro de la memoria del volcado empleé el comando "s", con el parámetro -a, que permite buscar cadenas ASCII, y con la cadena "webfilter" como parámetro de búsqueda. F7000000 y FAAAAAAA son las direcciones de inicio y fin donde quise realizar la búsqueda. Son las direcciones donde Windows comienza a cargar los boot drivers, lo que evita que el depurador tarde demasiado tiempo buscando en porciones de memoria no relevantes en este caso concreto.
El resultado de la búsqueda fue esclarecedor, en la dirección de memoria F9c8b463 estaba la cadena "webfilter/licerr..." ¡justamente la dirección web que aparecía al cargar cualquier página!
Cadena webfilter/licerr, parte de la URL que se mostraba en el navegador web.
Seguidamente quise saber a qué cosa pertenecía esa cadena. El comando !address permite realizar eso mismo:
Como ve, era el controlador Difdrv.sys, instalado por el filtro de terceros, el que hacía aparecer esa página web de error cada vez que se accedía a Internet. En su código observé llamadas a Difsvc.exe, el servicio instalado por el filtro, con el objeto de comprobar que efectivamente estuviera iniciado. Si no lo estaba, aparecía otra web indicando de dicho percance.
Espero que les haya parecido interesante el artículo. La aplicación de filtrado descrita aquí (OrangeBoxWeb) no es demasiado conocida y las referencias son prácticamente nulas en cualquier buscador de Internet, así que espero que el artículo les permita solucionar el problema si lo experimentan en sus sistemas o, por qué no, les sirva para comenzar a familiarizarse con Windbg, un buen depurador de Microsoft.