Try   HackMD

Этакий "CookBook" по правилам корреляции в KUMA

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Для открытия рисунка в полном размере, нажмите правой кнопкой мыши на изображении и выберите пункт "Открыть изображение в новой вкладке"

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
"Обновить параметры" нужно делать в корреляторе, когда какое-либо правило меняется, чтобы подтянулись актуальные изменения в правилах в коррелятор.

Содержание

Простое правило (simple)

Простое правило (simple) — срабатывает при обнаружении каждого события, удовлетворяющего условиям в одном селекторе.

Типовой пример правила:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

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

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Необходимо указывать все поля и переменные участвующие в селекторах в наследуемых полях.


Стандартное правило (standard)

Стандартное правило (standard) — срабатывает при достижении определенного порогового значения группы событий, которые удовлетворяют условиям селектора, полей группировки событий (на основе значений поля создается группа) и времени жизни контейнера для группы.

Типовой пример правила:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Возможные действия правила:

  • On first threshold — создавать корреляционное событие только после первого превышения порога, а двукратное, трехкратное и т.д. превышение порога за время жизни группы игнорировать.
  • On every threshold — создавать корреляционное событие после каждого превышения порога за время жизни группы.
  • On subsequent threshold — создавать корреляционные событие при всех превышениях порога, кроме первого.
  • On timeout — в стандартных правилах есть еще возможность настройки действий по окончании времени жизни группы. Это действие используется в связке с опцией Recovery (Обнуление) в настройках селектора, в каких случаях это уместно и как именно это работает рассматривается ниже.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Необходимо указывать все поля и переменные участвующие в селекторах в группирующих/уникальных полях.


Можно также использовать несколько селекторов. Например, несколько неудачных попыток брутфорса (ловится на основе сработки другого правила корреляции) и успешный вход.

Пример правила с несколькими селекторами:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Можно также рекавери правило. Например, когда событие типа «Вредоносное ПО удалено» не обнаружено в течение 5 минут после получения события «Вредоносное ПО обнаружено».

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Бакет (Окно корреляции)

  1. Бакет открывается на событие из любого селектора, не важно в каком они порядке в правиле, порядок проверяется после наполнения бакета!
  2. Для каждого набора Identical Fields создается свой бакет.
  3. Когда событие подпадает под селектор, коррелятор смотрит, есть ли уже бакет с нужным набором полей Identical Fields, если нет - создает, если есть - событие отправляется в существующий.
  4. Когда под селектор с Unique fields подпадает событие, то проверяется, есть ли уже в бакете события с таким же набором значений для Unique Fields, если есть, то событие не учитывается.

Recovery селектор (Обнуление)

  1. Бакет открывается только на событие из обычного селектора, на событие из recovery-селектора бакет не открывается никогда!
  2. Место нахождения селектора с recovery не имеет значения, как только в бакет попадут все нужные recovery-события бакет будет закрыт!
  3. На recovery-селектор не влияет настройка фильтра Order By.
  4. Если нужно, чтобы произошло событие А, и не произошло событие Б, при этом событие Б может произойти раньше А, нужно использовать активные листы, т.к. с помощью recovery-селектора такой логики не достичь (см п.1).

Операционное правило (operational)

Операционное правило (operational) — наполняют активные листы без создания корреляционного события, механика работы аналогична простому правилу корреляции.
Чтобы просмотреть содержимое списка нужно открыть список активных сервисов (Active services), выбрать службу типа Correlator (поставить галочку слева) и у нее появится активная кнопка Go to active lists (Перейти в активные листы).

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

При записи в активный лист, в качестве ключевого поля могут быть несколько занчений полей события, для составления комбинированного ключа, при этом в значении ключа это быдет выглядеть так: поле1|поле2|поле3


Посмотреть активные листы в корреляторе

Активный лист – это контейнер для данных (представляет собой структуру ключ и значение), предназначенный для быстрой записи/чтения динамических данных, доступных всем фильтрам и корреляционным правилам в рамках одного сервиса Коррелятора. Чтобы их посмотреть, нужно из активных сервисов нажать кнопку Смотреть активные листы.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Взаимодействовать с активным листом могут не только компоненты коррелятора, но и пользователи, с помощью Web-консоли и API.


Приемы в правилах корреляции (CookBook)

Сравнение с константой

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Сравнение с листом

Аналогично =константе ИЛИ =константе

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Содержит константу

Ищется заданная подстрока "%%2091" в занчении поля DeviceCustomString6

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Содержит регистронезависимое значение

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Соответствие регулярному выражению (REGEX)

Должно быть условие регулярного выражения в формате RE2

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Работа с подсетями

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Содержит любое значение (не пустое)

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Активный лист содержит ключ

Ключ листа должен совпадать со значением поля Message

Сравнение по экстра данным в активном листе (неключевому полю)

Где threat_score > 70

Фильтр по количеству записей по ключу в активном листе

Где количество записей > 1, используется служебная переменная _count

Другие служебные поля активных листов:
Служебные поля активных листов

  • _count (счетчик количества записей)
  • _created (время создания записи UnixTime)
  • _updated (время обновления записи UnixTime)
  • _expires (время окончания жизни записи UnixTime)
  • _key (значение ключевой записи)

Событие истечения времени жизни в активном листе

Возникает служебное событие active list record expired, помимо этого необходимо указать UUID активного листа в поле DeviceExternalID

Значение ключевого поля передатся в DevicePayloadID служебного события.

Работа с группами AD

Необходимо указывать полный DN, пример:

Условие фильтра:

Актив находится в определенной категории

Работа с полем Extra в селекторе

Вход в рабочее время, работа с переменной

Документация по функциям переменных.

Сначала извлекается час из таймштемпа, с помощью функции: extract_from_timestamp(Timestamp, 'h', 'Europe/Moscow')

Условие в селекторе:

Переменные необходимо указывать в группирующих полях:

Работа с Extra в переменной

Здесь вместо Event.System.Channel нужно указать интересующее вас поле экстра. Регулярка: .*"Event\.System\.Channel":"([^"]+)".*


Тестирование правил корреляции

Для тестирования правил можно использовать ретроскан (из раздела "События"), предварительно это правило нужно добавить в коррелятор и осуществить выборку интересующих событий запросом:

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


Производительность правил корреляции

Для мониторинга производительности по корреляции есть метрики, градации веса по операциям в продукте нет, все выполняется быстро благодаря Golang. Метрики по правилам можно увидеть в разделе метрики, нажав на название "KUMA Collectors" затем выбрав "KUMA Correlators":

Пример метрик по корреляции: