В 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 over HTTPS - обычный HTTPS-паттерн |
|
SaaS-домены |
Легитимный трафик с «подозрительным» назначением |
|
Сканирование |
Nmap HackTool |
Зависит от конфигурации сканера |
C&C-серверы |
Outbound C&C connection |
TLS-сессия статистически неотличима от нормальной |
Логика проста: сессия к C2-серверу статистически неотличима от обычного HTTPS-соединения. Те же межпакетные задержки, те же размеры пакетов. ML «видит» только поведенческие паттерны, но не адресный контекст.
Решений два:
Расширить признаковое пространство - добавить IP-репутацию и SNI в вектор. Это переводит систему в гибридный режим: поведенческий анализ плюс репутационный.
Принять ограничение - позиционировать 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-модуль анализа трафика появится как экспериментальная функция. Если вы работаете с обнаружением вторжений или хотите обсудить детали исследования - пишите в комментариях.