如何檢測誰更改了Windows上的文件/文件夾NTFS的權限

Jacki

在某些情況下,管理員需要找出Windows文件服務器上特定文件夾或文件上的NTFS權限已更改了哪個過程(程序)或用戶。本文展示瞭如何使用審計策略,PowerShell腳本和ProcMon工具跟踪對文件系統對象進行更改的NTFS權限。

您需要配置審核策略,以跟踪Windows文件系統對像上NTFS權限的更改。

了解更多:如何獲得所有權並授予Windows 8/7/Vista中的文件和文件夾的完全控制權限

  1. 打開小組策略編輯。如果要在特定服務器上配置審核文件系統審核策略,請打開本地組策略編輯器(gpedit.msc)。如果要在域中的多個設備上啟用審核(例如所有文件服務器),則需要使用組策略管理控制台創建單獨的GPO(gpmc.msc);
  2. 導航到計算機配置 - >策略 - > Windows設置 - >安全設置 - >高級審核策略配置 - >審核策略 - >對象訪問;
  3. 啟用選項審核文件系統並選擇成功;
  4. 現在,您需要在要跟踪權限更改的目錄的屬性中啟用審核。打開文件夾屬性 - >轉到安全選項卡 - >先進的- >審計選項卡 - >繼續- >單擊添加並添加一個小組(選擇一個委託人),您要跟踪其活動。我們已經指定了每個人這裡;以前,我們向您展示瞭如何使用文件系統審核來查找在Windows文件服務器上刪除文件或文件夾的用戶。
  5. 選擇類型=成功並啟用更改許可擁有所有權高級權限的選項:
  6. 不要忘記更新主機上的組策略設置:gpupdate /force

現在,如果有人更改了指定文件夾中項目的NTFS權限,則事件ID 4670將出現在安全日誌中。

打開活動查看器控制台(eventvwr.msc) - > Windows日誌 - >安全性。 EventID 4670過濾事件列表(Permissions on an object were changed)並打開最新活動。

您將在事件描述中看到更改權限(帳戶名稱::)和過程名稱(C:WindowsSexplorer.exe)的用戶的名稱。它還包含有關以前的ACL(原始安全描述符)和新的權限列表(新安全描述符)的信息。

如果要在安全日誌中存儲更多事件(在更長的時間間隔內),則需要增加事件查看器日誌的大小。

請注意,權限是DACL格式的,難以理解。幸運的是,您可以使用內置的powershell cmdletconvertsfrom-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贈款將權限讀取給BuiltinUsers團體。

您可以使用獲獎的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

您可以使用內置icacls.exe工具或Get-ACLpowershell cmdlet備份目錄的當前NTFS權限。

如果您需要了解哪個過程和用戶​​正在更改文件夾上的NTF權限,則可以使用過程監視器公用事業。 ((https://learn.microsoft.com/en-us/sysinternals/downloads/procmon)。它允許您實時找到對文件系統對象的權限更改的來源。

  1. 下載並運行procmon64.exe;
  2. 配置過濾器:過濾器 - >過濾器(CTRL+S)路徑 - >以 - >開頭Specify the folder path- > include operation-> is->SetSecurityFile- >包括;
  3. 從現在開始,如果有人更改該文件夾中任何對象的NTFS權限,您將在ProcMon窗口中看到一個新事件。在這裡,它顯示了該過程(Explorer.exe)和更改權限的用戶名稱。