当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

作者:精品下载站 日期:2024-12-15 00:49:40 浏览:15 分类:玩电脑

如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限


在某些情况下,管理员需要找出哪个进程(程序)或用户更改了 Windows 文件服务器上特定文件夹或文件的 NTFS 权限。本文介绍如何使用审核策略、PowerShell 脚本和 ProcMon 工具跟踪对文件系统对象进行的 NTFS 权限更改。

您需要配置审核策略来跟踪 Windows 文件系统对象上 NTFS 权限的更改。

  1. 打开组策略编辑器。如果要在特定服务器上配置审核文件系统审核策略,请打开本地组策略编辑器控制台 (

    gpedit.msc

    )。如果要在域中的多个设备(例如所有文件服务器)上启用审核,则需要使用组策略管理控制台创建单独的 GPO(

    gpmc.msc

    );

  2. 导航至计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 高级审核策略配置 -> 审核策略 -> 对象访问

  3. 启用审核文件系统选项并选择成功

    [玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

  4. 现在,您需要在要跟踪权限更改的目录的属性中启用审核。打开文件夹属性 -> 转到安全选项卡 -> 高级 -> 审核选项卡 -> 继续 -> 单击添加并添加要跟踪其活动的组(选择主体)。我们在这里指定了每个人

    之前,我们向您展示了如何使用文件系统审核来查找删除 Windows 文件服务器上的文件或文件夹的用户。

  5. 选择类型=成功并启用高级权限中的更改权限取得所有权选项:

    [玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

  6. 不要忘记更新主机上的组策略设置:

    gpupdate /force

现在,如果有人更改了指定文件夹中项目的 NTFS 权限,安全日志中将显示事件 ID 4670 的事件。

打开事件查看器控制台(

eventvwr.msc

) -> Windows 日志 -> 安全。按事件 ID 4670 过滤事件列表(

Permissions on an object were changed

)并打开最新事件。

您将在事件描述中看到更改权限的用户名称(帐户名称:)和进程名称(C:\Windows xplorer.exe)。它还包含有关先前 ACL(原始安全描述符)和新权限列表(新安全描述符)的信息。

[玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

如果要在安全日志中存储更多事件(在较长的时间间隔内),则需要增加事件查看器日志的大小。

请注意,权限是DACL格式的,很难理解。幸运的是,您可以使用内置的 PowerShell cmdlet ConvertFrom-SddlString 将安全描述符定义语言字符串转换为 PSCustomObject。

要查看对象的 NTFS 权限中哪些访问组已更改,请比较旧的和新的安全描述符(从事件 4670 复制 SDDL 值):

$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

在此示例中,您可以看到新的 ACL 授予了读取权限

Builtin\Users

团体。

[玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

您可以使用 Get-WinEvent PowerShell cmdlet 搜索 Windows 事件日志。例如,您可以使用以下代码查找事件 ID 为 4670 的事件,并从脚本中获取 OldSD 和 NewSD 值:

$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

[玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

您可以使用内置的

icacls.exe

工具或 Get-ACL PowerShell cmdlet 来备份目录的当前 NTFS 权限。

如果您需要了解哪个进程和用户正在更改文件夹的 NTFS 权限,可以使用进程监视器实用程序。 (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon)。它允许您实时定位文件系统对象权限更改的来源。

  1. 下载并运行procmon64.exe;

  2. 配置过滤器:

    Filter-> Filter (CTRL+S)Path -> begin with -> Specify the folder path ->IncludeOperation -> is -> SetSecurityFile -> Include ; 

    [玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

  3. 从现在开始,如果有人更改该文件夹中任何对象的 NTFS 权限,您将在 ProcMon 窗口中看到一个新事件。此处,它显示了进程 (explorer.exe) 和更改权限的用户的名称。

[玩转系统] 如何检测谁更改了 Windows 上的文件/文件夹 NTFS 权限

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