Кто изменил права доступа к файлу или папке в Windows?

В некоторых случаях администратору нужно определить какой процесс (программа) или пользователь изменил NTFS права доступа на папку или файл на файловом сервере Windows. В этой статье мы покажем, как отслеживать изменения NTFS разрешений на объектах файловой систем с помощью полит аудита, скриптов PowerShell и утилиты ProcMon.

Чтобы отслеживать изменения NTFS разрешений на объекты файловой системы Windows, вам нужно настроить политику аудита.

  1. Откройте редактор групповых политик. Если вы хотите настроить аудит доступа на одном конкретном сервере, запустите консоль редактора локальной групповой политики ( gpedit.msc ). Если нужно настроить аудит на нескольких устройствах в домене (например, на всех файловых серверах), нужно создать отдельную GPO с помощью консоли Group Policy Management ( gpmc.msc );
  2. Перейдите в раздел GPO Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> Audit Policies -> Object Access ;
  3. Включите параметр Audit File System и выберите Success ;
  4. Теперь нужно включить аудит в свойствах каталога, в котором нужно отслеживать изменения. Откройте свойства папки -> вкладка Security -> Advanced -> вкладка Auditing -> Continue -> нажмите кнопку Add и добавьте группу (select a principal), чьи действия вы хотите отслеживать. Мы указали здесь Everyone ;
    Ранее мы показывали как использовать аудит файловой системы чтобы найти пользователя, который удалил файл или папку на файловом сервере Windows .
  5. Выберите Type = Success и в разделе Advanced Permissions включите опции Change Permissions и Take Ownership ;
  6. Обновите настройки групповых политик на хосте: gpupdate /force

Если кто-то изменил NTFS права на объекты в указанной папке, в журнале Security появится событий с EventID 4670.

Откройте консоль Event Viewer ( eventvwr.msc ) -> Windows Logs -> Security. Включите фильтр по событию с ID 4670 ( Permissions on an object were changed ). Откройте последнее событие.

В описании события видно имя пользователя, которые изменил разрешения (Account Name:) и имя процесса ( C:Windowsexplorer.exe ). В описании события видна информация о предыдущих разрешениях (Original Security Descriptor) и новый список доступа (New Security Descriptor).

Чтобы хранить в журнале Security большее количество событий (за больший интервал времени) нужно увеличить размер лога Event Viewer .

Обратите внимание что разрешения указаны в формате DACL, и сложны для понимания.Для преобразования строки в формате Security Descriptor Definition Language в объект PSCustomObject нужно использовать встроенный PowerShell командлет ConvertFrom-SddlString .

Чтобы увидеть, какие группы доступа были изменение в NTFS разрешениях на объект, нужно сравнить старый и новый дескрипторы безопасности (скопируйте код SDDL из события 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

В данном примере видно, что в новом ACL были добавлены права чтения для группы BuiltinUsers .

Для поиска в журнале событий Windows можно использовать PowerShell командлет Get-WinEvent . Чтобы найти событий с Event 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

Для резервного копирования текущих NTFS разрешений каталога можно использовать утилиту icacls.exe или PowerShel командлет Get-ACL .

Если вам нужно только понять, какой процесс и пользователь меняют NTFS разрешения на папку, можно воспользоваться утилитой Process Monitor ( https://learn.microsoft.com/en-us/sysinternals/downloads/procmon ). Она позволит в реальном времени найти источник изменений.

  1. Скачайте и запустите procmon64.exe ;
  2. Настройте следующие фильтры Filter-> Filter ( CTRL+S )Path -> begin with -> укажите путь к папке ->IncludeOperation -> is -> SetSecurityFile -> Include
  3. Теперь, если кто-то изменит NTFS права на любой объект в этой папке, в окне ProcMon появится новое событие. В нем видно процесс (explorer.exe) и имя пользователя, который изменил разрешения.
admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago