Внимание! В KATA 8.0 функциональный блок EDR исключен из состава решения. При обновлении до этой версии все данные EDR будут удалены, функциональность EDR станет недоступна. Функциональный блок EDR становится отдельным решением KEDR Expert 8.0 (on-premise). Порядок обновления и инструкции по переносу данных смотрите в статье.

Формирование текстов SQL-запросов для правил обнаружения сетевых аномалий

06 октября 2026

ID 310970

Вы можете вручную формировать тексты SQL-запросов при создании или изменении правил обнаружения сетевых аномалий. Запросы предназначены для поиска, извлечения и анализа атрибутов протоколов, полученных в зарегистрированных сетевых сеансах. Атрибуты протоколов хранятся в отдельной базе данных на Сервере Kaspersky Anti Targeted Attack Platform. Для обращений к этой базе данных вам нужно формировать запросы на языке структурированных запросов (Structured Query Language, SQL), который поддерживает СУБД ClickHouse. Сведения о поддерживаемых запросах, с помощью которых выполняются действия для извлечения и анализа данных, см. в справке ClickHouse.

Для формирования текста SQL-запроса рекомендуется использовать один из встроенных шаблонов правил. Выбор шаблона можно сделать при создании правила. Вы можете выбрать шаблон, наиболее похожий по своему назначению с той задачей, которую вы хотите выполнить. После выбора встроенного шаблона для формирования другого текста SQL-запроса вам нужно нажать на кнопку Разблокировать все шаблонные значения.

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

Основные функции и операторы, применяемые в SQL-запросах для правил обнаружения сетевых аномалий

Поля таблицы со сведениями о сетевых сеансах

В базе данных для хранения атрибутов протоколов таблица со сведениями о сетевых сеансах содержит строки с блоками данных (chunks), полученных в течение 15-секундных интервалов. Каждый зарегистрированный сетевой сеанс представлен в таблице в виде отдельных блоков данных и в рамках этих блоков данных требуется выполнять обращения в SQL-запросах.

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

  • session_id, тип UInt64 – уникальный идентификатор сетевого сеанса;
  • chunk_start_time, тип DateTime64(6, 'UTC') – время начала блока данных (chunk), относящихся к сетевому сеансу, с точностью до микросекунды;
  • partition_id, тип UInt64 – идентификатор партиции в блоке данных (chunk);
  • start_time, тип DateTime64(6, 'UTC') – время первого пакета в блоке данных (chunk) с точностью до микросекунды;
  • end_time, тип DateTime64(6, 'UTC') – время последнего пакета в блоке данных (chunk) с точностью до микросекунды;
  • sip, тип IPv4 – IP-адрес отправителя (Сторона 1);
  • dip, тип IPv4 – IP-адрес получателя (Сторона 2);
  • sport, тип UInt16 – порт отправителя (Сторона 1);
  • dport, тип UInt16 – порт получателя (Сторона 2);
  • smac, тип FixedString(17) – MAC-адрес отправителя (Сторона 1) в формате XX:XX:XX:XX:XX:XX;
  • dmac, тип FixedString(17) – MAC-адрес получателя (Сторона 2) в формате XX:XX:XX:XX:XX:XX;
  • smac_as_id, тип UInt64 – MAC-адрес отправителя (Сторона 1), преобразованный в 64-битное число;
  • dmac_as_id, тип UInt64 – MAC-адрес получателя (Сторона 2), преобразованный в 64-битное число;
  • sip_as_id, тип UInt64 – IP-адрес отправителя (Сторона 1), преобразованный в 64-битное число;
  • dip_as_id, тип UInt64 – IP-адрес получателя (Сторона 2), преобразованный в 64-битное число;
  • vlanid, тип UInt16 – VLAN-идентификатор;
  • ether_type, тип UInt16 – тип Ethernet-кадра (например, 2048 для IPv4);
  • ipv4_type, тип UInt8 – тип IPv4 (8-битное значение);
  • protocol, тип LowCardinality(String) – название протокола прикладного уровня в таблице (например, GenericDceRpc, Ssh);
  • transport_protocol, тип LowCardinality(String) – название протокола транспортного уровня в таблице (например, Tcp, Udp);
  • bytes_sent_delta, тип UInt64 – объем отправленных данных за период блока данных (chunk);
  • packets_sent_delta, тип UInt64 – количество отправленных пакетов за период блока данных (chunk);
  • bytes_received_delta, тип UInt64 – объем полученных данных за период блока данных (chunk);
  • packets_received_delta, тип UInt64 – количество полученных пакетов за период блока данных (chunk);
  • dpi_dns, тип Array(Map(String, String)) – структурированные данные о сетевых событиях в трафике по протоколу DNS;
  • dpi_dns_raw, тип Array(String) – данные в JSON-формате о сетевых событиях в трафике по протоколу DNS;
  • dpi_krb, тип Array(Map(String, String)) – структурированные данные о трафике по протоколу Kerberos;
  • dpi_krb_raw, тип Array(String) – данные в JSON-формате о трафике по протоколу Kerberos;
  • dpi_dcerpc, тип Array(Map(String, String)) – структурированные данные о трафике по протоколу DCE/RPC;
  • dpi_dcerpc_raw, тип Array(String) – данные в JSON-формате о трафике по протоколу DCE/RPC;
  • dpi_ldap, тип Array(Map(String, String)) – структурированные данные о трафике по протоколу LDAP;
  • dpi_ldap_raw, тип Array(String) – данные в JSON-формате о трафике по протоколу LDAP;
  • total_attributes, тип UInt32 MATERIALIZED – общее количество атрибутов в полях dpi_dns_raw, dpi_krb_raw, dpi_dcerpc_raw и dpi_ldap_raw;
  • dpi_attributes_raw, тип Array(String) MATERIALIZED – объединенный массив данных об атрибутах в JSON-формате.

Поля таблицы с данными для регистрации событий

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

  • Поля, обязательные для заполнения:
    • aggregation_id, тип String – уникальный идентификатор агрегации, идентифицирующий событие;
    • session_ids, тип Array(UInt64) – массив идентификаторов сетевых сеансов, связанных с событием;
    • timestamp, тип DateTime64(6, 'UTC') – дата и время первого появления события;
    • protocol, тип String – название протокола в таблице со сведениями о сетевых сеансах (например, Ssh).
  • Поля для сохранения в событиях адресной информации и других данных о сетевых взаимодействиях (необязательные для заполнения и указания в SQL-запросе):
    • sip, тип IPv4 – IP-адрес отправителя;
    • dip, тип IPv4 – IP-адрес получателя;
    • sport, тип UInt16 – порт отправителя;
    • dport, тип UInt16 – порт получателя;
    • smac, тип FixedString(17) – MAC-адрес отправителя в формате XX:XX:XX:XX:XX:XX;
    • dmac, тип FixedString(17) – MAC-адрес получателя в формате XX:XX:XX:XX:XX:XX;
    • smac_as_id, тип UInt64 – идентификатор адресного пространства для MAC-адреса отправителя;
    • dmac_as_id, тип UInt64 – идентификатор адресного пространства для MAC-адреса получателя;
    • sip_as_id, тип UInt64 – идентификатор адресного пространства для IP-адреса отправителя;
    • dip_as_id, тип UInt64 – идентификатор адресного пространства для IP-адреса получателя;
    • vlanid, тип UInt16 – VLAN-идентификатор;
    • ether_type, тип UInt16 – тип Ethernet-кадра;
    • ipv4_type, тип UInt8 – тип IPv4.
  • Произвольно названные поля для указания их значений в событиях с помощью переменной $extra.<paramName>.

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

Использование переменных

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

  • string – текстовая строка;
  • date – дата в формате ГГГГ-ММ-ДД;
  • time – время в формате чч:мм;
  • weekday – номер дня недели (1–7, где 1 это понедельник);
  • ip – адрес IPv4 в формате XXX.XXX.XXX.XXX;
  • port – номер порта (0-65535);
  • int – целое 64-битное число.

Для указания переменной и ее типа используйте запись вида {{param_name:param_type}}. Если тип переменной не указан (в записи вида {{param_name}}), по умолчанию применяется тип string. Добавленные переменные отображаются под текстом SQL-запроса в блоке параметров Используемые переменные. В этом блоке можно задать значение переменной или выбрать для нее справочник со значениями.

При добавлении переменных в SQL-запрос учитывайте, что максимальное количество переменных в SQL-запросе – 30.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!