En algunos casos, el administrador necesita averiguar qué proceso (programa) o usuario ha cambiado los permisos NTFS en una carpeta o archivo específico en un servidor de archivos de Windows. Este artículo muestra cómo realizar un seguimiento de los cambios de permisos NTFS realizados en los objetos del sistema de archivos mediante la política de auditoría, los scripts de PowerShell y la herramienta ProcMon.
Debe configurar una política de auditoría para realizar un seguimiento de los cambios en los permisos NTFS en los objetos del sistema de archivos de Windows.
- Abra el Editor de políticas de grupo. Si desea configurar la política de auditoría del sistema de archivos de auditoría en un servidor en particular, abra la consola del Editor de políticas de grupo local (
gpedit.msc). Si desea habilitar la auditoría en varios dispositivos de un dominio (por ejemplo, todos los servidores de archivos), debe crear un GPO independiente mediante la consola de administración de políticas de grupo (gpmc.msc); - Navegar aConfiguración del equipo -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Configuración avanzada de políticas de auditoría -> Políticas de auditoría -> Acceso a objetos;
- Habilitar la opciónAuditar el sistema de archivosy seleccioneÉxito;

- Ahora necesita habilitar la auditoría en las propiedades del directorio en el que desea realizar un seguimiento de los cambios de permisos. Abra las propiedades de la carpeta -> vaya aSeguridadpestaña ->Avanzado->Revisión de cuentaspestaña ->Continuar-> haga clicAgregary agregue un grupo (seleccione un director) cuyas actividades desee realizar un seguimiento. hemos especificadoTodosaquí; Anteriormente, le mostramos cómo utilizar la auditoría del sistema de archivos para encontrar al usuario que eliminó un archivo o carpeta en un servidor de archivos de Windows.
- SeleccionarTipo=Éxitoy habilitar elCambiar permisosyTomar posesiónopciones en Permisos avanzados:


- No olvide actualizar la configuración de la Política de grupo en el host:
gpupdate /force
Ahora, si alguien ha cambiado los permisos NTFS en elementos en la carpeta especificada, un evento conidentificador de evento 4670aparecerá en el registro de seguridad.
Abra la consola del Visor de eventos (eventvwr.msc) -> Registros de Windows -> Seguridad. Filtre la lista de eventos por EventID 4670 (Permissions on an object were changed) y abra el último evento.
Verá el nombre del usuario que cambió el permiso (Nombre de cuenta:) y el nombre del proceso (C:Windowsexplorer.exe) en la descripción del evento. También contiene información sobre la ACL (Descriptor de seguridad original) anterior y la nueva lista de permisos (Nuevo descriptor de seguridad).


Si desea almacenar más eventos en el registro de seguridad (durante un intervalo de tiempo más largo), deberá aumentar el tamaño del registro del Visor de eventos.
Tenga en cuenta que los permisos están en formato DACL y son difíciles de entender. Afortunadamente, puedes utilizar el cmdlet integrado de PowerShell.ConvertirDe-SddlStringpara convertir una cadena del lenguaje de definición de descriptor de seguridad en un PSCustomObject.
Para ver qué grupos de acceso se han modificado en los permisos NTFS del objeto, compare los descriptores de seguridad antiguos y nuevos (copie los valores SDDL del evento 4670):
$oldperm=ConvertFrom-SddlString "D:PAI(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;S-1-5-21-1774357850-3643260196-2143367957-1125)(A;OICI;0x1301bf;;;S-1-5-21-1774357850-3643260196-2143367957-1124)"
$newperm=ConvertFrom-SddlString "D:PARAI(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICI;0x1301bf;;;S-1-5-21-1774357850-3643260196-2143367957-1124)(A;OICI;0x1200a9;;;S-1-5-21-1774357850-3643260196-2143367957-1125)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)"
Compare-Object -ReferenceObject $oldperm.DiscretionaryAcl -DifferenceObject $newperm.DiscretionaryAcl|FL
En este ejemplo, puede ver que la nueva ACL otorga permisos de lectura alBuiltinUsersgrupo.
Lea también:Cómo tomar propiedad y otorgar permisos de control total a archivos y carpetas en Windows 8/7/Vista


Puede utilizar el cmdlet Get-WinEvent PowerShell para buscar en el registro de eventos de Windows. Por ejemplo, puede usar el siguiente código para buscar eventos con ID de evento 4670 y obtener valores OldSD y NewSD del script:
$event=Get-WinEvent -FilterHashtable @{logname="Security";id=4670} -MaxEvents 1
[xml]$xmlevent = $event.ToXml()
$eventobj = New-Object System.Management.Automation.PSObject
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[1].name -Value $xmlevent.Event.EventData.Data[1].'#text'
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[8].name -Value $xmlevent.Event.EventData.Data[8].'#text'
$eventobj | Add-Member Noteproperty -Name $xmlevent.Event.EventData.Data[9].name -Value $xmlevent.Event.EventData.Data[9].'#text'
$eventobj|format-list


Puedes usar el incorporadoicacls.exeherramienta o elGet-ACLCmdlet de PowerShell para realizar una copia de seguridad de los permisos NTFS actuales de un directorio.
Si necesita comprender qué proceso y usuario están cambiando los permisos NTFS en una carpeta, puede usar elMonitor de procesoutilidad. (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Le permite localizar la fuente de los cambios de permisos en los objetos del sistema de archivos en tiempo real.
- Descargue y ejecute procmon64.exe;
- Configure el filtro: Filtro-> Filtro (
CTRL+S)Ruta -> comenzar con ->Specify the folder path->IncluirOperación -> es ->SetSecurityFile-> Incluir;

- De ahora en adelante, si alguien cambia los permisos NTFS en cualquier objeto de esa carpeta, verá un nuevo evento en la ventana de ProcMon. Aquí muestra el proceso (explorer.exe) y el nombre del usuario que cambió los permisos.
















