How to get Security Log with non-administrative user

в 9:40, , рубрики: Event Viewer, Get-EventLog, Get-WinEvent, powershell, Security Log, windows, системное администрирование

How to get Security Log with non-administrative user - 1

Привет! Читайте под катом как получить доступ к логу безопасности Windows без прав администратора. Эта будет не первая статья на Хабре связанная с логами Windows и наверно не самая оригинальная, но на мой взгляд я потратил слишком много времени на поиск простого решения для чтения логов обычным пользователем, вот я и решил поделиться «историей своего успеха».

Также пришлось сравнить скорость работы Powershell командлетов Get-WinEvent и Get-EventLog.

Все что находится под катом актуально для Windows Server 2008R2/2012R2, Windows 10 Pro (1809), на других версиях я не проверял, думаю что с продуктами 2016 и 2019 годов ситуация аналогичная.

И так, по умолчанию у рядового пользователя прав на чтение логов безопасности нет.
При попытке получить логи вы получите ошибку.

How to get Security Log with non-administrative user - 2

И через Event Viewer в доступе также будет отказано.

How to get Security Log with non-administrative user - 3

SHOWTIME

Добавим пользователя в локальную группу Event Log Readers.

How to get Security Log with non-administrative user - 4

Далее предоставляем права на чтение ветки реестра MACHINESystemCurrentControlSetServicesEventlogSecurity.

How to get Security Log with non-administrative user - 5

Без изменения прав на эту ветку реестра, прочитать параметры лога безопасности не получится, соответственно не получится узнать место расположение и имя файла с логами. Security, это единственный раздел сервиса Eventlog который не наследует права доступа от корня.

Вот как выглядят права для MACHINESystemCurrentControlSetServicesEventlog.

How to get Security Log with non-administrative user - 6

Проверяем, оба командлета Get-WinEvent и Get-EventLog работают!
Позже вернусь к сравнению этих командлетов…

How to get Security Log with non-administrative user - 7

Manage auditing and security log

Если пользователю необходимо предоставить права на отчистку лога, вам придется отредактировать групповую политику. Пользователю или группе пользователей необходимо добавить права Manage auditing and security log.

Находится данная группа тут Computer ConfigurationWindows SettingsSecurity SettingsLocal PoliciesUser Rights Assignment.

How to get Security Log with non-administrative user - 8

Более подробно про Manage auditing and security log можно прочитать тут

This policy setting determines which users can specify object access audit options for individual resources such as files, Active Directory objects, and registry keys. These objects specify their system access control lists (SACL). A user who is assigned this user right can also view and clear the Security log in Event Viewer. For more info about the Object Access audit policy, see Audit object access.

Проверяем, все работает как и было обещано, логи были отчищены…

How to get Security Log with non-administrative user - 9

Другие логии отчистить прав нету.

How to get Security Log with non-administrative user - 10

Честно говоря, не могу придумать сценарий где пользователю нужно выдать права на отчистку логов безопасности, но такая возможность присутствует.

Get-WinEvent VS Get-EventLog

Пришло время сравнить эти два командлета

Get-EventLog

Description:

The Get-EventLog cmdlet gets events and event logs on the local and remote computers.

You can use the cmdlet's parameters and property values to search for events. This cmdlet gets events that match the specified property values.

The cmdlets that contain the EventLog noun work only on classic event logs. To get events from logs that use the Windows Event Log technology in Windows Vista and later Windows versions, use Get-WinEvent.

Get-WinEvent

Description:

The Get-WinEvent cmdlet gets events from event logs, including classic logs, such as the System and Application logs, and the event logs that are generated by the Windows Event Log technology introduced in Windows Vista. It also gets events in log files generated by Event Tracing for Windows (ETW).

Without parameters, a Get-WinEvent command gets all the events from all the event logs on the computer. To interrupt the command, press CTRL + C.

Get-WinEvent also lists event logs and event log providers. You can get events from selected logs or from logs generated by selected event providers. And, you can combine events from multiple sources in a single command. This cmdlet allows you to filter events by using XPath queries, structured XML queries, and simplified hash-table queries

Согласно описания, Get-WinEvent умеет работать с большим количеством журналов которые появились в WIndows Vista.

Для наглядности вот списки с которыми работают эти командлеты, вывод для Get-WinEvent я остановил.

How to get Security Log with non-administrative user - 11

Но есть одно но, производительность имеет значение, сравните время выполнения запросов.

How to get Security Log with non-administrative user - 12

Время работы Get-WinEvent просто поражает, обратите внимание на количество записей в логах Applocation и Security, количество событий примерно одинаковое 3400-3600, но при этом разница по времени выполнения почти 20 раз…

Get-WinEvent тратит 127 секунд против 52 секунд Get-EventLog для чтения событий Application.

И шах и мат, Get-WinEvent тратит 2020 секунд против 45 секунд Get-EventLog для чтения событий Security.

Если выполнить те же команды локально все выглядит не так уж и плохо, но даже локально Get-EventLog работает с логами безопасности в 50 раз быстрее чем Get-WinEvent.

How to get Security Log with non-administrative user - 13

И еще один пример, уже чуть более осмысленный, получения событий с кодом 4624 An account was successfully logged on.

How to get Security Log with non-administrative user - 14

Что тут сказать, цифры не врут…

Non-administrator access to DC Event logs

И на заключение я оставил тему получения доступа к логам безопасности на домен контроллере.

Все выше написанное актуально и для домен контроллера с некоторыми поправками.

1 — Группу Event Log Readers вы найдете в объектах Built-in security principals.

How to get Security Log with non-administrative user - 15

Добавляя пользователя в данную группу вы даете права только на чтение логов на домен контроллерах.

И не забывайте что на каждом из домен контроллеров необходимо дать права на чтение ветки реестра MACHINESystemCurrentControlSetServicesEventlogSecurity.

Вот пример, прочитать лог рядового сервера разрешений нет, если вам нужно читать логи с других машин домена, используйте групповые политики, для добавления пользователей или групп пользователей в локальные группы Event Log Readers.

How to get Security Log with non-administrative user - 16

2 – Для добавления прав на отчистку логов необходимо редактировать политику Default Domain Controllers Policy.

3 – Для разрешения запуска заданий от имени пользователя на домен контроллере необходимо также редактировать Default Domain Controllers Policy и дать пользователю права Log on as a batch job.

4 — Будьте предельно внимательными при редактировании дефолтных политик домена!

P.S.

Краткий список ресурсов, которые мне помогли:

На мой взгляд полезные публикации на Habr, темы которых касаются логов Windows:

The End

Автор: dklm

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js