ntced
TRANSCRIPT
NTCENDM Traffic Classification Engine
NTCENDM Traffic Classification Engine
- Статистическое определение протоколов (≈ 30 пакетов)- Определение платформ- Автоматическое обучение новым типам протоколов- Контроль качества распознавания- Загружаемая (бинарная) база отпечатков- Оптимизация вычислений для низкопроизводительныхплатформ
- Правила на основе DNS- Правила на основе портов- Счётчики- Минимальные зависимости (PF_RING, cmp.c)
NTCENDM Traffic Classification Engine
Классификатор(DPI)
QoS
Database
Классификация: способы реализации
- База сигнатур- Статистические методы
· PISA· SPID
База сигнатур
Поиск сигнатур из базы в каждом пакете
- Нужна база сигнатур- Высокий False Positive (строка bittorrent в письме)- Сложность высокопроизводительной реализации- Невозможность определения неизвестных протоколов
Статистические методы
- Используют те или иные техники машинного обучения· Вектор признаков (размеры пакетов, сигнатуры, частоты. . . )· База признаков известных протоколов· Поиск в базе при распознавании (метод ближайшегососеда)
Метод ближайшего соседа
{xi}
p2p
video
skype
DNS
{xi} – вектор признаков
PISAProtocol Identification via Statistical Analysis
- Эвклидово расстояние Dab =√∑
i(xai − xbi)2
- Атрибуты:
1 Средний размер пакета в каждом направлении2 Среднее время отклика в каждом направлении3 Среднее отклонение размера пакета в каждом направлении4 Среднее отклонение времени отклика в каждом
направлении5 Разность объема трафика по направлениям6 Энтропия
- ≈ 100 пакетов для уверенного распознавания- Точность: мало информации
SPIDProtocol Identification via Statistical Analysis
- Дивергенция Кульбака-Лейблера вместо расстояния1
D(P ‖ Q)KL =∑
Pilog(PiQi
)
- ≈ 30 пакетов flow для распознавания- ≈ 30 детекторов:
· Временны́е характеристики· Размеры пакетов (средние, максимальные, туда, обратно)· Частоты символов, двойных символов (TT,SS), юникода· Энтропия· Частоты сигнатур (в т.ч. запрос-ответ)
1DKL не является метрикой, D(P ‖ Q)KL 6= D(Q ‖ P )KL
SPID
- Простой в реализации- log2(x) быстро считается табличным способом- Можно обойтись целочисленной арифметикой для всего
SPID
detector1
detector2
. . .
detectorn
⊕ {x11 . . . x1K}
⊕ {x21 . . . x2L}
⊕ {xn1 . . . xnM}
Pkt. payload
Хэшфункции
X = {x11 . . . x1K , x21 . . . x2L, . . . , xn1 . . . xnM}
P = { xi∑jxj}
нормированный вектор признаков
SPIDна практике
- Плохие хэшфункции (медленные, огромное числоколлизий)
- Ошибки реализации (датчики считают неизвестно что изданных по случайным адресам)
- Некоторые датчики или их реализации только вредят(смысл считать частоты случайного контента?)
- Недостаточная точность- Огромный вектор признаков (медленно)- Плавающая точка (эмуляция)
SPIDнаша реализация
- Настоящие хэшфункции (murmur2)- Кластеризация обучающей выборки по вектору признаков- Автоматическая оценка качества распознавания- Отобраны лучшие детекторы- Улучшены и исправлены остальные- Собственные детекторы (punct_freq, hi_nibble_freq, gperf,byte_position_freq)
- Все вычисления в целых- RLE-сжатие векторов
SPIDнаша реализация
- 30 пакетов для распознавания (меньше хуже, больше тожехуже)
- 10 детекторов, 406 признаков по 16 бит- Размер текущей базы менее 5Kb- Около 1Kb в пике на сессию (при распознавании)- ≈ 30% - 60% Xeon 2.5Ghz на 1Gbit (миррор портапровайдера)
SPIDнаша реализация: кроссвалидация
Протокол Rec Prec Fmeas
vimeo 0.800 0.700 0.733ivi 0.933 1.000 0.960youtube 1.000 1.000 1.000rutube 1.000 1.000 1.000metacafe 0.800 0.800 0.800torrent 1.000 1.000 1.000skype 1.000 1.000 1.000
Recall = tptp+fn
Precision = tptp+fp
Fmeas = 2× Recall×PrecisionRecall+Precision
SPIDнаша реализация
punct_freq: Частоты символов пунктуации (текстовыепротоколы (HTML) vs. бинарный контент)
byte_position_freq: Появление определенных байт вопределенных позициях (skype)
gperf: База сигнатур- На основе perfect hash- Генерируется автоматически
NTCE
mgenspid_tool.pcap дампы
samples mgen.db Fingerbank
Fingerbank data
detectors.conf
spid_db_test ntced
NTCED
Linux Kernel
NTCED
PF_RING
SPID detector DNS detector
mgen
DHCP detector
Fingerbankflow hash
ntce_sink
Subscriber
(NDM)
Пакеты
MsgPack (pipe)
Blob (UDP)