В 2020-ом году отправившись на рекомендованную всем «удаленку» мы в Айдеко перекроили весь роадмап продукта и быстро выпустили Ideco UTM VPN Edition – версию с расширенными возможностями по организации, защите и контролю доступа удаленных сотрудников. Делать что-то другое в IT-продукте в это время казалось несвоевременным. Примерно, как сейчас – не использовать AI-инструменты в работе и AI-функциональность в продукте для защиты. В то время, когда злоумышленники вовсю используют AI-инструменты. И атаки становятся все изощреннее и быстрее.

В 2025 году зафиксировано 90 zero-day эксплойтов в дикой природе. 44% атак нулевого дня нацелены на корпоративные сетевые устройства - NGFW и VPN-шлюзы. Среднее время от публикации CVE до первой эксплуатации в реальных атаках сократилось до 5 дней и еще более сократится. Ни одна сигнатурная база не успевает за этим темпом. Рассказываем, как мы работаем над ML-модулем обнаружения вторжений в Ideco NGFW, что показал натурный эксперимент с ИСП РАН на 73 миллионах сессий и какие ограничения у этого подхода.

Почему сигнатуры перестают справляться

Сигнатурный IPS работает принципиально так же, как антивирус в 1990-х: есть база известных угроз, есть входящий трафик, есть сравнение. IPS - при всей мощи, работает с заранее описанными паттернами.

Проблема не в самом подходе - проблема в скорости появления угроз. По данным Google Threat Intelligence Group, в 2025 году в дикой природе было зафиксировано 90 zero-day эксплойтов. По данным RAND Corporation, среднее время жизни zero-day атаки до её обнаружения составляет 312 дней. За это время сигнатура не появится: её невозможно написать на то, что ещё не обнаружено.

Сигнатура появляется только после обнаружения атаки. Между появлением нового эксплойта и созданием сигнатуры существует окно уязвимости. Нужен метод, который не зависит от наличия сигнатур. Именно здесь помогает машинное обучение.

Что делают мировые лидеры

Palo Alto Networks, Fortinet, Cisco, Check Point и Juniper уже несколько лет встраивают ML в свои IPS. Подходы у них принципиально разные - и это поучительно.

Среди многообразия отечественных NGFW пока ML-IPS ни у кого не реализован, поэтому Ideco NGFW вероятно будет первым.

Palo Alto: Deep Learning в облаке и на устройстве

Advanced Threat Prevention позиционируется как первый в индустрии IPS, способный блокировать zero-day атаки в режиме inline. Архитектура решения - гибрид: известный трафик обрабатывает классический сигнатурный движок (совместимый с правилами Snort/Suricata). Подозрительный трафик, не совпавший с сигнатурами, уходит в облако на анализ моделями глубокого обучения - либо анализируется локально в режиме Local Deep Learning прямо на устройстве.

Конкретные результаты по тестам Unit 42 на реальном трафике: ML-модель для обнаружения SQL-инъекций - TPR 90% при FPR 0,02%. Модель для command injection - TPR 92% при FPR 0,011%. По заявлениям вендора, решение блокирует на 60% больше zero-day injection-атак по сравнению с традиционным IPS.

Fortinet: ML как фильтр «серой зоны»

В FortiOS 7.6 реализован интересный архитектурный принцип: ML применяется не ко всему трафику, а только к той части, которая прошла через сигнатурный фильтр без однозначного вердикта. Сигнатуры обрабатывают «белое» и «чёрное», ML работает с «серой зоной». Это снижает и ложные срабатывания, и вычислительную нагрузку.

Модели доставляются через отдельный пакет IPS-MLDB с серверов FortiGuard. Заявлено обнаружение Cobalt Strike с точностью 99,6%.

Cisco: fingerprinting без расшифровки трафика

Cisco сделала ставку на анализ зашифрованного трафика без MITM-прокси. Encrypted Visibility Engine (EVE) анализирует TLS Client Hello при установлении соединения и по «отпечатку» (fingerprint) хендшейка идентифицирует клиентский процесс. База - более 1 миллиарда TLS-отпечатков и 10 000 образцов вредоносного ПО ежедневно. Система распознаёт более 5 000 клиентских процессов.

Это не замена инспекции трафика, а дополнительный слой: обнаружение вредоносного процесса в зашифрованном соединении без ресурсоёмкой расшифровки.

Check Point: коллективный ИИ

ThreatCloud AI агрегирует телеметрию от 150 000 подключённых сетей и миллионов конечных устройств. Более 50 движков с AI-функциями - включая NLP для фишинговых страниц, deep learning для классификации макросов в документах. Заявленная точность предотвращения zero-day малвари - 99,7% по данным VirusTotal-тестирования.

Juniper: ML на потоковом трафике

В Junos OS 24.2R1 ML-детекция zero-day работает на потоковом трафике, без обращения в интернет, используя лишь фрагмент файла для вынесения вердикта. Модели доставляются через CDN вместе с антивирусными сигнатурами. Дополнительно - Adaptive Threat Profiling: автоматическое создание фидов угроз на основе IPS-событий конкретного заказчика.

Сравнение подходов

Критерий

Palo Alto

Fortinet

Cisco

Check Point

Juniper

Тип ML

Deep Learning

ML-классификаторы (supervised)

ML fingerprinting (TLS/QUIC)

50+ AI/ML-движков

ML на устройстве

Где работает

Облако + локально

На устройстве

На устройстве

Облако ThreatCloud

На устройстве

Что детектирует

C2, SQLi, CMDi, zero-day

Cobalt Strike, HTTP-эксплойты

Вредоносные процессы в TLS

Малварь, фишинг, DNS, аномалии

Zero-day файлы (PE, ELF)

Обновление моделей

Облачное

IPS-MLDB пакет

VDB-пакеты

Непрерывно из ThreatCloud

CDN-пакет

Зависимость от облака

Частичная

Низкая

Низкая

Высокая

Низкая

Ключевой вывод: все без исключения используют ML как дополнение к сигнатурам, а не полную замену. И большинство доставляют готовые модели централизованно - из облака или через пакеты обновлений.

Именно здесь наш подход принципиально отличается.

Почему мы не пошли по пути готовых облачных моделей

Все перечисленные выше вендоры обучают модели централизованно и доставляют клиентам. Это разумно с точки зрения масштабирования, но создаёт фундаментальное ограничение.

Универсальной ML IDS не существует. Это не маркетинговый тезис - это математика.

Исследования ИСП РАН по переносимости ML-моделей демонстрируют: модель, обученная на трафике одной сети, значительно хуже работает на трафике другой. Причина в том, что информативные признаки сетевого трафика - межпакетные задержки, скорости передачи, распределения размеров пакетов - зависят от физической топологии сети, настроек оборудования, конфигурации сервисов и даже от количества одновременно работающих пользователей. Перенос модели между сетями - это перенос между разными статистическими распределениями данных.

Подробнее об этой проблеме (и о том, как IDS Suricata может выступать учителем для ML-модели) – в очень подробной статье ИСП РАН «От сигнатур к ML IDS: чему IDS Suricata может научить модель?», опубликованной на Хабре. Рекомендуем ее тем, кому нужен глубокий технический разбор.

Наш вывод: лучшая ML-модель для конкретного заказчика - та, которая обучена на его собственном трафике. Именно поэтому мы проектируем ML IPS для работы непосредственно на NGFW заказчика. Для российских организаций, особенно объектов КИИ – это одно из обязательных требований.

Эксперимент: 73 миллиона сессий, две недели, реальный трафик

Прежде чем что-то проектировать, нужно понять, работает ли идея вообще на реальном трафике. Мы провели натурный эксперимент совместно с Институтом системного программирования РАН.

Архитектура стенда

Трафик с шлюза с установленным Ideco NGFW (включая работающую IPS) зеркалировался параллельно на два модуля:

  • session_analyzer (ИСП РАН) - утилита, которая в реальном времени вычисляет вектор признаков для каждой TCP-сессии по принципу 5-tuple (src IP:port, dst IP:port, proto). Полный вектор содержит 118 признаков; для ML мы отобрали 10 наиболее информативных.

  • IPS на базе Suricata с актуальными сигнатурами (~30 МБ правил в JSON). IPS выступала «учителем»: её срабатывания использовались для разметки датасета - каждой сессии присваивалась метка «атака» или «чистый трафик».

Эксперимент длился две недели. Итого: 73 миллиона сетевых сессий, из которых 57 465 были помечены Suricata как атаки.

Почему именно эти 10 признаков

Полный вектор session_analyzer содержит 118 признаков. Для ML-модели мы используем только 10, выбранных по результатам исследований ИСП РАН о значимости признаков и подтверждённых экспериментально:

Признак

Описание

Average Packet Size

Средний размер пакета в сессии

Flow Bytes/s

Скорость передачи данных (байт/с)

Max Packet Length

Максимальная длина пакета

Fwd Packet Length Mean

Средняя длина пакета от клиента к серверу

Fwd IAT Min

Минимальный межпакетный интервал (клиент → сервер)

Total Length of Fwd Packets

Суммарный объём данных от клиента

Fwd IAT Std

Среднеквадратичное отклонение межпакетных интервалов

Flow IAT Mean

Средний межпакетный интервал (оба направления)

Fwd Packet Length Max

Максимальная длина пакета от клиента

Fwd Header Length

Суммарная длина TCP-заголовков от клиента

 

Эти признаки описывают поведенческие паттерны сессии, а не её содержимое. Это принципиально: метод работает независимо от шифрования трафика.

Важная техническая деталь: все средние значения и дисперсии вычисляются онлайн по алгоритму Уэлфорда - без накопления массивов длин пакетов. Это критично для производительности на высокоскоростных сетях:

# Алгоритм Уэлфорда: онлайн-вычисление среднего без хранения массива
def update_welford(count, mean, new_value):
    count += 1
    delta = new_value - mean
    mean += delta / count
    return count, mean

# Дисперсия вычисляется аналогично через M2
def update_welford_variance(count, mean, M2, new_value):
    count += 1
    delta = new_value - mean
    mean += delta / count
    delta2 = new_value - mean
    M2 += delta * delta2
    variance = M2 / (count - 1) if count > 1 else 0
    return count, mean, M2, variance

Вместо хранения всех длин пакетов - три скалярных переменных на признак. Для сети с сотнями тысяч параллельных сессий разница в памяти существенна.

От Random Forest к CatBoost: история с итерациями

Первая итерация эксперимента - Random Forest. Результаты на обучающей выборке выглядели хорошо (F1 до 0,99). Но на тестовой выборке (трафик другого временного периода) картина была иной:

Модель: Random Forest, 100% обучающих данных
Тест: 73 518 285 сессий (73 460 820 чистых, 57 465 атак)

TP (обнаружено атак):   16 110
FN (пропущено атак):    41 355  <- 72% атак пропущено
FP (ложные срабатыв.):   8 767
TN (верно чистый):  73 452 053

Precision: 0,647   Recall: 0,280   F1: 0,391   FPR: 0,012%

Модель обнаруживала лишь 28% атак - такой результат был неприемлем. И анализ выявил три причины.

Причина 1: «Грязная» разметка. Часть срабатываний Suricata связана с событиями, векторы признаков которых неотличимы от чистого трафика. Например, обнаружение по IP-адресу или SNI (без содержательных статистических признаков сессии). Модель обучалась на размеченных данных, где «атака» и «чистый трафик» имели идентичные поведенческие профили.

