SOT

Security Orchestration Tools

Напишите нам на sales@securityvision.ru или закажите демонстрацию

Практика ИБ. Работа с подсистемой журналирования Windows

Практика ИБ. Работа с подсистемой журналирования Windows



Руслан Рахметов, Security Vision


В предыдущей статье мы описали политики аудита Windows, значимые с точки зрения защиты информации, а также обсудили утилиту Sysmon. В настоящей статье мы рассмотрим несколько полезных «фич» при работе со встроенной системой журналирования Windows для того, чтобы показать, что для построения грамотной системы мониторинга событий ИБ можно воспользоваться и штатным функционалом ОС. Приступим!


Как мы уже говорили, начиная с Microsoft Windows Server 2008 и Vista в Windows используются политики расширенного аудита событий безопасности, которые настраиваются достаточно гибко и дают массу значимой с точки зрения ИБ информации, позволяя выстраивать продуманную систему мониторинга событий безопасности. Для работы с подсистемой журналирования можно не только использовать графическую оболочку, но и осуществлять администрирование и точную настройку из командной строки. Для этого в ОС Windows существует утилита wevtutil , которая позволяет управлять свойствами конкретных журналов аудита, получать текущие настройки журналирования, искать интересующие нас данные в журналах, в том числе в событиях аудита информационной безопасности, причем как локально, так и на удаленных устройствах.


Например, для увеличения размера журнала Sysmon до 512 МБайт следует выполнить команду

wevtutil sl Microsoft-Windows-Sysmon/Operational /ms:536870912 (размер указывается в байтах).


Для установки разрешения на ротацию, т.е. перезапись старых событий в журнале более новыми, следует использовать опцию retention со значением false (значение true означает, что новые события не будут перезаписывать старые, что может привести к потере информации в случае переполнения журнала):

wevtutil sl Microsoft-Windows-Sysmon/Operational /rt:false


Для просмотра детальных свойств определенного журнала с отображением прав доступа к нему в SDDL-синтаксисе следует выполнить команду

wevtutil gl security (где Security - имя встроенного журнала безопасности).


Простой текстовый поиск по лог-файлу, в том числе и экспортированному в форматы evtx и etl , можно осуществить командой

wevtutil qe "C:\path\to\file.evtx" /lf:true /f:text | find /i "some_text"


Наконец, выполнив необходимые настройки файлов журналов Windows, перейдем непосредственно к поиску интересующей информации. Заметим, что в случае включения всех рекомендованных политик аудита ИБ сами журналы событий становятся достаточно объемными, поэтому поиск по их содержимому может быть медленным (этих недостатков лишены специализированные решения, предназначенные в том числе для быстрого поиска информации - Log Management и SIEM-системы). Отметим также, что по умолчанию не все журналы Windows отображаются к графической оснастке (eventvwr.msc), поэтому в данной оснастке следует перейти в меню «Вид» и отметить check-box «Отобразить аналитический и отладочный журналы».


Итак, поиск по журналам аудита будем осуществлять с помощью встроенного редактора запросов XPath (XPath queries). Открыв интересующий нас журнал, например, журнал безопасности Windows (вкладка «Журналы Windows» -> «Безопасность» / «Security»), нажатием правой кнопки мыши на имени журнала выберем пункт «Фильтр текущего журнала». Нам откроется графический редактор поисковых запросов, при этом для наиболее продуктивной работы следует открыть вторую вкладку открывшегося окна с названием XML, отметив внизу check-box «Изменить запрос вручную». Нам будет предложено изменить XML-текст (по сути, XPath запрос) в соответствии с нашими критериями поиска. Результат запроса будет также представляться в различных формах, но для лучшего понимания и получения детального контента в конкретном событии рекомендуем переключиться на вкладку «Подробности», а там выбрать radio-button «Режим XML», в котором в формате «ключ-значение» будут представлены данные события безопасности.


Приведем несколько полезных XPath запросов с комментариями.

1. Поиск по имени учетной записи в журнале Security - возьмем для примера имя Username:

<QueryList>

<Query Id="0" Path="Security">

<Select Path="Security">*[EventData[Data[@Name='TargetUserName']='Username']]

</Select>

</Query>

</QueryList>

 

2. Поиск по значению конкретного свойства события в журнале Sysmon - возьмем для примера поиск событий, в которых фигурировал целевой порт 443:

<QueryList>

<Query Id="0" Path="Microsoft-Windows-Sysmon/Operational">

    <Select Path="Microsoft-Windows-Sysmon/Operational">*[EventData[Data[@Name='DestinationPort'] = '443']]</Select>

</Query>

</QueryList>

 

3. Произведем поиск сразу по двум условиям - возьмем для примера событие входа с EventID=4624 и имя пользователя Username:

<QueryList>

<Query Id="0" Path="Security">

    <Select Path="Security">

*[System[(EventID=4624)]]

and

*[EventData[Data[@Name='TargetUserName']='Username']]

</Select>

</Query>

</QueryList>

 

4. Поиск по трем условиям - дополнительно укажем Logon Type = 2, что соответствует интерактивному входу в ОС:

<QueryList>

<Query Id="0" Path="Security">

    <Select Path="Security">

*[System[(EventID=4624)]]

and

*[EventData[Data[@Name='TargetUserName']='Username']]

and

*[EventData[Data[@Name='LogonType']='2']]

</Select>

</Query>

</QueryList>

 

5. Рассмотрим функционал исключения из выборки данных по определенным критериям - это осуществляется указанием оператора Suppress с условиями исключения. В данном примере мы исключим из результатов поиска по фактам успешного входа (EventID=4624) все события, которые имеют отношения к системным учетным записям (SID S-1-5-18/19/20) с нерелевантным для нас типам входа (Logon Type = 4/5), а также применим функционал задания условий поиска с логическим оператором "ИЛИ", указав не интересующие нас имя процесса входа (Advapi) и методы аутентификации (Negotiate и NTLM):

<QueryList>

<Query Id="0" Path="Security">

    <Select Path="Security">*[System[(EventID=4624)]]</Select>

<Suppress Path="Security">*[EventData[(Data[@Name='TargetUserSid'] and (Data='S-1-5-18' or Data='S-1-5-19' or Data='S-1-5-20') and Data[@Name='LogonType'] and (Data='4' or Data='5'))]]

or

*[EventData[(Data[@Name='LogonProcessName'] and (Data='Advapi') and Data[@Name='AuthenticationPackageName'] and (Data='Negotiate' or Data='NTLM'))]]

</Suppress>

</Query>

</QueryList>


Как видим, встроенный функционал подсистемы журналирования Windows позволяет весьма гибко осуществлять поиск по зафиксированным событиям аудита ИБ, комбинируя различные условия поиска. Однако, у Windows есть еще одна интересная «фишка», которая позволяет использовать сформированные описанным выше образом правила поиска событий - мы говорим про создание задач с определенным триггером в «Планировщике заданий» Windows, что также является штатным функционалом ОС.


Как мы знаем, задачи в ОС Windows могут выполнять совершенно разные функции, от запуска диагностических и системных утилит до обновления компонент прикладного ПО. В задаче можно не только указать исполняемый файл, который будет запущен при наступлении определенных условий и триггеров, но и задать пользовательский PowerShell/VBS/Batch-скрипт, который также будет передан на обработку. В контексте применения подсистемы журналирования интерес для нас представляет функционал гибкой настройки триггеров выполнения задач. Открыв «Планировщик заданий» (taskschd.msc), мы можем создать новую задачу, в свойствах которой на вкладке «Триггеры» мы увидим возможность создать свой триггер. При нажатии на кнопку «Создать» откроется новое окно, в котором в drop-down списке следует выбрать вариант «При событии», а в открывшейся форме отображения установить radio-button «Настраиваемое». После этих действий появится кнопка «Создать фильтр события», нажав на которую, мы увидим знакомое меню фильтрации событий, на вкладке XML в котором мы сможем задать произвольное поисковое условие в синтаксисе XPath-запроса.


Например, если мы хотим выполнять некоторую команду или скрипт при каждом интерактивном входе в систему пользователя Username, мы можем задать в качестве триггера задачи следующее поисковое выражение, уже знакомое нам по примеру выше:

<QueryList>

<Query Id="0" Path="Security">

    <Select Path="Security">

*[System[(EventID=4624)]]

and

*[EventData[Data[@Name='TargetUserName']='Username']]

and

*[EventData[Data[@Name='LogonType']='2']]

</Select>

</Query>

</QueryList>


Таким образом, при условии работоспособности системы журналирования событий Windows можно не только детально и глубоко анализировать все произошедшее на устройстве, но и выполнять произвольные действия при появлении в журнале ОС событий, отвечающих условиям XPath-запроса, что позволяет выстроить целостную систему аудита ИБ, реагирования и мониторинга событий безопасности штатными средствами ОС. Кроме того, объединив рекомендованные политики аудита информационной безопасности, утилиту Sysmon с детально проработанными конфигами, функционал XPath-запросов, пересылку и централизацию событий с помощью Windows Event Forwarding, а также настраиваемые задачи с гибкими условиями выполнения скриптов, можно получить фактически бесплатную (по цене лицензии на ОС) систему защиты конечных точек и реагирования на киберинциденты, используя лишь штатный функционал ОС.

SIEM Управление ИТ-активами Практика ИБ Аудит информационной безопасности Мониторинг ИБ

Похожие статьи

Всё, что вы хотели знать о веб-токенах, но боялись спросить
Всё, что вы хотели знать о веб-токенах, но боялись спросить
Сценарии реагирования на инциденты в кибербезопасности. Часть 1: ранбуки, плейбуки и СОП
Сценарии реагирования на инциденты в кибербезопасности. Часть 1: ранбуки, плейбуки и СОП
Что такое SQL-инъекция
Что такое SQL-инъекция
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
eBPF глазами хакера. Часть 1
eBPF глазами хакера. Часть 1
Фишинг - что это такое, как защититься от фишинговых атак и писем. Часть 2
Фишинг - что это такое, как защититься от фишинговых атак и писем. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Возможности новой версии продукта Security Vision VM
Возможности новой версии продукта Security Vision VM
Два столпа Linux мониторинга
Два столпа Linux мониторинга
Какие цели злоумышленники задают ВПО
Какие цели злоумышленники задают ВПО
XSS, Межсайтовый скриптинг (Cross-Site Scripting)
XSS, Межсайтовый скриптинг (Cross-Site Scripting)

Похожие статьи

Всё, что вы хотели знать о веб-токенах, но боялись спросить
Всё, что вы хотели знать о веб-токенах, но боялись спросить
Сценарии реагирования на инциденты в кибербезопасности. Часть 1: ранбуки, плейбуки и СОП
Сценарии реагирования на инциденты в кибербезопасности. Часть 1: ранбуки, плейбуки и СОП
Что такое SQL-инъекция
Что такое SQL-инъекция
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
eBPF глазами хакера. Часть 1
eBPF глазами хакера. Часть 1
Фишинг - что это такое, как защититься от фишинговых атак и писем. Часть 2
Фишинг - что это такое, как защититься от фишинговых атак и писем. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Сравнительный обзор: Shodan, ZoomEye, Netlas, Censys, FOFA и Criminal IP. Часть 2
Возможности новой версии продукта Security Vision VM
Возможности новой версии продукта Security Vision VM
Два столпа Linux мониторинга
Два столпа Linux мониторинга
Какие цели злоумышленники задают ВПО
Какие цели злоумышленники задают ВПО
XSS, Межсайтовый скриптинг (Cross-Site Scripting)
XSS, Межсайтовый скриптинг (Cross-Site Scripting)