Мультиуровневый анализ с поддержкой мета и мультианомалий
Suricata — это мощный движок IDS/IPS и сетевого мониторинга с открытым исходным кодом. Он может анализировать сетевой трафик в режиме реального времени и генерирует структурированные события в формате eve.json.
Однако при работе с большим потоком событий становится ясно: просто фиксировать отдельные аномалии недостаточно.
Аналитикам нужно видеть взаимосвязи, агрегированные отклонения и комплексное поведение сети.
Suricata и полезные статьи на Хабре
Если вы не знакомы с Suricata, рекомендую ознакомиться с отличными публикациями:
Snort и Suricata — простой путь к использованию IDPS: от установки на сервер до грамотной настройки
Полное руководство по Suricata: основы и важные команды
Snort или Suricata. Часть 1: выбираем бесплатную IDS/IPS для защиты корпоративной сети
Snort или Suricata. Часть 2: установка и первичная настройка Suricata
Snort или Suricata. Часть 3: защищаем офисную сеть
Suricata активно используется для мониторинга, IDS, IPS и протокольного анализа. Все события пишутся в файл eve.json — универсальный формат, содержащий поля timestamp, src_ip, event_type, flow, dns, tls, alert и т.д.
Принцип обработки событий
Основной идеей для разработки методов анализа было предположение, что в выходных логах suricata содержится гораздо больше информации чем выдно на первый взгляд. И мы использовали методы машинного обучения для ее получения.
В методе, который мы реализуем и тестируем сейчас, используется простой, но эффективный подход:
События из eve.json загружаются и распределяются по Redis-ключам в зависимости от типа события.
eve.json → парсер → Redis:
flow → list "flow"
dns → list "dns"
tls → list "tls"
http → list "http"
Каждый ключ в Redis содержит список событий соответствующего типа. Это позволяет разделить обработку и анализ по потокам.
Архитектура
Ниже представлена структурная схема всей системы:

Анализатор TLS и роль JA3 / JA3S
Для анализа TLS-потока был реализован модуль на Python с использованиемIsolationForest
.
'sni_len' # длина SNI (Server Name Indication)
'version_len' # длина версии TLS
'ja3_len' # длина JA3 fingerprint
'ja3s_len' # длина JA3S fingerprint
Пример извлече ния признаков (python):
def extract_tls_features(events):
records = []
for event in events:
tls = event.get('tls', {})
record = {
'sni_len': len(tls.get('sni') or ''),
'version_len': len(tls.get('version') or ''),
'ja3_len': len(tls.get('ja3', {}).get('hash') or ''),
'ja3s_len': len(tls.get('ja3s', {}).get('hash') or '')
}
records.append(record)
return pd.DataFrame(records).fillna(0)
JA3 / JA3S — это сигнатуры TLS-сессий, полученные из параметров ClientHello и ServerHello.
Они не случайны, а воспроизводимы, и позволяют обнаруживать:
нестандартные клиенты (например, malware),
редкие серверные конфигурации,
попытки маскировки.
Анализаторы по другим потокам
Аналогичные модули реализованы для других типов событий:
flow
: объём, направление, флагиdns
: длина запроса, коды ответов, типы записейhttp
: методы, длина URI, заголовки
Каждый из них использует те же принципы:
признаки → модель IsolationForest → Redis с пометкой anomaly: true/false
.
Что такое мета-аномалия?
В предлагаемом подходе по определению аномалий в сетевом траффике мы вводим понятие мета-аномалии.
Мета-аномалия — это не просто отклонение в одном событии, а девиация в поведении всей системы.
Она обнаруживается на втором уровне анализа, поверх поточных моделей.
? Как это работает?
Каждый первичный модуль (flow
, dns
, http
, tls
) определяет аномалии на уровне отдельных событий с помощью своей модели (например, IsolationForest). Результаты этих моделей агрегируются во временные окна (например, 60 секунд) и используются как входные признаки для мета-модели.
Таким образом, формируется контекст системы в целом, а не только по одному потоку.
? Примеры агрегированных признаков (на каждый временной слот):
count_tls_anomalies_last_60s
count_http_anomalies_last_60s
count_flow_total_last_60s
unique_src_ips_last_60s
count_dns_events_last_60s
mean_packets_per_flow
rate_anomalies_total
Все эти метрики подаются в модель второго уровня — как правило, это IsolationForest
или RandomForestClassifier
.
? Обучение мета-модели
Мета-модель обучается на синтетических или реальных выборках, где:
вход — агрегированные числовые признаки по окну;
цель — бинарная метка: “поведение нормальное” или “аномальное”.
Обучение возможно даже без разметки, т.к. модели вроде IsolationForest работают в режиме поиска выбросов.
? Зачем это нужно?
Поведенческий анализ позволяет выявлять медленные, но системные отклонения;
Атакующий может действовать «по чуть-чуть» в каждом потоке, оставаясь ниже порога локальной аномалии;
Мета-анализ "видит" такие схемы за счёт агрегации на втором уровне.
? Результат
Если мета-модель классифицирует окно как “аномальное” →
генерируется сигнал?мета-аномалия
Это может отразиться в интерфейсе, попасть в журнал или спровоцировать алерт.
Что такое мультианомалия?
Мы также вводим термин мультианомалия.
Мультианомалия — это ситуация, когда в течение одного временного окна происходят аномалии в двух и более потоках событий.
Пример:
одновременно:
DNS-запрос к подозрительному домену,
TLS-сессия с редким JA3,
flow с аномально большим количеством байт.
➡ Такое событие классифицируется как мультианомалия уровня 3.
Уровни мультианомалий:
Уровень |
Кол-во потоков |
Символ |
---|---|---|
0 |
1 |
— |
1 |
2 |
? |
2 |
3 |
? |
3 |
4 |
? |
Пример графика мультианомалий

Дополнительные возможности
Веб-интерфейс на основе Plotly / Chart.js
Автоматическое обновление и фильтрация
Журнал мультианомалий с возможностью эскалации
Поддержка мультиязычности (русский/английский)
Расширение на другие источники: Zeek, Wazuh
Возможность интеграции с Kafka и SIEM
Заключение
Простого анализа отдельных событий уже недостаточно — особенно при распределённых атаках.
Сочетание:
анализа потоков,
поведенческой мета-модели,
и механизма мультианомалий —
позволяет более точно и уверенно выявлять реальные угрозы, а не просто одиночные всплески.
P.S.
Если вам интересна тема поведения в сетевой безопасности, или у вас есть опыт с Suricata, будет интересно обменяться идеями.
Дополнительные материалы (код, демо, тестовые данные) готовы по запросу.