Причина 2: Несовпадение точек наблюдения. Suricata и session_analyzer видели трафик из разных точек сети - до шлюза и после NAT-трансляции. Одному событию Suricata могло соответствовать два соединения в session_analyzer. Метки времени расходились до 100 мс.

Причина 3: Дрейф трафика. Обучающие и тестовые данные - разные временные периоды. Характер трафика менялся вместе с нагрузкой, новыми правилами IPS (а они в Ideco NGFW обновляются каждые 2 часа), изменениями в пользовательской активности.

После перехода на CatBoost (градиентный бустинг над деревьями решений) и итеративной очистки данных результаты кардинально изменились.

Поиск состязательных примеров: ключ к качеству

Главным улучшением стала процедура выявления «плохих» sid - тех категорий атак, чьи векторы признаков неотличимы от чистого трафика в нашем признаковом пространстве.

В 10-мерном нормализованном признаковом пространстве максимальное геометрическое расстояние между двумя векторами: dist_max = √10 ≈ 3,162. Экспериментально установлено: вектора считаются «близкими» при dist < 0,0003.

Все векторы атак сравнивались с первыми 2 миллионами чистых векторов. Результат: из 57 465 первоначальных атак, после фильтрации близких к чистым векторам, осталось 16 798 реальных атак. 40 667 событий перекласифицированы в «чистый трафик» - они определяются исключительно по адресным признакам, не присутствующим в 10-мерном поведенческом векторе.

Итоговые результаты: четыре итерации

Итерация

Условия

F1-score

Precision

Recall

FPR

Random Forest

Исходный датасет, 57K атак

0,391

0,647

0,280

0,012%

CatBoost, эксп. 1

Фильтрация IP-only, 16K атак

0,71–0,98

0,55–0,97

0,94–1,00

< 0,01%

CatBoost, эксп. 3

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

0,986

0,974

0,999

< 0,001%

CatBoost, эксп. 4

Оценка обобщения: 12% чистых + 38% атак одного периода

0,979

0,993

0,966

< 0,001%

 

Финальная модель (оценка обобщающей способности):

Модель обучалась только на одном временном участке (12% чистых векторов и 38% всех атак). Тестировалась на всём датасете - 55,5 миллиона сессий из восьми разных временных периодов:

Accuracy:  0,9999
Precision: 0,9928
Recall:    0,9661
F1-score:  0,9792
FPR:       0,00066%

Это ключевой результат: модель, обученная на части данных, корректно классифицирует трафик временных периодов, в которых она не обучалась. Обобщающая способность подтверждена на 55 миллионах сессий.

Гиперпараметры итоговой модели: CatBoostClassifier, iterations=1000, depth=8, eval_metric='F1', task_type='CPU'. Для инференса модель экспортируется в ONNX и выполняется через ONNX Runtime - скорость составляет сотни тысяч запросов в секунду.

64 категории атак, которые ML не обнаружит: ограничения метода

Исследование выявило фундаментальное ограничение, которое важно понимать при внедрении любой поведенческой ML IDS.

64 категории сигнатур Suricata имеют векторы признаков, практически идентичные чистому трафику. Это ограничение признакового пространства, а не проблема конкретной ML-модели.

Что это за события:

Категория

Примеры sid

Причина

IP blocklists

Spamhaus DROP, Dshield

Блокировка по IP - статистика сессии идентична легитимной

VPN-сервисы (анонимайзеры)

HolaVPN, Anonymizer

Обычный HTTPS с нестандартным SNI

DoH/DoT

dns.google.com, .dns.google

DNS over HTTPS - обычный HTTPS-паттерн

SaaS-домены

supabase.co

Легитимный трафик с «подозрительным» назначением

Сканирование

Nmap HackTool

Зависит от конфигурации сканера

C&C-серверы

Outbound C&C connection

TLS-сессия статистически неотличима от нормальной

 

Логика проста: сессия к C2-серверу статистически неотличима от обычного HTTPS-соединения. Те же межпакетные задержки, те же размеры пакетов. ML «видит» только поведенческие паттерны, но не адресный контекст.

Решений два:

  1. Расширить признаковое пространство - добавить IP-репутацию и SNI в вектор. Это переводит систему в гибридный режим: поведенческий анализ плюс репутационный.

  2. Принять ограничение - позиционировать ML-модуль как дополнение к сигнатурной IPS в Ideco NGFW, закрывающее именно то, что сигнатуры не видят: неизвестные атаки с нетипичным поведением.

Мы выбрали второй путь. Это совпадает с архитектурным принципом всех ведущих вендоров.

Другие ограничения

Model Drift (дрейф модели). Межпакетные задержки и скорости передачи данных зависят от состояния сети: количества активных пользователей, нагрузки, изменений инфраструктуры. При значительных изменениях сети модель деградирует. Sophos, например, переобучает модели каждые 3 месяца - мы считаем этот интервал разумным.

Мы наблюдали это в эксперименте: на 6-м временном участке (начало новой рабочей недели после сезона отпусков) ложные срабатывания резко возросли. Вероятная причина - изменился характер трафика из-за возвращения сотрудников и обновления правил IPS. После переобучения модели на данных этого же участка качество вернулось к норме.

Начальный период накопления данных. Для обучения нужно не менее 2 месяцев размеченных данных на конкретной сети заказчика. В этот период ML-модуль работает только в режиме наблюдения - сигнатурный IPS остаётся основным инструментом.

Качество определяется разнообразием атак. Если в сети клиента мало атак, обобщающая способность модели будет слабее. Для таких случаев планируем добавить режим «пентест-обогащения»: контролируемая генерация атакующего трафика на этапе обучения.

Проблема калибровки вероятностей. Для Random Forest значения predict_proba требуют дополнительной калибровки (метод Плата или изотоническая регрессия) для корректной вероятностной интерпретации. CatBoost в этом плане даёт более корректно откалиброванные вероятности из коробки - это один из аргументов в его пользу.

Архитектура ML IPS в Ideco NGFW

На основе результатов исследования мы разработали поэтапный план реализации. Вот как это будет устроено изнутри.

Сбор признаков: VPP и онлайн-алгоритмы

Признаки для каждой сессии (conntrack) будут вычисляться непосредственно в плоскости обработки трафика - в VPP (Vector Packet Processing). Это позволяет получать признаки без копирования трафика в памяти и с минимальными накладными расходами.

По завершении сессии (или по таймеру) вектор из 10 признаков сохраняется в ClickHouse с TTL = 1 месяц. Каждая строка содержит flow_id, адресную информацию и 10 столбцов признаков:

{
  "flow_id": "01HZ...",
  "src_ip": "10.0.0.15",
  "dst_ip": "1.2.3.4",
  "src_port": 54321,
  "dst_port": 443,
  "proto": 6,
  "average_packet_size": 487.3,
  "flow_bytes_per_s": 12450.8,
  "max_packet_length": 1460,
  "fwd_packet_length_mean": 312.1,
  "fwd_iat_min": 148,
  "total_length_fwd_packets": 9364,
  "fwd_iat_std": 2340.5,
  "flow_iat_mean": 18750.2,
  "fwd_packet_length_max": 1460,
  "fwd_header_length": 320
}

Разметка: IPS как учитель

Срабатывания IPS сопоставляются с таблицей сессий через единый flow_id. Архитектурно: flow_id генерируется как ULID в модуле контроля трафика, доступен внутри Suricata, записывается в EVE JSON как ideco_flow_id. В ClickHouse существуют две таблицы - статистика коннтраков и события IPS, связанные по ключу.

К каждой помеченной сессии добавляются: метка класса («атака» / «не атака»), sid, имя и категория события IPS. «Плохие» sid, выявленные в исследовании, исключаются из обучающей выборки автоматически.

Обучение и экспорт в ONNX

После накопления минимального датасета (рекомендуемый период - 2 месяца) запускается обучение модели. Модель экспортируется в ONNX и выполняется через ONNX Runtime. Ожидаемый размер модели Random Forest - десятки МБ. Скорость инференса - сотни тысяч запросов в секунду.

Предусмотрено как ручное переключение «обучение → эксплуатация», так и автоматическое.

Inference Daemon и «мягкие» вердикты

Inference Daemon получает вектор из 10 признаков для каждой завершённой сессии и отправляет его в ONNX Runtime. Вместо бинарного ответа используется вероятностный вердикт (predict_proba):

В журнал событий безопасности попадает не «атака X обнаружена», а «атака X с вероятностью 0,87». Администратор настраивает порог срабатывания. Рекомендуемый стартовый порог - 0,75. Это позволяет управлять балансом между полнотой обнаружения и числом ложных срабатываний без переобучения модели.

Аналогичный подход реализован у Cisco (EVE Threat Confidence Score) и Palo Alto (настраиваемые пороги уверенности). Вероятностный вердикт - стандарт для зрелых ML IPS-систем.

Мониторинг и переобучение

Предусмотрен мониторинг трёх групп метрик:

  • Качество модели: FPR, TPR, F1-мера на верифицированных срабатываниях

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

  • Model Health: интегральный индикатор «здоровья» модели - пора ли переобучать

Переобучение - как ручное, так и автоматическое. Администратор может вручную размечать срабатывания («верно» / «ошибочно»), и эти метки учитываются при следующем цикле обучения.

Что будет дальше: приоритеты из мирового опыта

Анализ подходов зарубежных вендоров позволяет выделить конкретные приоритеты в развитии:

Многоклассовая классификация. Текущая модель - бинарная («атака» / «не атака»). Переход к определению типа атаки («сканирование», «C2-канал», «эксплойт уязвимости», «DDoS») позволит интегрировать ML IPS с тактиками и техниками MITRE ATT&CK - как это делают Palo Alto и Check Point.

Анализ зашифрованного трафика. Подход Cisco EVE - fingerprinting TLS Client Hello - следующий логичный шаг. Возможность детектировать вредоносные процессы без расшифровки трафика критична для организаций, где TLS-инспекция неприменима по разным причинам.

Расширение признакового пространства. Включение адресной информации (IP-репутация, SNI) в вектор закроет часть из 64 «слепых» категорий и переведёт систему в полноценный гибридный режим.

Предобученные модели + дообучение. Открытый вопрос: возможно ли создать «базовую» модель, которая после дообучения на клиентском трафике даёт результаты, сопоставимые с «нативно» обученной? Исследования ИСП РАН по переносимости дают осторожно оптимистичный ответ. Это потенциально решит проблему начального периода накопления данных для новых инсталляций.

Автоматическая калибровка и адаптация. Автоматическое обнаружение Model Drift и запуск переобучения без участия администратора - цель, к которой движется большинство зрелых ML IPS-платформ.

Заключение

Итоги исследования: F1-мера 0,979 и FPR менее 0,001% на натурном эксперименте с 55 миллионами сессий реального корпоративного трафика. Это не лабораторный синтетический бенчмарк, а двухнедельный эксперимент на живой инфраструктуре.

Главный вывод: ML-модель, обученная на реальном трафике конкретной сети, демонстрирует высокое качество бессигнатурного обнаружения атак. ML дополняет сигнатурную IPS - и именно такую архитектуру используют все ведущие вендоры.

Отличие нашего подхода от зарубежных лидеров: мы обучаем модель не централизованно с доставкой через облако, а непосредственно на NGFW заказчика, на его реальном трафике. Это даёт лучшую адаптацию к специфике конкретной инфраструктуры и снимает облачную зависимость - критический фактор для российского рынка.

В ближайших версиях Ideco NGFW ML-модуль анализа трафика появится как экспериментальная функция. Если вы работаете с обнаружением вторжений или хотите обсудить детали исследования - пишите в комментариях.

Комментарии (0)