Статья ML IDS обнаружение атак без сигнатур: слепые зоны поведенческого детектора

Матричный принтер печатает на зелёной перфорированной бумаге строки кода и метрики детектора в свете янтарного ЭЛТ-монитора. Надпись об необнаруженной атаке теряется в кромешной темноте.


Полгода назад на внутреннем Red Team-упражнении Isolation Forest, обученный на месячном baseline из Zeek conn.log, пропустил DNS-туннель с exfiltration объёмом 800 КБ. Feature vector - средний размер пакетов, количество сессий за интервал, соотношение forward/backward байтов - оставался в пределах двух стандартных отклонений от нормы. Модель с F1 0.97 на датасете CICIDS 2017 в продакшене оказалась слепой. После этого случая каждый ML-детектор, который я разворачиваю, проходит adversarial-тестирование до включения в боевую инфраструктуру. Ниже разберём, какие слабости удаётся находить раз за разом.

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

Adversarial-тестирование - это метод систематической оценки модели машинного обучения с целью изучения её поведения при воздействии вредоносных или непреднамеренно опасных входных данных.

Что ML-based NIDS видит в сетевом трафике​

1780156160573.webp

Безсигнатурный IPS не разбирает содержимое пакетов как Snort или Suricata - он оперирует вектором признаков, построенным из метаданных сетевых сессий. Понимание этого вектора - отправная точка и для detection engineer, и для атакующего, планирующего evasion.

detection engineer - это специалист в области кибербезопасности, который разрабатывает, создает и поддерживает правила и логику, используемые для выявления вредоносной активности в организации.
Уклонение — это обход средств защиты информации с целью доставки эксплойта, атаки или другой формы вредоносного ПО в целевую сеть или систему без обнаружения.

Feature engineering: реальный набор признаков детектора​

Стандартный flow-based детектор получает на вход сетевые сессии, идентифицированные по 5-Tuple (SrcIP - DstIP - SrcPort - DstPort - Proto). Для каждой сессии рассчитывается вектор признаков. Zeek генерирует записи conn.log с полями, которые составляют основу feature set для аномалии сетевого трафика ML-моделей:
Ключевые поля Zeek conn.log для ML-детектора
tsuidid.orig_hid.resp_hprotodurationorig_bytesresp_bytesconn_state
1716422400CYhw0s3pSg...10.0.1.158.8.8.udp0.02342128SF
1716422460DZkw1t4qTh...10.0.1.1510.0.2.5tcp14.2013420189400S1

Из этих сырых полей формируются производные признаки: среднее количество пакетов за сессию, стандартное отклонение размера payload, соотношение входящих и исходящих байтов (ratio), длительность сессии, число одновременных соединений с одного IP, интервал между сессиями. Инструмент session_analyzer, описанный исследователями из ИСП РАН, рассчитывает аналогичный набор для каждого TCP/UDP/ICMP-потока.

И вот тут начинается самое интересное. Согласно исследованию Гетьмана и др. (ИСП РАН, 2022), эти признаки напрямую зависят от физической структуры сети, настроек оборудования и конкретных реализаций сервисов. Перетащил модель на другую сеть без переобучения - получил деградацию точности. Публичные датасеты вроде NSL-KDD или CICIDS 2017 этот эффект не отражают, потому что собраны в стерильных лабораторных условиях.

На практике feature set(набор функций) определяет, что модель способна видеть. Нет JA3/JA3S-хешей TLS-хендшейка - модель слепа к аномалиям в шифрованном трафике. Нет DNS-специфичных фич (длина запроса, энтропия доменного имени) - DNS-туннель пройдёт незамеченным. Нет анализа certificate chains - C2 через легитимный CDN неотличим от пользовательского HTTPS. Именно так и случилось в том кейсе из начала статьи.

Какие модели применяются и где ошибаются​

Обнаружение атак нейронной сетью и классическими ML-моделями развивается больше двух десятилетий. Согласно обзору arxiv (2025), NN-based detection по-прежнему спотыкается при практическом развёртывании - несмотря на все красивые цифры в публикациях. Разберу основные архитектуры с позиции реальной эксплуатации:

МодельЧто ловит хорошоСлепые зоныТипичное применение
Isolation ForestОбъёмные аномалии: port scan, DDoS, массовый bruteforceMimicry-трафик в пределах baseline, low-and-slowElastic ML anomaly jobs, кастомные NIDS
AutoencoderНестандартные паттерны соединений по reconstruction errorМедленная exfiltration с адаптированным feature vectorUEBA-модули, поведенческая аналитика в Splunk
LSTM/RNNВременные зависимости: периодичность beacon, аномальные последовательностиJitter с рандомизированными интервалами, traffic shapingПродвинутые SOC, исследовательские детекторы
Random Forest / Gradient BoostingКлассификация известных категорий атак по размеченным даннымZero-day detection ML: новый тип атаки за пределами обучающей выборкиГибридные IDS (Suricata + ML-модуль), NGFW ML

Отдельная боль - дисбаланс данных. Исследователи (PMC, 2025) фиксируют: в реальной сети нормальный трафик - подавляющее большинство, атаки - доли процента. Модель, оптимизированная по accuracy, может показывать 99.9% просто потому, что почти всё в тестовой выборке легитимно. Precision и recall по классу «атака» при этом бывают катастрофически низкими. Я видел модель с accuracy 99.95%, которая за месяц не поймала ни одного реального инцидента - зато алертов на легитимный трафик генерировала штук по двадцать в день.

Место поведенческого детектора в цепочке атаки​

Поведенческий IDS обнаружения вторжений работает неравномерно на разных этапах kill chain. Понимание этого определяет стратегию evasion.

Recon (внешний периметр): модель фиксирует всплеск соединений от одного источника к множеству портов или хостов. nmap -T4 -A практически гарантированно триггерит Isolation Forest. Но распределённый recon с нескольких IP в рамках baseline - модель часто пропускает, потому что каждый отдельный источник не выделяется из нормы.

Initial access: если эксплойт доставляется через один HTTPS-запрос к легитимному веб-серверу, flow-based ML NIDS не увидит ничего аномального. Payload зашифрован, метаданные сессии (один запрос, стандартный размер) не отличаются от обычного пользователя.

Lateral movement (внутренний пентест, modern-инфраструктура): здесь ML IDS наиболее полезна. Аномальные SMB-соединения между рабочими станциями, RDP к серверам, с которыми хост раньше не контактировал, - всё это отклоняется от baseline. Но оператор, который изучил штатные маршруты (через jump-хосты, по существующим AD-трастам), остаётся в пределах нормы.

Exfiltration: крупная передача данных вызовет алерт, если модель обучена на baseline исходящего трафика. Разбивка на мелкие порции через DNS или HTTPS к CDN - классический способ остаться ниже порога. Здесь техники Data Obfuscation (T1001, Command and Control) и Protocol Tunneling (T1572, Command and Control) работают лучше всего.

Ссылка на NIST CSF 2.0 DE.AE-01: behavioral threat detection работает только если baseline сетевых операций и ожидаемых потоков данных создан и поддерживается. Без актуального baseline ML-детектор слеп по определению.

Adversarial evasion: обход поведенческого анализа на практике​

1780156910638.webp

Adversarial machine learning IDS - не теория из академических статей. Обзор Springer (2025) выделяет evasion attacks и poisoning attacks как признанные категории adversarial evasion IDS. Разберём конкретные техники с привязкой к MITRE ATT&CK.

Mimicry: маскировка трафика под легитимный baseline​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Low-and-slow: остаться ниже порога аномалии​

ML-модели на основе Isolation Forest и Autoencoder ищут выбросы - точки, далёкие от центра распределения. Если атакующий удерживает все параметры в пределах 1–2 стандартных отклонений от среднего, anomaly score не превысит порог.

Применимость: внутренний пентест, любая инфраструктура с поведенческим IDS обнаружения вторжений. Особенно эффективно против Isolation Forest с дефолтными порогами.

Практические приёмы обхода IDS машинным обучением:
  • Exfiltration по каплям: вместо передачи 10 МБ за одну сессию - 50 КБ раз в 10 минут через DNS A/TXT-записи. Размер пакетов и ratio запрос/ответ остаются в норме при достаточно малых порциях. Применимо через Application Layer Protocol (T1071, Command and Control).
  • Lateral movement с минимальной скоростью: 1–2 SMB-соединения в час вместо массового spray. На уровне feature vector это выглядит как штатная AD-активность.
  • Рандомизация интервалов (jitter): LSTM-модели ловят периодичность beacon. Jitter 30–50% к базовому интервалу ломает временной паттерн. Большинство C2-фреймворков (Cobalt Strike, Sliver, Havoc) поддерживают этот параметр из коробки.
  • Легитимные каналы: Protocol Tunneling (T1572, Command and Control) через DNS-over-HTTPS или WebSocket через CDN делает C2-трафик визуально неотличимым от пользовательского.
LSTM-модель - это особая архитектура рекуррентных нейронных сетей, специально разработанная для обработки последовательных данных и решения проблемы затухающего градиента.
Ограничение: low-and-slow увеличивает время операции в десятки раз. На коротком внешнем пентесте (1–2 недели) это может быть неприемлемо. На длительном Red Team-упражнении - основной режим работы.

Poisoning: отравление обучающих данных​

Если атакующий присутствует в сети до или во время фазы обучения модели, он способен повлиять на baseline. Генерация малых объёмов аномального трафика в период обучения «растягивает» границу нормы.

Применимость: APT-сценарий, долгосрочное присутствие, legacy-инфраструктура без защиты обучающего пайплайна. На краткосрочном пентесте неприменимо.

Согласно обзору Springer (2025), poisoning attacks - признанная категория adversarial machine learning для IDS. Оператор в течение первых двух недель после компрометации генерирует фоновый трафик, по характеру похожий на будущий C2-канал, но без реальных команд. Когда модель переобучается (а это происходит периодически для борьбы с concept drift), этот трафик попадает в baseline. После переобучения реальный C2 для модели - норма.
Concept drift происходит, когда фундаментальная взаимосвязь между входными данными модели машинного обучения и ее целевой переменной изменяется с течением времени.

Это пересекается с Disable or Modify Tools (T1562, Stealth): целенаправленное ослабление механизма детекции.

Ограничение: poisoning требует понимания, когда и как модель переобучается. В инфраструктуре с защищённым ML-пайплайном (изолированные обучающие данные, мониторинг distribution shift) это значительно сложнее.

Когда ML IDS ловит, а когда пропускает​

Вместо абстрактных рассуждений - decision table для оператора:

СценарийТип моделиДетекцияРекомендация атакующему
Агрессивный port scan (nmap -T4 -A)Isolation Forest, любойВысокаяSlow scan (-T1), распределение по источникам
C2 beacon с фиксированным интервалом 60 секLSTM, статистический анализВысокаяJitter 30–50%, domain fronting
DNS tunneling (TXT > 512 байт)Autoencoder с DNS-фичамиВысокаяРазмер < 128 байт, интервал > 30 сек
HTTPS C2 через CDN (Azure/Cloudflare)Flow-based ML IDSНизкаяОптимальный вектор
Lateral movement 1–2 conn/час по легитимным маршрутамIsolation Forest, AutoencoderНизкаяПоддерживать baseline-совместимость
Password spray 50 хостов за 5 минутЛюбой anomaly-basedСредняя - высокаяРастянуть на часы, рандомизировать порядок
Exfiltration через WebSocket в CDNFlow-based ML NIDSНизкаяОграничить объём за сессию

Ключевой паттерн: ML IDS хорошо ловит то, что выбивается из baseline по объёму, скорости или необычности направления. Всё, что укладывается в нормальное распределение feature space - проходит.

Как detection engineer закрывает эти дыры​

1780157605899.webp

Если вы строите защиту - вот что реально работает против описанных техник обхода поведенческого анализа.

Ensemble-подход: одну модель обмануть проще, чем комбинацию. Isolation Forest на flow-level + LSTM на time-series + анализатор энтропии DNS-запросов создают перекрёстное покрытие. Mimicry, обманывающая flow-based модель, может не пройти temporal analysis. На одном проекте именно LSTM поймал beacon, который Isolation Forest пропустил - периодичность выдала, хотя по объёму всё было в норме.

Adversarial validation: обучили модель - атакуйте её сами. Генерируйте mimicry-трафик, slow-scan, beacon с jitter и проверяйте, что проходит. Каждый провал adversarial-теста - повод добавить feature или пересмотреть порог anomaly score.

Diversification of features: JA3/JA3S для TLS fingerprinting, энтропия DNS-запросов, HTTP User-Agent clustering, certificate transparency logs - каждый дополнительный feature расширяет пространство, в котором атакующему нужно имитировать нормальность. Чем больше осей - тем сложнее mimicry.

Мониторинг distribution shift: если baseline внезапно «поплыл» без видимых инфраструктурных изменений - возможен poisoning. Простой статистический тест выявляет drift на ранней стадии:
Python:
# Детекция distribution shift: сравниваем baseline с текущими данными
from scipy.stats import ks_2samp

baseline_durations = load_baseline("conn_duration_30d")
current_durations = get_current("conn_duration_24h")

stat, p_value = ks_2samp(baseline_durations, current_durations)
if p_value < 0.01:
    alert("Distribution shift in conn_duration - possible poisoning or infra change")
NIST CSF DE.AE-01 требует, чтобы baseline сетевых операций не просто существовал, а управлялся: регулярно валидировался, защищался от модификации, обновлялся контролируемо.

Большинство ML IDS в продакшене работают на тех же feature sets, что описаны в публикациях 2017–2018 годов. Isolation Forest на conn.log с дефолтными пятью признаками - потолок для 80% инсталляций, которые я видел при аудитах. Вендоры упаковывают эту модель в маркетинговые обёртки «поведенческая аналитика» и «AI-driven detection», но под капотом - те же признаки, тот же порог anomaly score, тот же отсутствующий adversarial validation.
Adversarial validation - это метод машинного обучения, используемый для обнаружения изменений в характеристиках и различий между обучающим и тестовым наборами данных.

Обзор arxiv (2025) прямо указывает: несмотря на два десятилетия исследований, NN-based detection по-прежнему буксует при практическом развёртывании. Гибридные системы - сигнатуры + ML + ручная аналитика - единственное, что даёт результат в реальных средах.

А это значит вот что - тихий оператор, потративший сутки на изучение baseline и настроивший C2 под профиль легитимного трафика, проходит через подавляющее большинство коммерческих ML-решений. Роль аналитика в SOC от этого не уменьшается - она меняется. Аналитик, который понимает feature space своей модели и знает, как атакующий этот space эксплуатирует, стоит больше, чем любой автоматический детектор. Те, кто хочет прощупать границы anomaly-based detection на стенде, а не в продакшене заказчика, найдут подходящие сценарии на HackerLab.pro - задачи в категории network заточены под работу с трафиком и детектами. (https://hackerlab.pro)
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab