Identificar cambios en el Registro al aplicar una Directiva de Grupo en Windows utilizando Process Monitor

Desde que empecé a resolver problemas de Windows utilizando algunas herramientas de Sysinternals, he querido dedicar escritos únicamente al uso adecuado de ellas, pero explicarlas técnicamente no es tan sencillo, pues las mejores requieren fundamentos de Windows Internals para interpretar de la mejor forma sus resultados. Sin embargo, encuentro útil explicar un poco cómo usarlas con algunos casos prácticos, como el que pasaré a detallar en este post.

Si trabajan, o han trabajado con el mundo de las Directivas de Grupo, seguramente alguna vez les ha tocado indagado en la web qué clave y valores de Registro se crean para que Windows reconozca alguna directiva; incluso también para forzar configuraciones en ediciones de Windows que no se pueden unir a un dominio de forma predeterminada. La pregunta que probablemente les surge es: ¿De qué forma puedo aprender a buscar estos cambios en el Registro? Aquí la respuesta más fácil es, por supuesto, Process Monitor.

Introducción a Process Monitor

Process Monitor es una de las mejores herramientas entre las gratuitas y de pago, para monitorear TODO lo que sucede en Windows mientras estás funcionando con el sistema operativo; incluso lo que sucede antes de que se inicie sesión en el equipo. Con Process Monitor, es posible saber qué operaciones se están llevando a cabo, enfocado principalmente a sistema de archivos y Registro de Windows.

Al ejecutar Process Monitor, veremos de inmediato cientos de eventos suceder por debajo:

2014-12-03_13-19-13

A parte de los eventos, como lo ven en la captura, Process Monitor indica principalmente el proceso que está llevando a cabo la tarea, la operación que se está realizando, la ruta donde se está haciendo y lo más importante, el resultado obtenido.

En la barra de herramientas, debajo de todos los menús, verán el icono de Filtros, señalado también en la captura anterior; esta es una configuración fundamental cada que estemos buscando resultados en Process Monitor:

2014-12-03_15-33-35

En la ventana de Filtros, podremos escoger entre diferentes tipos como: Categoría, Operación, Ruta, Resultado, Usuario, etc; indicarle la condición que se compone de unas palabras claves como “es”, “contiene”, etc con un cuadro de texto para personalizar palabras claves o procesos (dependiendo del filtro) y finalmente decirle si queremos incluir o excluir ese filtro en los resultados de Process Monitor:

2014-12-03_15-42-06

Cada que personalicemos un filtro, hacemos clic en el botón Add para que se incluya en el resultado de Process Monitor y creemos más si queremos. Se pueden crear tantos filtros como deseemos; la clave está en lograr un resultado preciso y productivo.

Con esta mínima introducción, pasaré a mostrarles de qué forma podemos aprovechar estos filtros para reconocer las claves y valores de registros creados cada que se implementa una directiva de grupo.

Identificando claves y valores con Process Monitor

Como seguramente es bien sabido por ustedes, las directivas de grupo se aplican en el sistema operativo cuando se reinicia el equipo, o se fuerzan utilizando gpupdate; es en esos momentos cuando Windows es notificado del cambio y crea las respectivas claves y valores de Registro para que la configuración sea distinta.

*Nota: La mayoría de las directivas de grupo no son más que una clave y uno o más valores de registro, pero no siempre es así pues hay configuraciones más complejas que otras.

La forma más fácil para descubrir los cambios con Process Monitor, es habilitando la respectiva plantilla y monitorear el equipo cliente mientras se está haciendo la actualización con el gpupdate. Vamos a seguirlo en un ejemplo práctico:

1. Lo primero, es configurar la respectiva directiva de grupo desde el controlador de dominio, o bien localmente si se aplica como directiva local. Para este ejemplo, utilizaré una de las directivas que más generó interés con la salida de Windows 8.1 y es la posibilidad de ingresar directamente en el escritorio de Windows en vez de la Pantalla de Inicio.

La directiva está ubicada en:

User ConfigurationPoliciesAdministrative TemplatesStart Menu and Taskbar

Se llama específicamente: Go to the desktop instead of Start when signing in.

2014-12-03_8-07-54

*Nota: Obviamente no tiene que ser esa para que funcione el procedimiento.

2. A continuación, en el equipo cliente, hacemos clic derecho sobre el botón de Inicio (si estamos en Windows 8.1) y seleccionamos Símbolo del sistema (Administrador). Dejamos la consola abierta.

3. Procedemos a lanzar Process Monitor, presionamos CTRL + X cuando cargue para limpiar la primera traza y lo dejamos corriendo.

4. Ejecutamos desde la consola: gpupdate /force

2014-12-03_21-16-24

5. Volvemos a Process Monitor y hacemos clic en el icono de la lupa para detener el monitoreo. Nos debe aparecer una cruz roja sobre ella:

2014-12-03_21-18-40

6. En Process Monitor, con toda la información lista, hacemos clic en el icono de Filtro que mostré anteriormente, o vamos al menú Filter > Filter.

7. Esta es la parte más importante, pues aplicaremos los filtros para que toda esa tonelada de información se nos minimice al punto de identificar rápidamente lo que necesitamos.

Aplicando filtros

Debido a que son varios filtros y cada uno tiene su intención, los describiré uno por uno:

1. En el primer filtro le diremos a Process Monitor que nos muestre por categoría de escritura, operación que incluye crear claves y valores de registro; no nos interesan operaciones de lectura o consulta.

Para esto, escogemos en la primera selección Category, luego indicamos is en la segunda, seleccionamos Write en la tercera y finalmente clic en el botón de Add:

2014-12-03_21-35-56

Se darán cuenta que empieza a reducirse la cantidad de eventos mostrados, pero aún así faltan muchísimos, ¡Pero faltan más filtros!

2. En el segundo filtro, Process Monitor nos mostrará, los eventos de la categoría Write, que correspondan solo a la operación de RegSetValue, que representa la creación de valores de registro.

Para esto, escogemos en la primera Operation, luego is en la segunda, RegSetValue en la tercera y finalmente clic en Add:

2014-12-03_21-42-39

3. En nuestro tercer filtro, Process Monitor sabrá que las operaciones de escritura, correspondientes solo a creación de valores de registro, deberán mostrarse solo en lo que corresponda a HKEY_CURRENT_USER, es decir, al usuario que está autenticado.

Para esto, escogemos en la primera Path, luego begins with, escribimos HKCU en la tercera y clic en el botón Add:

2014-12-03_21-46-32

*Nota: Este tercer filtro tendrá sentido, solo si la directiva de grupo se creó debajo de User Configuration; de lo contrario, habrá que crear el mismo pero en vez de HKCU, indicar HKLM para especificar que la configuración es por máquina y no usuario.

4. Para el cuarto filtro, crearemos uno muy similar al anterior, pero esta vez indicaremos que nos filtre sólo la creación de valores para el usuario en claves de registro que contengan la palabra: Policies.

Para esto, escogemos nuevamente Path en la primera, luego contains en la segunda, para la tercera escribimos Policies y clic en Add:

2014-12-03_21-51-43

5. En el quinto filtro, le diremos que el proceso responsable para todas estas operaciones, debe ser únicamente svchost.exe.

Para lo anterior, escogemos en la primera Process Name, la segunda volvemos al is, seleccionamos svchost.exe en la lista de la tercera y clic en Add:

2014-12-03_21-59-38

Hasta este punto, deberíamos tener los filtros así:

2014-12-03_22-01-18

Hacemos clic en el botón Apply y después OK.

Sin embargo, hay un Filtro más que no sobra ponerlo y es excluir todo lo que se haga sobre HKLM, sin importar que el proceso corresponda a svchost.exe o sea una operación de RegSetValue.

Para esto, volvemos a la ventana de Filtros (CTRL + L), escogemos en la primera Path, en la segunda begins with, escribimos HKLM para la tercera, cambiamos el Include por el Exclude para la cuarta selección y clic en Add:

2014-12-03_22-04-02

Muy seguramente los eventos ya los podrán ver en una sola pantalla, sin ni siquiera deslizar la barra de desplazamiento hacia abajo, así que sería relativamente fácil identificar, por descarte, cuál es el valor que se crea al aplicar la directiva, puesto que suelen tener nombres representativos a la configuración.

Sin embargo, una forma en que podríamos quitar varios más, es decirle a Process Monitor que sólo muestre lo que se escribe en la sub-clave de Policies, excluyendo todo lo demás, así pertenezcan al proceso y se escriban sobre HKCU (En este caso).

Para esto, volvemos a los Filtros (CTRL + L), escogemos Path en la primera, contains para la segunda, escribimos Group Policy en la tercera, seleccionamos Exclude en la cuarta y clic en el botón Add nuevamente:

2014-12-03_22-14-05

Clic en Apply y OK.

Si todo esto salió bien, deberían tener un número muy reducido de resultados, tanto que a primera vista sabrían qué es lo que están buscando. Por ejemplo, en mi caso solo obtuve dos:

2014-12-03_22-17-01

Lo que sigue es simplemente deducir basados en el nombre de valor o valores. Por ejemplo, para mi caso que estaba aplicando una configuración que permitía ir al escritorio directamente al iniciar sesión y no pasar por la Pantalla de Inicio, el segundo valor con el nombre de GotoDesktopOnSignIn seguramente es más relevante que el primero:

2014-12-03_22-17-012

Ahora bien, ¿Qué pasa si quiero monitorear otras directivas? ¿Debo realizar otra vez todos los filtros? La respuesta es: ¡No!

Process Monitor es capaz de guardar los filtros, incluso después de cerrado; sin embargo, no es necesario cerrarlo y abrirlo para poder monitorear otra vez, basta con presionar las teclas CTRL + X o ir al menú Edit > Clear Display y proceder a actualizar las directivas desde una consola con gpupdate /force para ver los resultados en acción al terminar:

2014-12-03_22-35-07

*Nota: En la captura anterior, como pueden ver, tengo resultados de diferentes directivas.

Es importante denotar que debemos construir cuidadosamente los filtros dependiendo si es para User Configuration o Computer Configuration. En el primero, como dije anteriormente, corresponde a HKCU, pero en caso de ser el segundo, lo tendríamos que cambiar y adecuar a HKLM.

Sobra decir además que si se quiere llevar esas configuraciones a otro equipo, basta con entrar al Registro y exportar esas claves.

Espero con el tiempo y a medida coja más y más práctica con Process Monitor y otras herramientas de Sysinternals, traerles artículos similares.

No olviden seguirme en Twitter: www.twitter.com/secalderonr

Saludos.

Checho