[How to] Monitorear Windows con Process Monitor en el inicio y cierre de sesión

La mayoría de los casos que suelo exponer en este blog, muestro cómo utilicé alguna característica de Process Monitor para encontrar pistas, causas o incluso la solución. Una de las características que más he utilizado en casos donde el problema se reproduce al inicio de sesión, o antes, es la de Boot Logging que me permite monitorear Windows incluso después de reiniciar el equipo.

Sin embargo, no siempre es práctico tener tantos datos cuando se está buscando algo muy concreto pero que se reproduce en un escenario de cierre o inicio de sesión. En este post mostraré cómo aprovechar PsExec y Process Monitor para cubrir este escenario sin necesidad de habilitar Boot Logging.

*Nota: Si lo que se quieres es monitorear controladores u otro tipo de cosas que suceden antes del inicio de sesión, la única opción es Boot Loggging.

Caso real de ejemplo:

Ahora, consideremos un problema que ha tenido cierta frecuencia en los foros de Microsoft; básicamente iniciamos sesión en Windows y nos encontramos con un mensaje de error como este:

2015-04-05_21-27-00

Como casi siempre pasa, después de aceptar el mensaje, no sucede nada más. El Administrador de tareas –si estamos de suerte- para este caso mostraría algo así:

2015-04-05_21-29-56

Deshabilitarlo serviría para evitar el mensaje, pero estaría actuando directamente sobre el proceso real de wscript.exe y no sobre la causa raíz. Obviamente NO iríamos por el camino fácil. =)

Como dije al inicio, el camino directo sería usar Boot Logging; aun así podemos combinar Process Monitor y PsExec para hacer algo más productivo:

Requerimientos

1. Descargar Process Monitor desde aquí:
https://technet.microsoft.com/es-es/sysinternals/bb896645

Descomprimir el archivo .ZIP.

2. Descargar PsExec desde aquí:
https://technet.microsoft.com/es-es/sysinternals/bb897553

Descomprimir el archivo .ZIP.

3. Copiar y pegar Procmon.exe y PsExec.exe al directorio raíz C:

2015-04-05_21-42-22

Combinando Procmon y PsExec

Hacemos clic derecho en el botón de Inicio y luego en Símbolo del sistema (administrador):

2015-04-05_21-46-25

Aceptamos la ventana del UAC y una vez en la consola, ejecutamos en orden:

cd C:

Esto nos ubicará en el directorio raíz C:

2015-04-05_21-50-11

Una vez en la raíz, podremos ejecutar sin problemas Procmon y PsExec. Para que Proccess Monitor siga ejecutándose incluso después del cierre de sesión, ejecutamos:

PsExec –s –d C:Procmon.exe /AccepEula /Quiet /BackingFile C:Log.pml

2015-04-05_21-54-00

*Nota: PsExec me permite ejecutar procesos remotamente, pero además utilizar el usuario con súper poderes SYSTEM con la bandera –s; –d es para que PsExec se cierre sin esperar a que Procmon.exe lo haga y lo demás es para aceptar el EULA, que no muestre mensajes y que todo se vaya guardando en el archivo Log.pml ubicado en la misma unidad.

Utilizando Process Explorer de Sysinternals se puede verificar que Process Monitor está en ejecución, bajo la sesión 0 perteneciente a los servicios y con el usuario de SYSTEM:

2015-04-05_21-59-36

Procedemos a cerrar sesión, iniciar nuevamente, esperar a que el mensaje extraño vuelva a salir y hacemos lo siguiente:

Clic derecho otra vez en el botón de Inicio, Símbolo del sistema (administrador):

2015-04-05_21-46-25

En el símbolo del sistema, ejecutamos:

cd C:

2015-04-05_21-50-11

Finalmente, ejecutamos lo siguiente para terminar el monitoreo:

PsExec –s –d C:Procmon.exe /AcceptEula /Terminate

2015-04-05_22-03-38

Si todo sale bien, el log nos habrá quedado guardado en la raíz del disco local C:

2015-04-05_22-05-55

Lo único que queda es abrir el log y y empezar a jugar con Process Monitor para descubrir qué causa el mensaje de error.

Por ejemplo y para este caso, lo primero sería referenciar detalles sobre el proceso que lanza el wscript.exe; esto es fácil presionando las teclas CTRL + T para abrir el árbol de procesos y ubicar la ocurrencia que buscamos de wscript:

2015-04-05_22-09-02

Tal como ven, el proceso padre fue Explorer.exe, con su respectivo PID 2384.

Ya que es el Explorer.exe, indica que probablemente se ejecutó algún archivo al momento de iniciar sesión, no necesariamente que el proceso haya sido alterado.

Una buena práctica es siempre ver qué se está lanzando en ubicaciones tan comunes como la carpeta de Inicio que ha existido durante tanto tiempo y que le dice a Windows todo lo que debe ejecutar automáticamente.

Para que Process Monitor nos muestre las operaciones de lectura que hace solo en este directorio, podemos filtrar diciendo que excluya todos los PID diferentes al 2384 –en este caso-, que el resultado sea SUCCESS, la ruta contenga Startup y la categoría sea Read:

2015-04-05_22-15-03

Noten que en la mayoría excluí lo que no quería, con el resultado que deseaba.

El resultado sería más o menos así:

2015-04-05_22-19-09

Gracias a que lo que dejaría Process Monitor sería muy conciso, identificar un archivo extraño como un acceso directo se podría hacer sin mayor dificultad.

*Nota: No me enfoqué en los filtros de Process Monitor, porque el objetivo era mostrar cómo ejecutarlo al cerrar e iniciar sesión; sin embargo intentaré crear otros artículos donde detalle más el tema.

Espero sea de utilidad.

Saludos.

Checho

Deja un comentario

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