Общие сведения о правилах

Правила автоматизированного выявления (далее – "правила сигнал") – это набор инструкций в формате YAML, передаваемых сервису сигнал Платформы (подробнее о сервисе в руководстве администратора Платформы), с целью поиска в непрерывно накапливаемых данных от источников событий значимых отдельных событий, превышения заданных пороговых значений или последовательностей (цепочек) событий, являющихся признаками инцидентов ИБ. Поисковые запросы выполняются с различной, определяемой для каждого правила периодичностью и имеют заданный ожидаемый критерий результатов выполнения. Если результат выполнения запроса удовлетворяет критерию, сервис формирует подозрение на инцидент и может уведомлять аналитиков об этом посредством электронной почты или в мессенджер (настройка уведомлений о подозрении осуществляется администратором Платформы). Каждому подозрению присваивается комплексный показатель опасности, который является произведением назначенных для каждого правила значений параметров: достоверность, важность и приоритет. Подробнее об этих параметрах далее в этом разделе.

Правила классифицируются по принципу выполняемых операций:

  • правило типа bucket – правило, основанное на агрегированных данных. Пример использования правила: собрать (агрегировать) события установки сетевых соединений с внешними IP-адресами по всем хостам в сети за определенный промежуток времени и выбрать те из хостов, у которых таких соединений слишком много, или слишком большое количество различных внешних адресов (дополнительная агрегация по адресам). Данный тип правила использует для формирования запроса язык описания агрегаций Query DSL. Критерием срабатывания правила является количество документов в бакете, если для подсчета указан последний бакет в списке агрегаций, иначе – количество вложенных бакетов;

  • правило типа chain – правило, основанное на цепочках событий. На первом шаге осуществляется поиск всех событий по некоторому корневому запросу. Каждое из найденных событий является первым звеном новой цепи. Из этих событий выбирается время события и значения каких-либо полей, которые будут использованы, как параметры запроса для поиска следующих звеньев цепи. На следующем шаге для каждой открытой цепи выполняется попытка найти следующее звено, начиная от времени текущего конечного элемента цепи в течение времени, заданного специальным параметром для каждого правила. Если следующее звено не обнаружено, цепь закрывается. Если найдено несколько событий для формирования следующего звена, цепь "размножается", то есть формируются несколько цепей к каждой из которых цепляется следующее звено. Второй шаг может повторятся до пяти раз. Когда цепь закрывается проверяется ее длина, если в цепи содержится хотя бы два звена, формируется подозрение, иначе цепь уничтожается;

  • правило типа count – правило для обнаружения заданных пороговых значений количества событий. Пример использования правила: отслеживание отсутствия потока от критичных источников;

  • правило типа list – правило, предназначенное для вывода списка событий по запросу. Пример использования правила: поиск упоминания перечня наименований процессов в событиях от различных источников.

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

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

Таблица 1. Описание полей служебной информации правил сигнал
АтрибутТипListCountBucketChainЗнач. по умолч.Описание

*Name

string

+

+

+

+

нет

Понятное имя правила

*index

string

+

+

+

-

alertix-*

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

*author

string

+

+

+

+

нет

Имя автора правила. Используется для быстрого поиска и фильтрации

*description

string

+

+

+

+

нет

Описание правила и выявляемых подозрений

*category

string

+

+

+

+

Общая категория

Категория правила во внутренней классификации организации. Может быть назначена любой

*local

boolean

+

+

+

+

false

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

*hidden

boolean

+

+

+

+

false

Флаг отключения правила (правило написано, но не работает)

severity

integer 1-5

+

+

+

-

1

Степень важности от 1 до 5 (для цепочек, указывается для каждого звена). Количественная экспертная оценка величины возможного ущерба
(1 – незначительный ущерб, 5 – значительный ущерб)

reliability

integer 1-5

+

+

+

-

1

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

priority

integer 1-5

+

+

+

-

1

Приоритет (срочность) необходимых действий от 1 до 5 (для цепочек, указывается для каждого звена). Экспертная оценка необходимой срочности контрдействий (1 – низкий приоритет, 5 – необходимы срочные контрдействия)

falsepositives

array of string

+

+

+

+

[]

Ссылки на сведения об исключениях, снижающих количество ложноположительных срабатываний (не является массивом исключений)

references

array of string

+

+

+

+

[]

Список URL со ссылками на справочные данные об этом правиле

usecases

array of string

+

+

+

+

[]

Список кейсов, в которых участвует правило. Подробнее в разделе Изменение и добавление базовых сведений

stage_of_attack

array of string

+

+

+

+

[]

Список стадий атаки, на которых может возникать подозрение. Подробнее в разделе Изменение и добавление базовых сведений

mitre

array of string

+

+

+

+

\{ technique: [], tactic: [] }

Информация по правилу, связанная с техниками/ тактиками по матрице MITRE ATT&CK

version

integer

+

+

+

+

0

Версия правила

event_source

string

+

+

+

+

''

Источник данных для правила для условной группировки

bool

json object

+

+

+

-

\{ must: [] }

Логическое условие запроса на языке Query DSL. Определяется запрос правила, не используется для правил типа chain (запрос пишется для каждого звена в атрибуте condition)

*filter_by_timeframe

boolean

+

+

+

+

true

Флаг, разрешающий правилу использовать в запросе фильтр по времени. При true добавляется в запрос временной интервал

*timeframe

integer

+

+

+

+

1

Интервал времени в минутах для фильтра по времени (глубина поиска по времени)

timestamp

datetime

-

-

-

-

now()

Время модификации правила

additional_fields

array of string

+

+

+

-

[]

Дополнительные поля из исходного события, названия и значения которых будут добавлены в срабатывание правила

*condition

+

+

+

+

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

Атрибут, формирующий основную сигнатуру правила. Задает тип правила и условия создания подозрений, если они применимы для создаваемого типа правила

filter_by_timeframe может быть использован для поиска в прошлое на каждой итерации. При значении false, в правиле не используется интервал, указанный в timeframe, вместо него рекомендуется использовать относительные диапазоны как условия в самом тексте запроса, например, условие range @timestamp gte now-1d будет производить поиск на 1 день в прошлом от времени события. В правилах цепочек значения времени события можно передавать как значения параметров во второе и последующие звенья.