Process Monitor para resolver incovenientes de Acceso Denegado
Por: Sebastian del Rio / Revisión Técnica: Diana Hernandez
Problema
En reiteradas ocasiones recibimos llamados mencionando que al iniciar uno u otro servicio se recibe un error 0x5 ( Access Denied ). La intención de este documento es brindar un primer paso de troubleshotting para saber que objeto nos esta dando el acceso denegado.
En nuestro caso el servicio de “Task Scheduler” no podía ser iniciado dando un error 0x5 ( Access Denied). El cliente menciono que recientemente había aplicado un Hardening (Plantilla de Seguridad) sobre su servidor. Luego de esto comenzó a ver este incoveniente al levantar el servicio.
Resolución
En principio comenzaremos utilizando la herramienta ERR para verificar que es el numero de error, aunque en este caso es muy conocido el error 5 el cual es un Access Denied. ( Pero es bueno que tengamos en cuenta el uso de esta herramienta)
C:\Err>err 0x5
# Access is denied.
LDAP_COMPARE_FALSE winldap.h
SNMP_ERROR_GENERR winsnmp.h
# 44 matches found for "0x5"
Luego de saber que lo que hemos tenido es un Acceso Denegado nuestra meta es averiguar quien esta denegando este acceso para eso utilizaremos la herramienta Process Monitor, la cual instalaremos en la maquina del incoveniente.Basicamente esta herramienta nos indicara todos los accesos a archivos y registros que se efectuen listados por proceso.
Al ejecutarla y tener la misma corriendo deberemos tratar de reproducir el incoveniente, una vez reproducido podremos detener el log y comenzar su analisis. En nuestro caso sabemos que estamos buscando un Access Denied por lo cual nos concentraremos en este último punto
Procederemos a crear un Filtro llendo al menu FILTER , y seleccionando la opcion Filter o bien presionando la combinacion de teclas Ctrl + L,
Una vez en el menu Process Monitor Filter crearemos un filtro que sea “Result is ACCESS DENIED”
Tendremos el siguiente resultado donde podemos observar que el proceso MSTASK.EXE esta queriendo efectuar una operacion de CreateFile en la ruta D:\WINNT\Tasks\SA.DAT
Perfecto ya tenemos la base de donde esta nuestro incoveniente!
Ahora , precisaremos saber que usuario es el que no tiene permisos , entonces haremos Doble click sobre el Access Denied y veremos las propiedades donde iremos a la solapa Process donde vemos que el user fue NTAUTHORITY\SYSTEM como podemos ver en la siguiente imagen
Hemos verificado a traves del troubleshooting que al intentar iniciar el servicio Task Scheduler el usuario SYSTEM intenta crear un archivo llamado SA.DAT en la ruta %SYSTEMROOT%\Tasks. Entonces iremos a la carpeta %Systemroot%\Tasks En este caso particular esta carpeta no nos mostrara los permisos NTFS por ser una carpeta especial.
Por lo cual deberemos utilizar la aplicacion CACLS para dar los permisos necesarios al usuario SYSTEM.
Cacls tasks /t /e /c /g system:f
En casos normales podremos asignar el permiso directamente de la interfaz grafica.
Entonces los invito a jugar con esta herramienta que más de una vez nos ayuda a resolver inconvenientes no solo de accesos denegados, sino también a entender que es lo que hacen ciertas aplicaciones.
Un uso muy común de esta aplicación para los administradores es verificar que llaves de registro utiliza una aplicación en especial para luego dar permisos sobre esas llaves a un usuario en particular.
Hasta la Proxima!