Приемы в правилах корреляции Kaspersky Unified Monitoring and Analysis Platform
Показать приложения и версии, для которых применима статья
- Kaspersky Unified Monitoring and Analysis Platform 4.6;
- Kaspersky Unified Monitoring and Analysis Platform 4.2;
- Kaspersky Unified Monitoring and Analysis Platform 4.0;
- Kaspersky Unified Monitoring and Analysis Platform 3.4;
- Kaspersky Unified Monitoring and Analysis Platform 3.2.
Рекомендации могут быть применимы к версиям, снятым с поддержки:
- Kaspersky Unified Monitoring and Analysis Platform 3.0.3;
- Kaspersky Unified Monitoring and Analysis Platform 3.0.2;
- Kaspersky Unified Monitoring and Analysis Platform 2.1.
Правила корреляции используются для распознавания определенных последовательностей обрабатываемых событий Kaspersky Unified Monitoring and Analysis Platform (далее KUMA), а также для выполнения определенных действий после их распознавания. В блоке Селекторы → Параметры → Условия вы можете задать условия, которым должны соответствовать события.
Ниже приведен список приемов для заполнения блока Условия, которыми вы можете воспользоваться для оптимизации работы с событиями KUMA.
Сравнение события с константой

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

Соответствие события регистронезависимому списку констант
В значении поля DestinationProcessName осуществляется поиск заданной подстроки. Например: «whoami», «ipconfig».

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

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

Содержание в событии любого непустого значения

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

Сравнение событий по экстра-данным в активном листе (неключевое поле)
Например, значение поля threat_score должно быть равно или выше 70.

Сравнение переменной с числовым значением
Чтобы сравнить переменную с числовым значением, скопируйте число из строки с регулярным выражением и добавьте его в переменную.
Например, для получения идентификатора безопасности пользователя (SID) скопируйте из строки «SID: 1-21-1231-500» число 500 и добавьте его в переменную $temp. Затем приведите переменную $temp к числовому типу с помощью новой переменной $usersid = $temp + 0, после чего произведите сравнение.
Например: $usersid > 1000.
Сравнение условия с полем TI с категорией

В значении поля feed укажите наименования потоков данных (фидов) CyberTrace. Например, потоки данных от «Лаборатории Касперского» могут носить следующие наименования (в зависимости от того, какие именно фиды подключены).

Фильтрация событий по количеству записей с использованием ключа в активном листе
Если количество записей больше 1, используется служебная переменная _count.

Другие служебные поля активных листов:
- _count — счетчик количества записей;
- _created — время создания записи UnixTime, в наносекундах;
- _updated — время обновления записи UnixTime, в наносекундах;
- _expires — время окончания жизни записи UnixTime, в наносекундах;
- _key — значение ключевой записи.
Истечение времени жизни ключа в активном листе
После истечения времени жизни ключа записи в активном листе возникает служебное событие «active list record expired». Также укажите уникальный идентификатор активного листа UUID в поле DeviceExternalID. Значение ключевого поля будет передано в поле идентификатора полезной нагрузки служебного события DevicePayloadID.

Работа с активным листом не по его идентификатору
Если использование идентификатора листа вызывает неудобства, в ключевом поле вы можете указать уникальный префикс вида «failed login attempts|username|1.1.1.1» и осуществлять поиск событий по полю devicePayloadID при помощи функции startsWith «failed login attempts». Этот вариант реализации правила не зависит от типа инсталляции KUMA.
Работа с группами Active Directory (AD)
При работе с группами AD укажите полное уникальное имя DN.


Присутствие актива в определенной категории

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

Работа с полями типа SA (массив строк) в KUMA версии 3.0 и выше
При выполнении операции match для полей типа SA правило применяется как к строке, то есть ко всему массиву сразу, а не к отдельным его элементам по очереди. Массив представляется в виде строки ["a1", "b2", "c3"].
При выполнении операции contains правило применяется к элементам массива. Запросы contains [, contains " или contains ' для массива вернут ответ «false». При этом, если в массиве есть элемент «abc», запросы contains abc или contains ab вернут ответ «true».
Работа с переменными в KUMA версии 2.1 и выше
Для работы с переменными:
- Извлеките значение часа из временной метки с помощью функции extract_from_timestamp(Timestamp, ‘h’, ‘Europe/Moscow’).

- Укажите условие в селекторе.

- Укажите переменные в группирующих полях.

Подробнее о функции переменных в корреляторах KUMA смотрите в справке.
Работа с полем события Extra
Укажите необходимое поле события Extra вместо Event.System.Channel с помощью регулярного выражения:

Работа с контекстной таблицей в KUMA версии 3.0 и выше
Для отслеживания отличных друг от друга устройств, на которых производится вход с одной учетной записи, вместо активного листа вы можете использовать контекстную таблицу. Этот способ более удобен, поскольку с одной учетной записи можно зайти с нескольких устройств.

Примеры переменных
- Для извлечения содержимого поля с массивом pc из контекстной таблицы в тенанте Shared по ключевому полю user и его значению DestinationUserName создайте переменную ct_value:
-
context_table('pc-user@Shared', 'pc', 'user', DestinationUserName)
В событии это выглядит следующим образом.

- Для извлечения индекса (номера символа) по содержимому поля массива pc и значению поля DestinationHostName из контекстной таблицы в тенанте Shared по ключевому полю user и его значению DestinationUserName создайте переменную ct_contains:
index_of(DestinationHostName, $ct_value)
Ответ возвращает первую позицию символа или подстроки в строке, расчет индекса начинается с 0. Если в результате работы функции подстрока не была найдена, функция вернет значение «-922337203685477580».
В событии это выглядит следующим образом (значение ct_contains в поле FlexNumber1). Номер символа в примере: 012.

- Для извлечения количества элементов в поле с массивом pc из контекстной таблицы:
- Создайте переменную ct_len:
len($ct_value)
Если в содержимом поля с массивом pc из контекстной таблицы есть подстрока (см. описание переменной ct_contains), то ответ вернет значение «true».
-
Создайте переменную ct_item_exist:
conditional(`$ct_contains LIKE '-.*'`, 'false', 'true')В событии это выглядит следующим образом (значение ct_item_exist в поле FlexString2).
- Создайте переменную ct_len:

Запись значения из нескольких событий в одно поле в правиле корреляции типа Standard
Вы можете создать шаблон для получения списка всех полей при помощи запроса ко всем подсобытиям. После этого вы сможете применять шаблоны Go для преобразования текстовых данных события. Для правильной работы метода поле Политика хранения базовых событий в правиле корреляции должно иметь значение «all».
Например, вы можете получить все значения поля SourceAddress из базовых событий в корреляционном событии. Значения в выдаче будут перечислены в строку через точку с запятой.

