Полгода назад на внутреннем 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 видит в сетевом трафике
Безсигнатурный 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-детектора
| ts | uid | id.orig_h | id.resp_h | proto | duration | orig_bytes | resp_bytes | conn_state |
| 1716422400 | CYhw0s3pSg... | 10.0.1.15 | 8.8.8. | udp | 0.023 | 42 | 128 | SF |
| 1716422460 | DZkw1t4qTh... | 10.0.1.15 | 10.0.2.5 | tcp | 14.201 | 3420 | 189400 | S1 |
Из этих сырых полей формируются производные признаки: среднее количество пакетов за сессию, стандартное отклонение размера 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, массовый bruteforce | Mimicry-трафик в пределах baseline, low-and-slow | Elastic ML anomaly jobs, кастомные NIDS |
| Autoencoder | Нестандартные паттерны соединений по reconstruction error | Медленная exfiltration с адаптированным feature vector | UEBA-модули, поведенческая аналитика в 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: обход поведенческого анализа на практике
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-трафик визуально неотличимым от пользовательского.
Ограничение: low-and-slow увеличивает время операции в десятки раз. На коротком внешнем пентесте (1–2 недели) это может быть неприемлемо. На длительном Red Team-упражнении - основной режим работы.LSTM-модель - это особая архитектура рекуррентных нейронных сетей, специально разработанная для обработки последовательных данных и решения проблемы затухающего градиента.
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 в CDN | Flow-based ML NIDS | Низкая | Ограничить объём за сессию |
Ключевой паттерн: ML IDS хорошо ловит то, что выбивается из baseline по объёму, скорости или необычности направления. Всё, что укладывается в нормальное распределение feature space - проходит.
Как detection engineer закрывает эти дыры
Если вы строите защиту - вот что реально работает против описанных техник обхода поведенческого анализа.
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")
Большинство 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)
Последнее редактирование модератором: