Приветствуем вас в заключительной статье нашего базового курса «MaxPatrol SIEM Getting Started». В прошлой статье мы поговорили о правилах нормализации и рассмотрели пример написания такого правила в MaxPatrol SIEM. В данном материале мы обсудим правила корреляции, а также напишем такое правило, используя примеры правил нормализации из предыдущей статьи. В конце стати вы сможете пройти тестирование по курсу и получить сертификат от платформы TS University!
Статью подготовили инженеры внедрения и технической поддержки TS Solution
Группа компаний «TS Solution» решает задачи по проектированию и внедрению комплексных проектов в сфере ИТ и ИБ на основе отечественных и зарубежных решений.
Основные направления деятельности:
– Аудит, соответствие требованиям регуляторов, категорирование объектов КИИ;
– Полный спектр работ по построению системы ИБ;
– Построение IT-инфраструктуры;
– Проектирование и внедрение инфраструктурных решений, серверные технологии и системы хранения данных;
– Работы требующие аттестации ФСТЭК и ФСБ;
– Предоставление 1-й и 2-й линии технической поддержки и полное техническое сопровождение проектов;
– Проведение авторизованных и авторских курсов и программ обучения
Для чего нужны правила корреляции
Корреляция событий — это процесс обнаружения событий информационной безопасности путем анализа потока нормализованных событий. При обнаружении в потоке событий такой их последовательности, которая указана в условии одного из заранее настроенных правил корреляции, регистрируется корреляционное событие. Корреляционное событие — событие информационной безопасности, представляющее собой совокупность полей, заполненных данными о возможном нарушении согласно правилам, указанным в правиле корреляции. Инцидент — корреляционное событие, связанное с нарушением информационной безопасности. Сведения об инцидентах оперативно передаются оператору MaxPatrol SIEM.
Настройка корреляции событий
Корреляция событий выполняется по созданным заранее правилам. Правила корреляции бывают:
- стандартными;
- пользовательскими.
Стандартные правила корреляции разработаны специалистами по информационной безопасности Positive Technologies и не могут быть изменены. Вы можете просматривать стандартные правила корреляции и копировать их для создания пользовательских правил. Пользовательские правила корреляции вы можете создавать, изменять, копировать и удалять. Правило корреляции имеет следующие параметры:
- системное название: должно совпадать с названием, указанным в коде правила в директиве rule (директива rule предназначена для описания правила корреляции) и будет совпадать с названием файла правила
- папка: папка или пакет экспертизы для хранения правила в БД
- набор для установки: набор объектов, в составе которого правило будет устанавливаться в MaxPatrol SIEM (правило может быть добавлено одновременно в несколько наборов)
- может иметь описание на русском или английском языке
- правило локализации: правило, согласно которому с корреляционными событиями, зарегистрированными по правилу в веб-интерфейсе MaxPatrol SIEM связывается определенное описание на русском или английском языке
Стандартные правила в Knowledge Base
Как было описано в предыдущей статье: в пакетах экспертизы есть возможность посмотреть правила корреляции.

Структура и правила корреляции
- Правило корреляции состоит из последовательности директив, содержащих инструкции и команды. Для работы правила корреляции необходимо указать обязательные директивы и инструкции:
- Директива «event» используется для объявления события, подлежащего корреляции Для объявления нескольких событий с разными названиями в одном правиле можно использовать несколько директив «event».
- Директива может содержать инструкцию «key» для указания полей события, по значению которых разделяется поток событий, и должна содержать инструкцию «filter» для настройки условия отбора события;
- Директива «rule» используется для описания правила корреляции. В директиве нужно указать условие выполнения правила корреляции. Название, указанное в директиве, является уникальным названием правила корреляции. Все события, используемые при составлении условия правила корреляции, должны быть объявлены с помощью директив «event». Директива может содержать инструкцию «init» для объявления переменных и по одной инструкции on для каждого объявленного события. Инструкция «on» (обработчик события) используется для выполнения блока операторов при регистрации события, указанного в этой инструкции. Директива «rule» может содержать инструкции «insert_into, remove_from, clear_table» для редактирования табличного списка;
- Директива «emit» используется для заполнения полей корреляционного события и настройки регистрации инцидента при выполнении правила корреляции Правило корреляции может содержать директиву «query» для объявления запроса к табличному списку. В одном правиле можно объявить несколько запросов с разными названиями
Структура правила корреляции следующая:
query <Название запроса1>(<Аргументы запроса1>) from <Название табличного списка1> {
<Условие запроса1>
}
event <Название события1>:
key:
<Поле события 1>, <Поле события 2>, ...
filter {
<Условие отбора события>
}
rule <Название правила>: <Условие правила корреляции>
init {
<Блок операторов init>
}
on <Название события1> {
<Блок для заполнения полей события>
}
insert_into <Название табличного списка> {
<Блок операторов insert_into>
}
remove_from <Название табличного списка> {
<Блок операторов insert_into>
}
clear_table <Название табличного списка> {
<Блок операторов insert_into>
}
emit {
<Блок для заполнения полей события>
<Блок для настройки инцидента>
}
Пример написания правила корреляции
Рассмотрим пример из предыдущей статьи о попытке пользователя войти в систему и напишем правило корреляции, которое будет формировать инциденты, если пользователи выполняют вход под дефолтными учетными записями.Основная идея правила: в событиях типа «action = login» проверять поле «account» по списку дефолтных логинов:
1) Объявляем директиву «query» для объявления запроса к нашему табличному списку.
query DefaultAccountQuery($account) from Default_accounts {
column::account == $account
}
Условие запроса возвращает «True» если переданная в запрос УЗ находится в табличном списке.
2) Далее объявляем событие, подлежащее корреляции. В нашем случае это события «Login» и «Logout». В поле «key» указываем поля «event_src.host», «subject.name» по значению которых будет разделяться поток событий.
В инструкции «filter» указываем поля для настройки условия отбора события:
- действие: вход или выход;
- субъект: УЗ (account);
- обязательно должно присутствовать значение УЗ, которое сохраняется в полях «subject.name» или «subject.account.name»;
- тип входа или выхода: удаленный по сети (не берем локальную аутентификацию);
- и стандартная обвязка для белых списков для исключения дефолтного логина при необходимости
event Login:
key:
event_src.host, subject.name
filter {
filter::NotFromCorrelator()
and action == "login"
and subject == "account"
and (subject.name != null or subject.account.name != null)
and (logon_auth_method == 'remote')
and (exec_query("DefaultAccountQuery", [subject.name]) or exec_query("DefaultAccountQuery", [subject.account.name]))
and filter::CheckWL_Specific_Only("Default_account_usage", lower(subject.account.name))
}
event Logout:
key:
event_src.host, subject.name
filter {
filter::NotFromCorrelator()
and action == "logout"
and subject == "account"
and (subject.name != null or subject.account.name != null)
and (logon_auth_method == 'remote')
and (exec_query("DefaultAccountQuery", [subject.name]) or exec_query("DefaultAccountQuery", [subject.account.name]))
and filter::CheckWL_Specific_Only("Default_account_usage", lower(subject.account.name))
}
3) Следующим шагом объявляем директиву «rule» для описания правила корреляции:
rule Default_account_usage: (Login+ or Logout+) timer 10s
init {
$labels = "w_auto|default_subject_account_usage"
}
on Login {
$subject.account.name = subject.account.name
$subject.account.domain = subject.account.domain
$subject.name = subject.name
$src.host = src.host
$src.fqdn = src.fqdn
$src.hostname = src.hostname
$src.ip = src.ip
$src.asset = src.asset
if subject.name != null then
$alert.key = lower(subject.name)
elif subject.account.name != null then
$alert.key = lower(subject.account.name)
endif
$event_src.ip = event_src.ip
$event_src.hostname = event_src.hostname
$event_src.fqdn = event_src.fqdn
$event_src.host = event_src.host
$event_src.asset = event_src.asset
$event_src.vendor = event_src.vendor
$event_src.title = event_src.title
$event_src.id = event_src.id
$labels = $labels + "|CheckWL_Specific_Only"
}
on Logout {
$subject.account.name = subject.account.name
$subject.account.domain = subject.account.domain
$subject.name = subject.name
$src.host = src.host
$src.fqdn = src.fqdn
$src.hostname = src.hostname
$src.ip = src.ip
$src.asset = src.asset
if subject.name != null then
$alert.key = lower(subject.name)
elif subject.account.name != null then
$alert.key = lower(subject.account.name)
endif
$event_src.ip = event_src.ip
$event_src.hostname = event_src.hostname
$event_src.fqdn = event_src.fqdn
$event_src.host = event_src.host
$event_src.asset = event_src.asset
$event_src.vendor = event_src.vendor
$event_src.title = event_src.title
$event_src.id = event_src.id
$labels = $labels + "|CheckWL_Specific_Only"
}
4) Завершаем написание правила директивой «emit», которая используется для заполнения полей корреляционного события:
emit {
$correlation_type = "incident"
$subject = "account"
$action = "login"
$object = "system"
$status = "success"
$category.generic = "Compliance"
$category.high = "Policy Violation"
$category.low = "IM Policy Violation"
$importance = "high"
$incident.severity = "high" #уровень опасности инцидента
$incident.category = "PermissionViolation" #тип инцидента
$incident.aggregation.timeout = 2h #время агрегации инцидента
$id = "TSS_Password_Policy_Default_account_usage"
}
В правилах локализации укажем:
- Критерии:
id = "TSS_Password_Policy_Default_account_usage" and action = 'login'
- Значение (английский):
- Значение (русский):
- Критерии:
- Значение (английский):
- Значение (русский):
Отладка правил корреляции
Воспользуемся утилитой PTSIEMSDK GUI для отладки данного правила корреляции.Утилита предназначена для создания и отладки отдельных правил нормализации, агрегации, обогащения, корреляции и локализации, а также для отладки их совместной работы.
Добавление правил в MaxPatrol SIEM выполняется через веб-интерфейс Knowledge Base. Утилита входит в комплект поставки MaxPatrol SIEM.
В поле «Правило» вводим код правила, в поле «тестовый сценарий» исходное событие, взятое из MaxPatrol SIEM, и запускаем наше правило. В поле результат мы увидим сообщение о работе правила:
Как видим правило успешно прошло отладку. Далее переходим в интерфейс Knowledge Base и добавляем наше правило и табличный список. Для этого в пакетах экспертизы создадим папку Password Policy и две вложенных папки «correlation_rules» и «tabular_lists»:
Создадим табличный список типа «Справочник». Ключевым полем будет поле «account». Добавим в табличный список записи с дефолтными логинами.
Добавим правило корреляции в редакторе кода:
Далее проводим валидацию и устанавливаем в SIEM табличный список и правило корреляции.Проверим работу нашего правила. Для этого войдем в систему на каком-нибудь подключенном в SIEM узле под логином administrator.
Правило корреляции сработало и SIEM сгенерировал инцидент. Профит! Заключение
В данной статье мы ознакомились с правилами корреляции и написали собственное правило. На этом наш курс подошел к концу: надеемся, что он помог вам разобраться в базовом функционале системы выявления инцидентов MaxPatrol SIEM от отечественного вендора Positive Technologies.Смотрите вебинары, читайте статьи и проходите курсы по интересующим вендорам на потале TS University.
До встречи!
Автор курса: Кузнецова Елизавета, Инженер информационной безопасности в TS Solution.
Пройти тестирование и получить сертификат о прохождении курса можно по ссылке