Разработка GNN для анализа трафика в сетях
Сетевой трафик — граф по природе: хосты (узлы), соединения (рёбра). GNN обнаруживает аномалии и атаки, которые невидимы при анализе отдельных flows, но очевидны в топологическом контексте.
Где GNN превосходит традиционный IDS
Традиционные IDS (Snort, Suricata) работают с сигнатурами и пороговыми правилами для отдельных пакетов и flows. Сложные атаки распределены по времени и множеству хостов:
- APT (Advanced Persistent Threat): медленное lateral movement через множество хостов
- Botnet C2: трафик от одного бота выглядит нормально, сеть — нет
- Insider threat: нормальный трафик, аномальная топология
Представление трафика как граф
Dynamic network graph
Скользящее временное окно (5–15 минут): все соединения формируют граф. Узлы = IP-адреса (с признаками: тип устройства, роль в сети, исторический профиль). Рёбра = агрегированные flow метрики за окно (байты, пакеты, порты, протоколы, duration).
Признаки узлов (node features):
- Количество исходящих/входящих соединений
- Уникальные destination IPs/ports
- Объём трафика по направлениям
- Протокольное распределение
- Временные паттерны (burstiness)
- Отклонение от исторического baseline
Признаки рёбер (edge features):
- Packet size distribution
- Inter-arrival time statistics
- Payload entropy (шифрование vs. plaintext)
- TCP flag patterns
- Duration и persistence
Детекция аномалий и атак
Link prediction для обнаружения аномальных соединений
Модель обучается предсказывать вероятность существования рёбра по базовому поведению сети. Новое неожиданное соединение (хост A никогда не коммуницировал с хостом B) → низкая predicted probability → аномалия.
Node classification
Классификация узлов: legitimate, C2_server, infected_host, scanner, exfiltration_source. Обучение на лабельных данных (известные инциденты + нормальный трафик).
Graph-level anomaly detection
Для обнаружения атак, затрагивающих всю сеть (DDoS, worm spreading): сравнение текущего graph embedding с исторической нормой. Variational Graph Autoencoder (VGAE) обучается на нормальном трафике и детектирует отклонения.
Обнаружение специфических угроз
Botnet detection
Боты: синхронное поведение (beaconing), схожие communication patterns, hierarchical C2 structure. GNN с temporal attention: обнаружение узлов с похожими temporal graph patterns, соответствующих botnet membership.
Lateral movement (APT)
Медленное распространение через сеть: каждый hop выглядит нормально, но последовательность хопов — нет. Temporal path analysis: GNN с рекуррентным компонентом для отслеживания path patterns во времени.
DNS tunneling
Необычные DNS-паттерны: высокая частота, длинные субдомены, нетипичные record types. Graph-based: DNS-сервер → клиент рёбра с аномальными атрибутами.
Реализация на PyTorch Geometric
from torch_geometric.nn import GATConv, global_mean_pool
from torch_geometric.transforms import NormalizeFeatures
class TrafficGNN(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = GATConv(in_channels=20, out_channels=64, heads=8, dropout=0.2)
self.conv2 = GATConv(64 * 8, 32, heads=1)
self.anomaly_head = torch.nn.Linear(32, 1) # Node-level anomaly score
def forward(self, data):
x, edge_index, edge_attr = data.x, data.edge_index, data.edge_attr
x = F.elu(self.conv1(x, edge_index, edge_attr))
x = F.dropout(x, p=0.2, training=self.training)
x = self.conv2(x, edge_index)
return torch.sigmoid(self.anomaly_head(x)) # Anomaly score per node
Production архитектура
Сбор трафика: NetFlow/IPFIX/sFlow collectors (Ntopng, PMACCT)
Stream processing: Apache Flink (windowed graph construction)
Graph DB: Neo4j (real-time neighborhood queries)
Inference: TorchServe + PyTorch Geometric
Alerting: Elastic SIEM / Splunk integration
Visualization: Gephi / Grafana + custom graph UI
Пропускная способность: до 100k flows/second при инкрементальном обновлении графа. Latency alert: 30–90 секунд (размер окна + inference time).
Precision/recall на NSL-KDD и реальных корпоративных данных: AUC 0.94–0.97 для известных attack types, 0.82–0.88 для novel attacks (zero-day).







