Security Lab

Курс MaxPatrol SIEM Getting Started. Статья 6: Правила нормализации

MaxPatrol SIEM Getting Started. Статья 6 Правила нормализации
Приветствуем вас в шестой статье курса «MaxPatrol SIEM Getting Started». В этой части мы поговорим о правилах нормализации, а в конце статьи рассмотрим пример написания такого правила в MaxPatrol SIEM.

Нормализация событий

Напомним, что нормализация событий от источников для последующей обработки и анализа выполняется по созданным заранее правилам. Специальные правила создаются для каждого источника и типа события.
Статью подготовили инженеры внедрения и технической поддержки TS Solution .
Группа компаний «TS Solution» решает задачи по проектированию и внедрению комплексных проектов в сфере ИТ и ИБ на основе отечественных и зарубежных решений.

Основные направления деятельности:

– Аудит, соответствие требованиям регуляторов, категорирование объектов КИИ;

– Полный спектр работ по построению системы ИБ;

– Построение IT-инфраструктуры;

– Проектирование и внедрение инфраструктурных решений, серверные технологии и системы хранения данных;

– Работы требующие аттестации ФСТЭК и ФСБ;

– Предоставление 1-й и 2-й линии технической поддержки и полное техническое сопровождение проектов;

– Проведение авторизованных и авторских курсов и программ обучения

Правила нормализации бывают:
  • системные;
  • пользовательские.
Системные правила нормализации разработаны специалистами по информационной безопасности Positive Technologies и не могут быть изменены. Вы можете копировать стандартные правила нормализации для создания пользовательских правил.

Пользовательские правила нормализации вы можете создавать, изменять, копировать и удалять.

Правило нормализации имеет следующие параметры:
  • системное название: может состоять из букв латинского алфавита, цифр и знака подчеркивания, должно начинаться с прописной буквы или цифры;
  • папка: папка или пакет экспертизы для хранения правила в БД;
  • набор для установки: набор объектов, в составе которого правило будет устанавливаться в MaxPatrol SIEM (правило может быть добавлено одновременно в несколько наборов);
  • может иметь описание на русском или английском языке;
  • правило локализации: правило, согласно которому с событиями, нормализованными по правилу нормализации, в веб-интерфейсе MaxPatrol SIEM связывается определенное описание на русском или английском языке
Структура правила нормализации

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

Форматы событий:
  • TEXT: для неструктурированного текста, например стандарта syslog;
  • TABULAR: для ассоциативного массива «ключ — значение» формата JSON;
  • JSON: для формата JSON;
  • EVENTLOG: для событий журнала Windows;
  • XML: для событий формата XML.
Правило нормализации может содержать строку, начинающуюся с ключевого слова COND для объявления условия применения правила.

Правило нормализации может содержать функцию «submessage»: для объявления вложенного правила нормализации и для распознавания фрагмента необработанного события. И ключевые слова «subformula», «endsubformula» для ввода блока операторов вложенного правила нормализации.

В блоке операторов правила нормализации вы можете использовать функции, операторы и конструкции языка XP, переменные (должны начинаться с $) и поля нормализованного события:

<Ключевое слово> = '<Форматная строка>'
COND = (<Условие>)
submessage («<Формат фрагмента>», «<Название вложенного правила>», <Фрагмент события>)
subformula <Название вложенного правила>
<Ключевое слово вложенного правила> = '<Форматная строка вложенного правила>'
COND = (<Условие вложенного правила>)
<Блок операторов вложенного правила>
endsubformula
<Блок операторов>

Заполнение полей нормализованного события

Заполнение полей нормализованного события выполняется в блоке операторов правила нормализации (и вложенного правила).

В правиле нормализации обязательно нужно указать значения для следующих полей нормализованного события:

  • time: для указания времени регистрации события на источнике;
  • event_src.title: для указания названия продукта источника события; указывается в нижнем регистре без пробелов (можно использовать символ подчеркивания), например windows, asa, oracle_database;
  • event_src.vendor: для указания производителя источника; указывается в нижнем регистре без пробелов, например microsoft, cisco;
  • action, object, status: для описания характера, объекта и результата воздействия; могут принимать только определенные значения;
  • event_src.category: для назначения категории источника события; может принимать только определенные значения;
  • importance: для указания важности события для информационной безопасности; может принимать значения info, low, medium, high;
  • id : для ввода идентификатора правила нормализации в виде: <Пространство_имен>_<Производитель>_<Название_источника>_<Транспорт>_<Тип_события>, например PT_Cisco_IOS_syslog_SEC_LOGIN_QUIET_MODE_OFF

Стандартные правила в Knowledge Base


В базовом пакете экспертизы есть стандартные правила нормализации для различных вендоров.



Есть возможность посмотреть: само правило, его системное название, идентификатор, тип, поставщика, расположение в папке и статусы валидации и установки.





Пример написания правила нормализации события


Рассмотрим пример события «Login_ongoing» о попытке пользователя войти в систему.

Сырые события в формате TEXT выглядят следующим образом:

# <134>1 2021−02−11T17:03:43Z checkpoint-sm CheckPoint 9525 — [flags:"0″; ifdir:"inbound"; loguid:"{0×0,0×0,0×0,0×0}"; origin:"10.125.1.30″; time:"1 613 063 023″; version:"1″; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 «; facility:"security/authorization messages»; product:"Syslog"; syslog_severity:"Notice"; ]

# <134>1 2021−03−30T17:16:55Z checkpoint-sm CheckPoint 9525 — [flags:"0″; ifdir:"inbound"; loguid:"{0×0,0×0,0×0,0×0}"; origin:"10.125.1.5″; time:"1 617 124 615″; version:"1″; default_device_message:"<86>login: LOGIN ON pts/3 BY anon FROM 10.125.2.1 «; facility:"security/authorization messages»; product:"Syslog"; syslog_severity:"Informational"; ]

Напишем формулу нормализации:

  1. В начале нужно указать формат события (в нашем случае TEXT) и в одинарных кавычках указать форматную строку для обработки неструктурированного текста. Форматная строка в этом случае является шаблоном для распознавания текста события, она должна повторять его структуру и содержать шаблоны для распознавания отдельных слов или символов события (в фигурных скобках) и сами слова (символы), если их расположение в событии фиксировано.
Шаблон слова события может содержать токены языка XP, операторы токенов, любые символы (в двойных кавычках), переменные и поля нормализованного события.


TEXT = '{"<"NUMBER">"?}{NUMBER?} {$syslog_time=DATETIME} {$hostname=HOSTNAME}
CheckPoint {NUMBER} - [ {$kv=KEYVALUE(";", ":", """)}'

# <134>1 2021-02-11T17:03:43Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.30"; time:"1613063023"; version:"1"; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Notice"; ]


Токен KEYVALUE используется для распознавания ассоциативного массива, содержащего пары «ключ — значение». Распознаются все символы до конца строки.
Токен имеет три аргумента: в первом нужно указать символ, разделяющий элементы строки; во втором символ, разделяющий пару «ключ — значение»; в третьем символ экранирования значения, стоящий перед каждым значением в паре и после него. Для ввода двойных кавычек — две обратные косые черты ().


  1. Далее объявляем условие применения правила:
COND = $kv["facility"] == "security/authorization messages"
and find_substr($kv["default_device_message"], "LOGIN ON") != null

В нашем случае условия выполняются:


# <134>1 2021−02−11T17:03:43Z checkpoint-sm CheckPoint 9525 — [flags:"0"; ifdir:"inbound"; loguid:"{0×0,0×0,0×0,0×0}"; origin:"10.125.1.30"; time:"1 613 063 023"; version:"1"; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Notice"; ]


2. Указываем обязательные значения для следующих полей:

subject = "account" #субъект воздействия
action = "login" #характер воздействия на объект
object = "system" #объект воздействия
status = "ongoing" #конечный результат воздействия

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

3. Далее объявляем вложенное правило нормализации с помощью ключевых слов «subformula», «endsubformula»:

subformula 'sub1'
TEXT = '{UNTIL("login")}: {subject.account.privileges="ROOT"?} LOGIN ON {logon_service=STRING}
{"BY" subject.account.name=STRING?} {$from="FROM" src.ip=STRING?}'
endsubformula

Извлекаем "subject.account.privileges, logon_service" и "src.ip из default_device_message":

# <134>1 2021-02-11T17:03:43Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.30"; time:"1613063023"; version:"1"; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Notice"; ]

Токен UNTIL используется для распознавания последовательности символов (и пробелов) до ограничителя, указанного в аргументе токена.

4. Указываем функцию для объявления вложенного правила нормализации:
submessage («<Формат фрагмента>», «<Название вложенного правила>», <Фрагмент события>)

submessage('TEXT', 'sub1', $kv["default_device_message"])

5. Заключительная часть — это блок операторов. В блоке операторов правила нормализации можно использовать функции, операторы и конструкции языка XP, переменные (должны начинаться с $) и поля нормализованного события.

Определяем метод логирования (удаленно или локально):
if $from != null then
logon_auth_method = "remote"
else
logon_auth_method = "local"
endif

datafield9 = $hostname #имя устройства с LogExporter

time = coalesce(epoch_to_datetime(number($kv["time"])), $syslog_time) #время регистрации события на источнике
Функция coalesce проверяет значения аргументов слева направо и возвращает значение первого отличного от null. Количество аргументов может быть любым. Если аргументы не заданы, функция возвращает null:
importance = "info" #важность события для информационной безопасности, может принимать значения info, low, medium, high

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

Правила заполнения можно также посмотреть в документации разработчика:

category.generic = "Operating System"

category.high = "Access Management"
category.low = "Communication"

event_src.vendor = "checkpoint" #производитель источника события
event_src.title = "gaia" #название продукта источника события
event_src.ip = $kv["origin"] #IP-адрес источника события
event_src.category = "Network security" #категория источника события, принимает только определенные значения, указанные в документации разработчика

id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" #идентификатор правила нормализации

Таким образом итоговое правило нормализации выглядит следующим образом:

# <134>1 2021-02-11T17:03:43Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.30"; time:"1613063023"; version:"1"; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Notice"; ]

# <134>1 2021-03-30T17:16:55Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.5"; time:"1617124615"; version:"1"; default_device_message:"<86>login: LOGIN ON pts/3 BY anon FROM 10.125.2.1 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Informational"; ]

TEXT = '{"<"NUMBER">"?}{NUMBER?} {$syslog_time=DATETIME} {$hostname=HOSTNAME}
CheckPoint {NUMBER} - [ {$kv=KEYVALUE(";", ":", """)}'

COND = $kv["facility"] == "security/authorization messages"
and find_substr($kv["default_device_message"], "LOGIN ON") != null

subject = "account"
action = "login"
object = "system"
status = "ongoing"

subformula 'sub1'
TEXT = '{UNTIL("login")}: {subject.account.privileges="ROOT"?} LOGIN ON {logon_service=STRING}
{"BY" subject.account.name=STRING?} {$from="FROM" src.ip=STRING?}'
endsubformula

submessage('TEXT', 'sub1', $kv["default_device_message"])

if $from != null then
logon_auth_method = "remote"
else
logon_auth_method = "local"
endif

datafield9 = $hostname

time = coalesce(epoch_to_datetime(number($kv["time"])), $syslog_time)
importance = "info"

category.generic = "Operating System"
category.high = "Access Management"
category.low = "Communication"

event_src.vendor = "checkpoint"
event_src.title = "gaia"
event_src.ip = $kv["origin"]
event_src.category = "Network security"

id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing"

В правилах локализации укажем:

Критерии
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" and protocol = null and subject.name != null
Значение (русский)
Пользователь {subject.name} пытался войти в систему на узле {event_src.host} через локальную консоль
Значение (английский)
The user {subject.name} made an attempt to log in to the system on host {event_src.host} via the local console
ИЛИ
Критерии
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" and protocol = null and subject.privileges != null
Значение (русский)
Пользователь с правами {subject.privileges} пытался войти в систему на узле {event_src.host} через локальную консоль
Значение (английский)
A user with the {subject.privileges} permissions made an attempt to log in to the system on host {event_src.host} via the local console

Отладка правил нормализации

Для отладки нового правила нормализации воспользуемся встроенными возможности Knowledge Base.

Создадим правило нормализации:



Заполняем все поля и нажимаем «создать»:




Далее нужно провалидировать наше правило и установить в SIEM:




Заключение

Сегодня мы разобрали структуру правил нормализации в MaxPatrol SIEM и написали собственное правило. В следующей заключительной статье вы узнаете все о правилах корреляции в MP SIEM и сможете поддтвердить полученные на курсе знания.

Оставайтесь с нами!

TS University делает большой шаг в сторону доступности знаний. Мы открыли самые популярные статьи портала для вас.
Теперь вы можете свободно изучать и делиться понравившимися материалами с коллегами без регистрации на сайте!
Изображение:
Positive Technologies
Alt text

Ваши гаджеты следят за вами. Мы знаем, как это остановить!

Присоединяйтесь