# Приемы в правилах корреляции

### <span data-position="4993" data-size="22">Сравнение с константой</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/Ggoimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/Ggoimage.png)

### <span data-position="5068" data-size="18">Сравнение с листом/списком</span>

<div class="popover selection-popover top in" id="bkmrk--1" style="text-align: justify;"></div>
<span data-position="5087" data-size="22">Аналогично =константе </span>**<span data-position="5111" data-size="3">ИЛИ</span>**<span data-position="5116" data-size="11"> =константе</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/0pqimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/0pqimage.png)

### <span data-position="5180" data-size="18">Содержит список констант регистронезависимый</span>

<div class="popover selection-popover top in" id="bkmrk--4" style="text-align: justify;"></div>
<span data-position="5199" data-size="26">Ищется заданная подстрока </span>*<span data-position="5226" data-size="8">“whoami” или "ipconfig" и др</span>*<span data-position="5235" data-size="17"> в занчении поля </span>*<span data-position="5253" data-size="19">DestinationProcessName</span>*

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-11/scaled-1680-/YOaimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-11/YOaimage.png)

### <span data-position="5418" data-size="42">Соответствие регулярному выражению (REGEX)</span>

<div class="popover selection-popover top in" id="bkmrk--7" style="text-align: justify;"></div>
<span data-position="5461" data-size="55">Должно быть условие регулярного выражения в формате RE2</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/KDcimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/KDcimage.png)

### <span data-position="5569" data-size="18">Работа с подсетями</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/ePHimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/ePHimage.png)

### <span data-position="5640" data-size="35">Содержит любое значение (не пустое)</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/oKqimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/oKqimage.png)

### <span data-position="4437" data-size="301">Активный список / лист</span>

#### <span data-position="5728" data-size="27">Активный лист содержит ключ</span>

<div class="popover selection-popover top in" id="bkmrk--12" style="text-align: justify;"></div>
<span data-position="5756" data-size="46">Ключ листа должен совпадать со значением поля </span>*<span data-position="5803" data-size="7">Message</span>*

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/fwpimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/fwpimage.png)

#### <span data-position="5864" data-size="62">Сравнение по экстра данным в активном листе (неключевому полю)</span>

<div class="popover selection-popover top in" id="bkmrk--15" style="text-align: justify;"></div>
<span data-position="5927" data-size="4">В актуальных версиях, используйте комбинацию Ctrl+Enter для прододжения наполнения условия в конструкторе</span>

<span data-position="5927" data-size="4">Где </span>*<span data-position="5932" data-size="11">threat\_score</span>*<span data-position="5945" data-size="5"> &gt; 70</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/3udimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/3udimage.png)

#### <span data-position="6003" data-size="54">Фильтр по количеству записей по ключу в активном листе</span>

<div class="popover selection-popover top in" id="bkmrk--22" style="text-align: justify;"></div>
<span data-position="6058" data-size="62">Где количество записей &gt; 1, используется служебная переменная \_</span>*<span data-position="6122" data-size="5">count</span>*

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/9ikimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/9ikimage.png)

<span data-position="6177" data-size="38">Другие служебные поля активных листов:</span>

<div class="popover selection-popover top in" id="bkmrk--25" style="text-align: justify;"></div>- <span data-position="6249" data-size="34">\_count (счетчик количества записей)</span>
- <span data-position="6287" data-size="40">\_created (время создания записи UnixTime, в наносекундах)</span>
- <span data-position="6331" data-size="42">\_updated (время обновления записи UnixTime<span data-position="6287" data-size="40">, в наносекундах</span>)</span>
- <span data-position="6377" data-size="47">\_expires (время окончания жизни записи UnixTime<span data-position="6287" data-size="40">, в наносекундах</span>)</span>
- <span data-position="6428" data-size="30">\_key (значение ключевой записи)</span>

#### <span data-position="6465" data-size="48">Событие истечения времени жизни в активном листе</span>

<span data-position="6514" data-size="28">Возникает служебное событие </span>*<span data-position="6543" data-size="26">active list record expired</span>*<span data-position="6570" data-size="62">, помимо этого необходимо указать UUID активного листа в поле </span>*<span data-position="6633" data-size="16">DeviceExternalID</span>*

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/avTimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/avTimage.png)

<span data-position="6700" data-size="36">Значение ключевого поля передатся в </span>*<span data-position="6737" data-size="15">DevicePayloadID</span>*<span data-position="6753" data-size="20"> служебного события.</span>

#### Работа с активным листом не по его ID

Если указывать ID листа неудобно (а это обычно так), то можно в ключевое поле писать уникальный префикс типа "failed login attempts|username|1.1.1.1" и в события ловить по полю devicePayloadID функцией startsWith "failed login attempts" такой вариант реализации правила не зависит от инсталляции.

<p class="callout warning">Такие события существуют только в рамках коррелятора (служебные события) и не сохраняются в сторадже, их можно поймать только правилом корреляции.</p>

### <span data-position="5864" data-size="62">Сравнение переменной с числовым значением</span>

<span data-position="5864" data-size="62">Из строки с REGEX вырезается число и кладется его в переменную, например, для получения SID пользователя из "SID: 1-21-1231-500", получаем "500", кладем в переменную $temp, чтобы сделать сравнение необходимо $temp привести к числовому типу это можно сделать новой переменной `$usersid = $temp + 0` и далее сравнивать, например, `$usersid <span data-teams="true"><span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">> 1000</span></span>`</span>

### <span data-position="5864" data-size="62">Условие с полем TI, сравнение с категорией</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-11/scaled-1680-/yRdimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-11/yRdimage.png)

Значение feed это именование фидов из CyberTrace, например для фидов Kaspersky бывают такие значения (зависит какие фиды приобретены/подключены):

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-12/scaled-1680-/uj3image.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-12/uj3image.png)

### <span data-position="6779" data-size="20">Работа с группами AD</span>

<div class="popover selection-popover top in" id="bkmrk--28" style="text-align: justify;"></div>
<span data-position="6800" data-size="39">Необходимо указывать полный DN, пример:</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/vhnimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/vhnimage.png)

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

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/Mk2image.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/Mk2image.png)

### <span data-position="6957" data-size="40">Актив находится в определенной категории</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/8SNimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/8SNimage.png)

### <span data-position="7050" data-size="32">Работа с полем Extra в селекторе</span>

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/ZJfimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/ZJfimage.png)

### Работа с полями типа SA (массив строк) KUMA 3.0+  


При операции **match** к полям типа SA применяется как к строке, т.е. массив представляется в виде строки **\["a1", "b2", "c3"\]** и т.д. Т.е. ко всему массиву сразу, а не к отдельным его элементам по очереди.

При операции **contains** применяется именно к элементам массива. Т.е. **contains \[** для массива вернет false, как и **contains "** или **'**. Но при этом же, если в массиве есть элемент abc, то contains abc вернет true и contains ab тоже вернет true

## Работа с переменными (KUMA 2.1+)  


### <span data-position="7135" data-size="41">Вход в рабочее время</span>

<div class="popover selection-popover top in" id="bkmrk--35" style="text-align: justify;"></div>
[**<span data-position="7181" data-size="12">Документация</span>**](https://support.kaspersky.com/help/KUMA/2.1/ru-RU/234740.htm)<span data-position="7258" data-size="24"> по функциям переменных (локальные переменные).</span>

<span data-position="7284" data-size="58">Сначала извлекается час из таймштемпа, с помощью функции: </span>*<span data-position="7343" data-size="53">extract\_from\_timestamp(Timestamp, ‘h’, ‘Europe/Moscow’)</span>*

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/0IBimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/0IBimage.png)

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

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/rytimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/rytimage.png)

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

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/ldsimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/ldsimage.png)

### <span data-position="7624" data-size="27">Работа с Extra</span>

<div class="popover selection-popover top in" id="bkmrk--40" style="text-align: justify;"></div>
<span data-position="7652" data-size="13">Здесь вместо </span>*<span data-position="7668" data-size="20">Event.System.Channel</span>*<span data-position="7689" data-size="56"> нужно указать интересующее вас поле экстра. Регулярка: </span>`.<em>"Event\.System\.Channel":"([^"]+)".</em>`

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/scaled-1680-/Dpkimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2023-08/Dpkimage.png)

В некоторых случаях производительней использовать не регулярки, а функции:

- $firstIndex=index\_of('(', fieldName)
- $lastIndex=index\_of('.', fieldName)
- $getSubstring=substring(fieldName, $firstIndex, $lastIndex)

### Работа с контекстной таблицей (KUMA 3.0+)  


Исходная задача: Необходимо отслеживать, на каких отличных друг от друга устройствах производится вход одной УЗ. (активный лист будет менее удобен т.к. различных устройств может быть &gt; 1)

Пример Контестной таблицы:

[![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-06/scaled-1680-/aFhimage.png)](https://kb.kuma-community.ru/uploads/images/gallery/2024-06/aFhimage.png)

Примеры переменных:

Извлечение содержимого поля с массивом `pc` из контекстной таблицы в тенанте `Shared` (только для этого тенанта нужно в переменной это указывать) по ключевому полю `user` и его значением `DestinationUserName`, назовем переменную `ct_value`:

```bash
context_table('pc-user@Shared', 'pc', 'user', DestinationUserName)
```

В событии выглядит это так:

![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-06/scaled-1680-/bCIimage.png)

Получение индекса (номер символа) по содержимому поля массива `pc` по значению поля `DestinationHostName` из контекстной таблицы в тенанте Shared (только для этого тенанта нужно в переменной это указывать) по ключевому полю user и его значением DestinationUserName, назовем переменную `ct_contains`:

```bash
index_of(DestinationHostName, $ct_value)
```

Возвращает первую позицию символа или подстроки в строке, расчет индекса начинается с 0. Если в результате работы функции подстрока не была найдена, функция вернёт значение -9223372036854775808

Вот как выглядит это в событии, значение `ct_contains` в поле FlexNumber1.

![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-06/scaled-1680-/yopimage.png)

Получение количества элементов в поле с массивом `pc` из контекстной таблицы (пример в собтии на рисунке выыше в поле FlexNumber2), назовем переменную `ct_len`:

```bash
len($ct_value)
```

Если в содержимом поля с массивом `pc` из контекстной таблицы есть подстока см. выше описание переменной `ct_contains`, то вернуть `true` назовем переменную `ct_item_exist`:

```bash
conditional(`$ct_contains LIKE '-.*'`, 'false', 'true')
```

Вот как выглядит это в событии, значение `ct_item_exist` в поле FlexString2.

![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-06/scaled-1680-/7bVimage.png)

### Как записать значение из нескольких событий в одно поле в правиле корреляции типа Standard

В обогащении можнонаписать шаблон, в котором можно пройтись по всем подсобытиям и получить список всех полей. Дальше уже с помощью функционала Go template можете сделать что хотите. Для правильной работы метода keep event policy в правиле корреляции должна иметь значение all.

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

![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-10/scaled-1680-/BBjimage.png)

На выходе получается примерно следующее

![image.png](https://kb.kuma-community.ru/uploads/images/gallery/2024-10/scaled-1680-/R5iimage.png)