1. Включение механизма аудита
Оптимальный инструмент — групповые политики (применять к OU отслеживаемых серверов). Возможно использование аналогичных локальных политик для каждого сервера
«Computer Settings \ Windows Settings \ Security Settings \ Advanced audit policy configuration \ system audit policies \ object access \ audit file system» => «audit events: success» enabled.
Весьма маловероятен сценарий, когда вам будет необходимо мониторить неудачные попытки доступа к файлам. Не отрицаю, что возможен. Но чаще нужно узнать кто удалил (или выложил) файл.
2. Настройка аудита на конкретных папках
Далее непосредственно на серверах, которые хранят данные, используя проводник, зайдя в свойства папки, которую нужно мониторить, включить настройки аудита для группы, которую хотим мониторить. Например, Everyone, если мы хотим отслеживать любые изменения любыми возможными пользователями и сервисами:
«Delete subfolders and file — Successful»
«Delete — Successful»
“Create files / write data — Successful”
“Create folders / append data — Successful”
3. Мониторинг событий
После этого в логах сервера (на котором хранятся файлы) в Security Event Log будут появляться события при создании и удалении файлов и поддиректорий из указанных выше папок.
Отследить конкретных участников операции можно с помощью двух событий:
Event ID: 4660
Description: An object was deleted.
- Сообщает, что файл был удалён.
- Содержит аккаунт того, кто выполнил операцию удаления
- Не содержит имени файла. Только его Handle ID
Event ID: 4663
Description:An attempt was made to access an object.
- Сообщает о какой-либо попытке доступа к файлу.
- Содержит аккаунт того, кто выполнил операцию.
- Содержит Handle ID и имя файла (Object Name)
- Access mask – маска доступа – определяет для каких целей была попытка доступа к файлу
Виды масок доступа:
Тип доступа | Hex | Описание |
ReadData (or ListDirectory) | 0x1 | ReadData – чтение данных из файла или объекта директории.ListDirectory – просмотр содержимого директории. |
WriteData (or AddFile) | 0x2 | WriteData – запись данных в файл.AddFile – создание файла в директории. |
AppendData (or AddSubdirectory or CreatePipeInstance) | 0x4 | AppendData – дописывание данных в файл. Не перезаписывает существующие данные, если дополнительно не содержит флага WriteData.AddSubdirectory – создание поддиректорий. |
DELETE | 0x10000 | Удаление объекта. |
Ключевой источник информации – события 4663:
Раздел Subject содержит информацию об аккаунте, из-под которого производились операции над объектом.
Object – информация о файле (путь, имя, handle)
Process Information содержит информацию о том, какой процесс производил операции с файлом.
В разделе Access Request Information размещена информация о типе доступа и маске доступа.
При создании файла в указанной папке, в Security Event Log появляется пара событий с ID 4663, первое с маской 0х2, второе с маской 0х4.
При удалении файла появляется событие с ID 4663 и маской доступа 0х10000, а также событие 4660. Определить какой именно файл был удалён по событию 4660 можно найдя предваряющее его событие 4663, имеющее идентичный handle.
Для анализа логов можно использовать инструмент LogParser https://www.microsoft.com/en-us/download/details.aspx?id=24659 и, например, такой запрос:
LogParser.exe -i:evt «SELECT TimeGenerated, EventID, Extract_Token(Strings, 1,’|’) AS User, Extract_Token(Strings, 6, ‘|’) AS File, Extract_Token(Strings, 7, ‘|’) AS HandleID INTO 111.docx.txt FROM ‘C:\<all exported security logs>\*.evtx’ WHERE (STRCNT( Strings, ‘111.docx’ ) >0) ORDER BY TimeGenerated DESC»
Где «111.docx» — искомая строка, а C:\<all exported security logs>\*.evtx – путь к лог-файлам, выгруженным в формате EVTX. LogParser понимает и другие форматы.