За последний год мы тестировали adversarial-устойчивость ML-модулей в нескольких коммерческих IDS - модифицировали статистические признаки сетевых flow'ов (потоков), не трогая payload. Detection rate моделей, обученных на CICIDS2017 и аналогичных датасетах, стабильно проседал на десятки процентных пунктов от минимальных пертурбаций. По сути это обфускация шеллкода, только не на уровне байтов - на уровне статистических характеристик трафика: packet size distribution, inter-arrival time, количество пакетов в сессии. ML-детектор смотрит на flow и видит «легитимный HTTPS», хотя внутри работает C2-канал. Нормальных русскоязычных разборов adversarial ML в сетевой безопасности с практическим кодом я не встречал - всё ограничивается компьютерным зрением или фишингом. Обход ML-детекторов в IDS на уровне feature perturbation остался за бортом.
Adversarial-устойчивость ML-модулей - это их способность сохранять корректную работу при наличии непреднамеренных шумов или целенаправленных атак.
Feature perturbation - это техника в машинном обучении и Data Science, при которой в значения входных признаков намерено добавляется небольшой шум или изменение.
Как ML-детекторы IDS принимают решения о трафике
ML-based NIDS работает по трёхступенчатому pipeline. Понимание каждого шага критично для построения evasion-атаки - без этого будете тыкать пертурбации наугад.Извлечение признаков. Сетевой трафик преобразуется в числовые фичи - flow-based или packet-based. Типичный набор: длительность flow'а, средний размер пакета, стандартное отклонение inter-arrival time (IAT), количество пакетов в каждом направлении, соотношение payload к заголовкам, TCP-флаги. NSL-KDD содержит 41 признак + метку класса, UNSW-NB15 - 47 признаков + метки attack_cat и label (49 колонок всего), CICIDS2017 - свыше 80 признаков.
Нормализация и отбор. Признаки приводятся к единому диапазону (MinMax в [0, 1]) и проходят feature selection. Adversarial-пертурбации работают в нормализованном пространстве, и перевод в реальные единицы (байты, миллисекунды) требует обратного преобразования - об этом ниже.
Adversarial-пертурбация - это крошечное, специально рассчитанное изменение входных данных, которое заставляет модель ИИ делать грубые ошибки.
Классификация. Обученная модель (Random Forest, XGBoost, DNN, LSTM) выносит вердикт: benign или malicious, иногда с детализацией по типу атаки (DoS, Probe, R2L, U2R). Decision boundary между классами - то, что атакующий пытается сдвинуть.
По данным исследования, принятого в IEEE AI+ TrustCom 2024, главная уязвимость - в манипуляции мутабельными фичами: packet size, timing, flow patterns. Именно они делают вредоносный трафик «невидимым» для классификатора. Иммутабельные фичи (IP-адреса, порты назначения для конкретного сервиса) остаются неизменными - иначе атака просто сломается.
Что проверить прямо сейчас? - посмотрите, какие фичи ваша модель использует. Если feature importance на 80% состоит из мутабельных признаков (packet size, flow duration, IAT) - модель уязвима к adversarial perturbation по определению. Не «может быть уязвима» - уязвима.
Место adversarial ML в цепочке атаки: маппинг MITRE ATT&CK
Adversarial evasion - не изолированная техника. Это evasion-слой, который встраивается в полную цепочку: атакующий получает initial access, разворачивает агент, а затем маскирует C2-коммуникации от ML-модуля IDS. Но ещё до этого ему нужен инструментарий - surrogate-модели, обученные на публичных датасетах, фреймворки генерации пертурбаций.
| Техника MITRE ATT&CK | Тактика | Роль в adversarial-атаке на IDS |
|---|---|---|
| T1588.007 Artificial Intelligence | Resource Development | Подготовка adversarial-инструментария: обучение surrogate-моделей на публичных датасетах (CICIDS2017, NSL-KDD), настройка ART/CleverHans для генерации пертурбаций |
| T1027 Obfuscated Files or Information | Defense Evasion | Adversarial perturbation признаков flow'а - маскировка вредоносного трафика под легитимный |
| T1001 Data Obfuscation | Command and Control | Модификация статистических характеристик C2-трафика (timing, packet size) для обхода ML-классификатора |
| T1562.001 Disable or Modify Tools | Defense Evasion | Деградация точности ML-детектора через poisoning обучающей выборки |
| T1071 Application Layer Protocol | Command and Control | Мимикрия C2 под HTTP/HTTPS/DNS - по классификации MITRE кроссплатформенная техника (Windows, Linux, macOS); публичные тесты Atomic Red Team покрывают только Windows |
| T1095 Non-Application Layer Protocol | Command and Control | Adversarial perturbation характеристик нестандартного протокольного трафика (по MITRE: Windows, Linux, macOS; тесты Atomic Red Team - только Windows и Linux) |
Отдельно о T1071: эту технику часто ассоциируют с Windows (Cobalt Strike, Sliver), но по классификации MITRE ATT&CK она кроссплатформенна (Windows, Linux, macOS), хотя публичные тесты Atomic Red Team покрывают только Windows. HTTP-based C2 точно так же работает на Linux-серверах (Mythic, Havoc) с тем же набором сетевых признаков, которые ML-детектор пытается классифицировать. Adversarial perturbation C2-трафика одинаково актуальна для любой ОС - сетевые flow-фичи от ОС не зависят.
Операционный контекст: adversarial perturbation применяется после получения initial access, когда нужно скрыть C2-коммуникации от ML-модуля IDS. Предшествующий шаг - развёртывание агента на целевом хосте. Следующий - lateral movement через замаскированный канал. Без обхода ML-детекторов в IDS канал живёт минуты. По данным CrowdStrike Global Threat Report 2025, среднее breakout time (от initial access до начала lateral movement) - 62 минуты. За это время IDS с ML-модулем успеет среагировать, если C2 не замаскирован.
Таксономия evasion-атак на ML-детекторы IDS
Evasion-атаки на системы обнаружения вторжений различаются по уровню доступа к модели и методу генерации adversarial-примеров.
По доступу к модели. White-box - атакующий знает архитектуру, веса, фичи; gradient-based атаки (FGSM, PGD) работают напрямую. Black-box - доступ только к предсказаниям; нужна surrogate-модель или query-based оптимизация. Grey-box - частичное знание: атакующий знает, что IDS использует ML на базе Suricata с eve-log фичами, но не знает конкретную модель. На реальном пентесте grey-box - самый типичный сценарий. Чистый white-box я встречал ровно один раз, и то потому что заказчик сам выложил модель в Jupyter-ноутбуке на внутреннем GitLab.
По методу генерации:
| Метод | Преимущества | Ограничения | Когда применять | Когда не применять |
|---|---|---|---|---|
| FGSM | Одношаговый, минимум вычислений | Грубые пертурбации, не обходит adversarial training | Быстрый PoC робастности, baseline-оценка | Production evasion, модели с AT |
| PGD (итеративный) | Точнее FGSM, ближе к оптимуму | Требует white-box или хорошую surrogate | Глубокое тестирование границ модели | Pure black-box без данных для surrogate |
| GAN-генерация | Black-box, генерирует реалистичный трафик | Сложная настройка, нужен объёмный датасет | Black-box evasion, массовая генерация | Быстрый PoC, ограниченные ресурсы |
| Генетический алгоритм | Учитывает protocol constraints и зависимости фичей | Медленный, вычислительно дорогой | Protocol-aware perturbation | Real-time evasion |
Согласно ряду публикаций, GAN-based evasion-атаки на CICIDS2017 могут снижать accuracy Decision Tree сильнее, чем Logistic Regression. При poisoning-атаке картина обратная: Logistic Regression деградирует быстрее. Вывод простой - выбор метода adversarial ML атаки на IDS зависит от типа целевой модели. Универсального «ломателя» нет.
Feature-space vs problem-space - разграничение, которое многие упускают. Feature-space атака модифицирует числовой вектор признаков напрямую. Problem-space атака изменяет реальный трафик так, чтобы изменённые фичи корректно отразились в извлечённом feature-векторе. Не каждая feature-space пертурбация реализуема на практике - нельзя установить отрицательный размер пакета или timing меньше RTT сети. Это как constraint enforcement при генерации payload'ов: теоретически валидный вектор может быть физически нереализуем.
Constraint enforcement - это процесс гарантирования того, что система, процесс или набор данных функционируют строго в рамках заданных границ, пределов безопасности или логических правил.
Практика: adversarial perturbation сетевых признаков
Требования к окружению
- ОС: Linux (Ubuntu 22.04+) или macOS; Windows через WSL2
- RAM: минимум 8 ГБ для NSL-KDD/UNSW-NB15, рекомендуется 16 ГБ для CICIDS2017
- GPU: не обязателен для табличных данных; полезен для DNN-surrogate на больших выборках
- Зависимости: Python 3.9+, PyTorch 2.x, scikit-learn 1.3+, adversarial-robustness-toolbox 1.17+ (опционально)
- Датасет: NSL-KDD (бесплатно, ~25 МБ) или UNSW-NB15 (~500 МБ)
- Режим работы: полностью offline после скачивания датасета
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
На практике ε подбирается экспериментально: начните с 0.05 и увеличивайте до 0.20 с шагом 0.05, фиксируя кривую деградацию accuracy. Если модель «ломается» при ε=0.05 - робастность критически низкая, и разговаривать тут не о чем. Если держит до 0.15 - baseline приемлемый, но adversarial training обязателен.
Для промышленного тестирования робастности IDS есть Adversarial Robustness Toolbox (ART от IBM) - он реализует FGSM, PGD, C&W и другие атаки с поддержкой PyTorch, TensorFlow и scikit-learn моделей. Писать FGSM вручную полезно, чтобы понять механику, но ART экономит часы на PGD-вариантах и всякой рутине с clipping.
Transferability: когда surrogate-модель достаточна
В реальном пентесте white-box доступ к модели IDS - редкость. Основной рабочий сценарий: обучить surrogate-модель на публичном датасете и рассчитывать, что adversarial-примеры перенесутся (transfer) на целевую.Papernot et al. («Transferability in Machine Learning: from Phenomena to Black-Box Attacks using Adversarial Samples», 2016) показали высокую transferability adversarial-примеров для DNN. Но для tree-based моделей (Random Forest, XGBoost) - а именно их чаще ставят в production IDS из-за скорости инференса - transferability значительно ниже и сильно зависит от feature engineering. Если feature set surrogate-модели не совпадает с целевой, перенос adversarial примеров в сетевой безопасности работает непредсказуемо.
Что это означает на практике:
- Целевая IDS на DNN (Darktrace, Vectra AI и аналогичные) - adversarial-примеры с surrogate DNN другой архитектуры переносятся с высокой вероятностью при схожем feature set. Это основной сценарий для evasion-атак с использованием машинного обучения.
- Целевая IDS на tree-based моделях (типично для open-source решений на базе Suricata с ML-плагинами) - transferability непредсказуема. Surrogate должна максимально повторять feature set целевой системы. Для PGD это критично; FGSM менее чувствителен к расхождению фичей, но и результат грубее.
- Ensemble из разных архитектур - серьёзно снижает transferability. Adversarial-пример, обманывающий DNN, часто не обманывает RF в том же ансамбле. Если при тестировании вы видите, что ensemble держит удар - это хороший знак.
Ограничения adversarial perturbation в реальных сетях
Исследование из IEEE AI+ TrustCom 2024 подчёркивает: в реальных сетях атакующий не контролирует все фичи. Мутабельные признаки (packet size, timing, количество пакетов) можно менять через padding и задержки. Иммутабельные (IP-адреса, целевые порты, TCP-флаги для корректного handshake) изменить нельзя без потери функциональности.Дополнительная головная боль - фичи взаимозависимы. Изменение packet size косвенно влияет на flow duration и byte rate. Изменение IAT сдвигает jitter-статистику. Генетический алгоритм (как предложено в том же исследовании) учитывает эти зависимости, но FGSM и PGD - нет. Для них нужна дополнительная проекция, отфильтровывающая «невозможные» комбинации фичей. Теоретически валидный вектор может быть физически нереализуем - как payload, который проходит все проверки, но падает при реальном исполнении.
Когда adversarial perturbation трафика не работает:
- IDS использует deep packet inspection параллельно с ML - perturbation flow-фичей не скроет сигнатуру в payload
- Stateful firewall отслеживает TCP-состояния - нельзя произвольно менять TCP-флаги без разрыва сессии
- NGFW с HIDS-компонентом коррелирует сетевые и хостовые данные - обход NGFW с помощью adversarial примеров закрывается хостовой телеметрией
Защитные меры и где ML-классификаторы остаются уязвимыми
Результаты защитного фреймворка из IEEE AI+ TrustCom 2024: комбинация adversarial training, балансировки датасета, feature engineering и ensemble learning серьёзно повышает робастность детекции (в опубликованных бенчмарках - на десятки процентных пунктов accuracy и заметное снижение false positive rate) по сравнению с baseline при наличии adversarial-атак. Тестирование проводилось на NSL-KDD и UNSW-NB15.Adversarial training: модель обучается на смеси нормальных и adversarial-примеров. Работает против тех атак, которые использовались при обучении (FGSM, PGD), но слабо против новых методов (GAN-based, генетические алгоритмы). Аналогия из сетевой безопасности прямая: сигнатурный IDS детектит то, что видел. Adversarial training расширяет «видение», но не закрывает zero-day adversarial-вектора.
Ensemble learning: комбинация моделей разных архитектур (DNN + RF + XGBoost). Adversarial-пример, оптимизированный под одну архитектуру, часто не обманывает другую. Ансамбль снижает эффективность transfer-атак, но увеличивает latency инференса - для IDS на каналах 10 Гбит/с каждая миллисекунда на счету. Тут приходится выбирать.
Protocol-aware feature engineering: добавление фичей, привязанных к спецификации протокола (корректность TCP-флагов, валидность HTTP-заголовков, порядок TLS-хендшейка). Эти фичи сложнее мутировать без нарушения функциональности атаки. На мой взгляд, protocol-aware подход - самая эффективная мера против adversarial ML атак на IDS, потому что он повышает долю иммутабельных фичей в decision boundary модели. Атакующему просто нечего крутить.
Слепые зоны, которые не закрывает ни одна мера
Ни adversarial training, ни ensemble не защищают от problem-space атак, которые модифицируют реальный трафик без знания feature set. Атакующий, который просто добавляет случайный padding к пакетам и рандомизирует timing, не оптимизирует adversarial-пример - но смещает статистические признаки в зону неопределённости модели. Такие «грубые» пертурбации менее эффективны, чем gradient-based, но не требуют вообще никакого знания о модели. Тривиально до абсурда, зато работает.Вторая слепая зона - concept drift. ML-модель обучена на трафике определённого периода. Легитимный трафик мигрирует в сторону cloud-сервисов, меняется distribution. Модель деградирует без каких-либо активных атак. По данным Mandiant M-Trends 2025, медианное время нахождения злоумышленника в сети до обнаружения - 11 дней. Этого достаточно, чтобы провести разведку нормального трафика и подстроить C2-паттерны под легитимный профиль сети.
Чеклист: аудит робастности ML-детектора IDS
- Зафиксировать baseline accuracy и F1-score модели на чистом тестовом наборе - отдельно для каждого класса трафика
- Запустить FGSM с ε=0.05, 0.10, 0.15, 0.20 - построить кривую деградации accuracy
- Выполнить PGD-атаку (20 итераций, α=0.01) - сравнить с FGSM, зафиксировать разницу
- Обучить surrogate-модель другой архитектуры - оценить transferability adversarial-примеров
- Разделить feature set на мутабельные и иммутабельные - проверить feature importance: если топ-5 фичей мутабельны, модель уязвима
- Добавить 20–30% FGSM/PGD adversarial-примеров в обучающую выборку - переобучить, повторить тесты (не защищает от GAN-based и генетических атак)
- Собрать ensemble из минимум двух архитектур (DNN + tree-based) - сравнить с одиночной моделью под атакой
- Внедрить protocol-aware фичи (TCP flags consistency, HTTP method validity, TLS handshake order) - замерить прирост робастности
- Проверить модель на concept drift: подать трафик за период на 3–6 месяцев позже обучающего
- Задокументировать: baseline accuracy, accuracy под FGSM/PGD, accuracy после adversarial training - для передачи в отчёт
Adversarial training помогает, ensemble помогает, protocol-aware фичи помогают - но каждая мера по отдельности недостаточна - только комбинация работает. А главное, что я вижу в реальных проектах: устойчивость ML моделей к атакам не тестируется вообще. ML-модуль ставится как «чёрный ящик», вендор обещает AI-detection, security-команда ставит галочку и уходит.
Регулярное переобучение на свежем трафике критичнее любого отдельного adversarial defence - concept drift убивает модели тише, чем FGSM, но масштабнее. Если ML-модуль в IDS не переобучался полгода, его robustness тестировать бессмысленно - он деградировал сам. Возьмите чеклист выше, прогоните пункты 1–3 на своей модели. Если accuracy просела больше чем на 15 п.п. при ε=0.10 - у вас проблема, и она не в adversarial-атаках, а в том, что модель никто не проверял.
Последнее редактирование модератором: