El Servicio del Centro de Seguridad en Windows 7 que no quería iniciar, la DLL corrupta, SFC y su solución

Hola,

Antes de proceder con el caso, me gustaría hacer un pequeño Off topic de dos pequeños temas:

1. Como se habrán dado cuenta, y por si no lo han hecho, Windows 8 Consumer Preview dará la luz pública el próximo 29 de Febrero, así que vamos alistando los PCs 🙂

2. Hace unos días creé una Página en Facebook específica para mi blog, el objetivo es compartir allí todo lo que aquí y en otras páginas se creen, además de pequeños tips en el tiempo. Me gustaría entonces hacerles la invitación formal a que pertenezcan a la página, para esto, en el panel izquierdo verán una pequeña publicidad de Facebook donde podrán darle a “Like” o “Me gusta”, o bien ir directamente a la página y unirsen: www.facebook.com/ChechoBlog

Eso era todo, ahora sí, ¡Al caso!

El problema

Por alguna extraña razón (Que no sabía en el momento), en un equipo mío estaba apareciendo desactivado el Centro de Seguridad después de algunos reinicios, o bien, de un cierre e inicio de sesión; esto lo podía detallar desde el Centro de Actividades:

image

No importa cuándo le diera al botón Activar (Turn on now), no pasaba absolutamente nada.

Decidí entonces tratar de hacerlo desde la Consola de Servicios, buscando el Servicio del Centro de Seguridad, que en efecto, tenía desactivado el Servicio, pero además de esto presentaba otras características un poco extrañas:

Service2

Lo primero, es que en la Descripción del Servicio, presentaba un mensaje de error que decía: “Failed to Read Description. Error Code: 193”, es decir, no se podía leer correctamente la descripción del Servicio.

Lo segundo es que aparecía detenido, pero al intentar iniciarlo presionando el botón “Iniciar” (Start), obtenía otro mensaje de error un poco más extraño:

Service4

Windows no pudo iniciar el Servicio del Centro de Seguridad en el equipo local

El error que me marcaba era el 193: 0xc1, lamentablemente, como en varias ocasiones con problemas de Windows o de otras aplicaciones, los errores no son nada descriptivos, por lo que había poco de dónde referenciarse, exceptuando quizá el código de error, del que tampoco encontré casi nada en mi búsqueda de internet.

Para mi fortuna, el problema general del que se desactive el Centro de Seguridad es bastante común, y como expliqué un poco en Este artículo que hice para la web de Fermu.com, una causa podría ser que la clave de Registro que registra este servicio no estuviera, o bien tuvieran subclaves o valores corruptos.

La solución en ese caso, basta con volver a importar completamente la clave de wscsvc y reiniciando el sistema, esto hice y después de reiniciar el sistema pensé que todo había quedado solucionado al ver que aparentemente funcionaba:

Service1

La decepción llegó cuando cerré sesión y de nuevo, el Servicio se había desactivado desde el Centro de Actividades, por su parte, en la Consola de Servicios nunca hubo un cambio, todo el tiempo se manuto el servicio detenido y sin descripción.

La causa

¿Qué podía hacer entonces? En este caso, la respuesta era: ¡Empezar a filtrar y probar! Si el problema no se había corregido importando las claves originales de registro, indicaban que el inconveniente no se originaba por ahí, puesto que se mantenían intactas, y en su estado normal, el Servicio debía iniciar con Windows corriendo y en Automático (Inicio retrasado).

Windows al principio estaba leyendo un estado desde la Clave de Registro, pero estaba obteniendo otro desde la Consola de Servicios, y siempre iba a prevalecer el último.

No podía ser soluciones de seguridad, porque no tenía ninguna instalada, y además, tampoco se estaba reflejando cambio en el estado del servicio dentro del Registro de Windows, por lo que nada estaba manipulándolo al iniciar sesión.

Solo me quedaba una opción (Dentro de las posibilidades que conozco), y es que podría haber un problema a nivel de archivos de Windows, y la respuesta a esto me la podría dar una herramienta embebida en el sistema operativo llamada “Comprobador de Archivos del Sistema” (Sfc.exe); básicamente SFC (En sus siglas en inglés), tiene la característica de hacer una búsqueda general de los archivos progetidos del sistema, detectando si alguno o algunos de ellos se ha sobrescrito, o bien se encuentran corruptos, trayendo entonces una copia local del archivo original desde %SystemRoot%System32Dllcache, o bien desde los medios originales de instalación de Windows. Una vez pueda obtener las copias orginales, SFC las remplaza por el archivo corrupto o que se manipuló de nuestro sistema operativo.

*Nota: Toda la información acerca de SFC, la pueden encontrar en esta KB de Microsoft:
http://support.microsoft.com/kb/222193/es

Para correr la herramienta, basta con abrir una consola de comandos con privilegios elevados (Clic derecho, Ejecutar como administrador) y ejecutar: SFC /scannow

Por supuesto, esto hice, y me dio la pista del problema fuente que tenía:

Service3

El resultado fue: “Protección de Recursos de Windows encontró archivos corruptos, pero no pudo repararlos”.

Ya podía estar seguro de que tenía archivos corruptos en mi sistema, y para saber cuáles, además de si tenían que ver con el servicio del Centro de Seguridad, utilicé el Log que genera siempre la herramienta de SFC llamado CBS.log, normalmente lo ubica en el directorio: C:WindowsLogsCBSCBS.log

*Nota: Para abrir el archivo CBS.log, es necesario primero ejecutar un Blog de Notas con privilegios elevados, posteriormente abrir el archivo desde allí.

El archivo CBS.log, como es habitual en cualquier archivo de Logging, genera cientos de eventos, desde el principio, hasta el final del proceso, por lo que como en Process Monitor, se vuelve muy útil empezar a buscar por resultados utilizando palabras claves.

En mi caso seguí buscando lo que me pudiera referenciar al Servicio del Centro de Seguridad, claro está que no con el nombre que aparece en la descripción (Centro de Seguridad), sino con el nombre con el que Windows realmente lo referencia, es decir: wscsvc. Este fue el primer y más importante resultado capturado por el log de SFC:

image

*Nota: Hacer clic en la captura de pantalla para ver la imagen en tamaño completo.

Como ven en los resultados resaltados de la captura anterior, SFC no había podido reparar y reproyectar la dll que ya detectaba como corruta: wscsvc.dll ubicada en C:WindowsSystem32wscsvc.dll.

Cobra sentido todo esto, porque wscsvc, a parte de ser el nombre del Centro de Seguridad, es también el nombre de la dll correspondiente, esto nos indica que si la dll no está funcionando correctamente, no lo hará el Servicio del Centro de Seguridad, y mucho menos se podrá consultar la información, cosa que intenta hacer siempre los valores de Description y DisplayName en la clave de registro correspondiente:

image

Solo por curiosidad, eché un vistazo a las propiedades del sistema operativo, y vaya sorpresa la que me llevé cuando intenté ver los detalles dentro de las Propiedades:

Service6

No se podía ver ni la Descripción del archivo (Con razón), ni la versión, ni el fabricante, etc, etc. ¡No podía ver nada!.

Mientras que si hacía esto en un sistema que estuviera funcionando, era completamente diferente:

Service5

Ahora me podía explicar por qué Windows no podía ni iniciar el servicio, ni acceder a sus datos, ¡La DLL estaba completamente corrupta!

La solución

Lo ideal, sería que SFC hubiera podido remplazarme la DLL sin mucho esfuerzo y de una forma limpia, puesto que al estar corrupta, probablemente una versión funcional debería bastar. Al no poder, sin embargo, decidí hacerlo yo mismo.

Hay un aspecto importante a la hora de modificar o quitar archivos protegidos del sistema, y es que el propietario no suele ser el usuario actual, por más administrador, o miembro del grupo de administradores que sea, este tipo de archivos los posee la cuenta y el servicio de TrustedInstaller, que suele ser la que tiene los privilegios para remplazarlos, es muy común cuando se hace una actualización del sistema operativo que actúen este tipo de cuentas por debajo.

En este orden de ideas, la solución consistía primero en tomar propiedad de wscsvc.dll en el directorio C:WindowsSystem32, para esto, bastaba con ir a las Propiedades, pestaña de Seguridad, botón Avanzado, pestaña de Propietario, y finalmente botón editar para cambiar el propietario por mi usuario o el grupo de administradores:

Service8

Después de tomar propiedad, en la pestaña de Seguridad, debía asignar todos los permisos para que mi usuario, o bien los usuarios que pertenezcan al grupo de Administradores puedan modificar a gusto el archivo:

image

Finalmente, renombrar la DLLa wscsvc.bak.dll y pegar la DLL original (wscsvc.dll) desde un medio de instalación de Windows (Que estuviera montado) o bien desde otro sistema operativo funcional:

Service10

*Nota: Puede ser recomendable volver a modificar los permisos sobre la DLL por motivos de seguridad.

Windows ya debía referenciar a la DLL que copié y no a la antigua que se encontraba corrupta, por lo que reinicié el equipo, fui hasta la Consola de Servicios, y esta fue mi gran sorpresa:

Service11

El Servicio del Centro de Seguridad ahora tenía una descripción, y se encontraba corriendo sin ningún tipo de problema, por supuesto, esto mismo se reflejó en el Centro de Actividades; ¡Problema solucionado! 🙂

Espero que les pueda ser de utilidad, tanto como para mí fue escribirlo y vivirlo.

Saludos,

Checho

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *