В настоящее время для противодействия компьютерным атакам применяются разнообразные средства защиты информации:
-
межсетевые экраны;
-
системы обнаружения вторжений уровня сети;
-
системы обнаружения вторжений уровня хоста;
-
межсетевые экраны нового поколения (NGFW);
-
SIEM системы (также называемые – событийные системы обнаружения компьютерных атак);
-
криптографические средства защиты сетей связи;
-
и другие классы средств.
Каждое из перечисленных выше средств обладает своими достоинствами и недостатками, а выбор в применяемых средствах конкретной компанией зависит от разных причин: финансовых, инфраструктурных или других.
Системы обнаружения атак уровня сети
Основным способом выявления компьютерных атак остается применение сигнатурного анализа. Главным его недостатком является практически нулевая вероятность обнаружения новых или модифицированных деструктивных сетевых воздействий.
Следовательно, решение задачи обнаружения модифицированных и, желательно, новых компьютерных атак с использованием эвристических или интеллектуальных методов (ML IDS) является актуальной и перспективной.
Формулировки задачи построения ML IDS уровня сети:
-
Провести классификацию сетевого трафика, разделив его на 2 (или более) класса: «чистый» сетевой трафик и компьютерная атака (деструктивное воздействие). Если есть возможность, то класс компьютерных атак разбивают на подклассы и тогда можно говорить о много классовой классификации.
-
выявить аномалию (аномальное сетевое соединение / сетевую сессию / сетевой пакет) в сети связи.
Принципиальные отличия в формулировках задач построения ML IDS:
-
при построении классификатора сетевого трафика для обучения ML IDS требуется размеченный датасет, содержащий образцы (вектора признаков), принадлежащие всем распознаваемым классам, что в «реальной» жизни может быть затруднительно.
Некоторые причины затруднений формирования датасетов: владелец защищаемого ресурса может быть против того, чтобы атаковали его ресурс; невозможно создать точную модель защищаемого ресурса с необходимой инфраструктурой создать затруднительно; множество инструментов атак открытое и «хороший» датасет собрать сложно и другие причины;
-
при построении системы выявления аномалий исследователю известен только один вид трафика: “чистый” сетевой трафик, не содержащий признаков деструктивных воздействий.
Подробнее про процесс разработки ML IDS, а также атаках на ML IDS можно прочитать в статье “Состязательные атаки против системы обнаружения вторжений, основанной на применении методов машинного обучения“.
В данной публикации пойдет речь о построении системы обнаружения вторжений уровня сети с использованием методов машинного обучения (далее ML IDS).
Попыток построить ML IDS уровня сети с использованием классификаторов достаточно много и в статьях результаты зачастую очень хорошие (например, “Синтез модели машинного обучения для обнаружения компьютерных атак на основе набора данных CICIDS2017”).
Однако сами авторы признаются, что высокое качество классификации наблюдается исключительно на их стендах (инфраструктуре), там, где происходило обучение моделей, а их перенос на другие сети связи показывает более низкие результаты. Это связано с тем, что наиболее известные инструменты сбора и разметки сетевого трафика для ML IDS уровня сети формируют вектора признаков, содержащих признаки, непосредственно зависящие от физической структуры сети, в которой производился сбор сетевого трафика, настроек сетевого оборудования, а также конкретных реализаций сетевых сервисов. Отличия же в них приводят к возникновению ошибок классификатора и снижению точности модели.
О чем же эта статья?
В связи с вышесказанным у авторов статьи возникли вопросы:
-
можно ли построить ML IDS уровня сети на уже эксплуатируемой сети связи?
-
можно ли обучить ML IDS не атакуя защищаемый ресурс намеренно? Другими словами: можно ли обучить ML IDS опираясь на зарегистрированные классическими средствами обнаружения вторжений события (например, IDS Suricata)?
-
какие возникают при этом трудности?
-
какое при этом ожидать качество классификации?
-
какие при этом будут ограничения?
Для ответа на эти вопросы была выдвинута гипотеза о возможности построения ML IDS уровня сети с применением событий безопасности, зарегистрированных IDS Suricata, для разметки датасетов.
Для формирования векторов признаков сетевого трафика был разработан собственный инструмент расчета значений вектора признаков сетевого трафика для каждого сетевого соединения session_analyzer (в проведенном нами исследовании использовался только протокол TCP, в общем случае инструмент позволяет проводить анализ и других протоколов).
Необходимо отметить, что утилита session_analyzer – это аналог инструмента разметки сетевого трафика NTLFlowLyzer (https://github.com/ahlashkari/CICFlowMeter).
Описание процесса функционирования инструмента session_analyzer
Принципы формирования векторов признаков сетевого трафика, реализованный в утилите session_analyzer
-
Анализу подлежат все сетевые пакеты следующих сетевых протоколов: Ethernet II, MPLS, VLAN, IPv4, TCP, UDP, ICMPv4. Сетевые пакеты других протоколов канального, сетевого и транспортного уровня отбрасываются.
-
Идентификатором сетевой сессии (Flow ID) является символьная последовательность, состоящая из 5 компонент (5-Tuple): Destination IP-Source IP-Destination Port-Source Port-Proto.
-
Под сетевой сессией понимается последовательность сетевых пакетов принадлежащих одному TCP соединению, UDP потоку или последовательности ICMP пакетов (ICMP поток).
Идентификация принадлежности пакета к определенной сессии осуществляется по совпадению адресной информации 5-Tuple:
или Destination IP-Source IP-Destination Port-Source Port-Proto;
или Source IP- Destination IP- Source Port-Destination Port-Proto. -
Критерий начала сетевой сессии:
– TCP сессия (соединение) регистрируется и для нее производится расчет вектора признаков только в том случае, если в наблюдаемой сессии первым пакетом был сетевой пакет с установленным флагом SYN=1 и флагом ACK = 0 в TCP пакете. По данному пакету определяется направление передачи данных (т.е. какой IP адрес считается источником (отправителем / клиентом) и какой IP адрес считается адресом назначения (сервером);
– UDP / ICMP сессия (поток) регистрируется при появлении первого сетевого пакета с новым идентификатором пакета. По первому пакету определяется направление (инициатор) передачи данных. При таком подходе возможна ошибка определения направления передачи данных (например, session_analyzer в начальный момент времени, сразу после своего запуска может увидеть первым и единственным пакетом DNS ответ, и данный пакет будет проанализирован). -
Критерий окончания сетевой сессии:
– для любых сетевых сессий встроен таймаут, таймаут отсчитывается от последнего принятого пакета в сетевой сессии. В конфигурационных файлах задаются 3 таймаута, выраженных в миллисекундах.
Значения по умолчанию:
tcp_session_timeout = 60000 – для TCP сессий;
udp_session_timeout = 60000 – для UDP сессий;
icmp_session_timeout = 60000 – для ICMP пакетов, относящихся к одной сессии.
– дополнительно для TCP сессий отслеживаются пакеты разрыва TCP соединений, предусмотрены ожидание следующих сценариев разрыва соединений:
сценарий 1: клиент или сервер присылает пакет с установленным флагом RST, после такого пакета сессия считается закрытой;
сценарий 2: клиент является инициатором разрыва соединения и посылает пакет с установленным флагом FIN, тогда возможны 2 варианта ответа от сервера:
– если сервер присылает пакет с установленным флагом RST, то сессия считается закрытой;
– если анализатор получает пакет от клиента или сервера с установленным флагом FIN, то анализатор запускает стандартный механизм отслеживания подтверждения получения данных (SeqNumber и AсkNumber) для двух сторон взаимодействия, после подтверждения (установленный файл ACK) обоими сторонами получения пакетов с установленными флагами FIN сессия считается закрытой. -
Поток (в названиях признаков – Flow) сетевых пакетов – это строгая (т.е. важен порядок следования) последовательность сетевых пакетов, которые принимает анализатор в рамках одной сетевой сессии. Очевидно, что в данном случае направление передачи данных не учитывается.
-
Поток сетевых пакетов в направлении Forward (в названиях признаков – Fwd) – это строгая последовательность сетевых пакетов, передаваемых от клиента к серверу, в рамках одной сетевой сессии.
-
Поток сетевых пакетов в направлении Backward (в названиях признаков – Bwd) – это строгая последовательность сетевых пакетов, передаваемых от сервера к клиенту, в рамках одной сетевой сессии.
-
Длительность сетевой сессии может быть рассчитана 2 способами:
– от времени первого пакета в сетевой сессии до времени поступления последнего пакета в сетевой сессии (параметр в конфигурационном файле: is_need_calc_duration_by_last_payload = false);
– от времени первого пакета в сетевой сессии до времени поступления последнего пакета с полезными данными (где длина payload > 0) в сетевой сессии (параметр в конфигурационном файле: is_need_calc_duration_by_last_payload = true). -
Для оценки «единственности / независимости» текущей сетевой сессии было введено понятие потока сетевых сессий от заданного источника сессий на заданный сетевой ресурс – это множество сетевых сессий созданных между одним хостом (Source IP) и заданным сетевым сервисом (Destination IP + Destination Port + Proto). Т.е. идентификатором потока сетевых сессии является число сформированная конкатенацией четырех чисел:
stream_id = IP-Source | IP-Destination | Port- Destination | Proto.
Для описания «единственности / независимости» текущей сетевой сессии используются различные признаки, которые характеризуют:
– наличие параллельных сетевых сессии для текущего потока сетевых сессии;
– время возникновения текущей сетевой сессии по сравнению с параллельными сетевыми сессиями для данного потока сессий;
– время между появлениями сетевых сессии для данного потока сессий.
Множество признаки данной группы в названиях содержат слово Stream. -
Сетевые сессии в потоке считаются «независимыми» – это время между созданием сетевых сессий в потоке превышает заданный порог session_simple_timeout.
По умолчанию, session_simple_timeout = 60000000 микросекунд. -
Временной интервал между текущей сессий и предыдущей сессией в потоке сетевых сессий ограничен порогом session_time_prev_absent, если текущая сессия является первой в потоке сессий или время ее создания превышает session_time_prev_absent, то значение соответствующего признака выставляется равным session_time_prev_absent.
По умолчанию, session_time_prev_absent = 60000000 микросекунд. -
Временной интервал между текущей сессий и следующей сессией (если такое время можно измерить, т.е. новая сессия создана раньше времени окончания текущей в потоке сессий) в потоке сетевых сессий также ограничен порогом session_time_next_absent, если текущая сессия является последней в потоке сессий или время создания следующей сессии превышает session_time_next_absent, то значение соответствующего признака выставляется равным session_time_next_absent.
По умолчанию, session_time_next_absent = 60000000 микросекунд. -
Значения признаков, характеризующих последовательность сетевых пакетов относящихся к одной сетевой сессии, могут быть рассмотрены как случайная величина. Для такой случайной величины рассчитываются следующие характеристики: количество значений в последовательности, минимальной и максимальное значение случайной величины, оценка математического ожидания, несмещенная оценка дисперсии случайной величины и несмещенная оценка среднеквадратичного отклонения случайной величины (таблица 1).
-
Для описания каждой сетевой сессии формируется вектор из 118 признаков (ниже представлено их описание). Названия ряда нижеперечисленных признаков взяты из перечня признаков инструмента CICFlowMeter, при расчете значений признаков были учтены недостатки, выявленные нами и указанные в статье: “Я больше не верю публичным датасетам”.
Расчет значений вектора признаков сетевого трафика, реализованный в утилите session_analyzer
Для расчета некоторых характеристик случайной величины, при классическом способе расчета, необходимо хранить все значения последовательности, для же экономии памяти можно использовать алгоритмы online математики (метод Уэлфорда для расчета оценок математического ожидания, несмещенной оценки дисперсии и несмещенной оценки среднеквадратичного отклонения случайной величины).
Перечень характеристик случайной величины и выражения для из расчета.
-
Количество значений в последовательности. Сокращение (префикс) добавляемый к названию признака – Count.
-
Минимальное значение случайной величины в последовательности. Сокращение (префикс) добавляемый к названию признака – Min.
-
Максимальное значение случайной величины в последовательности. Сокращение (префикс) добавляемый к названию признака – Max.
-
Оценка математического ожидания случайной величины. Сокращение (префикс) добавляемый к названию признака – Mean.
Классический способ расчета:Online способ расчета:
-
Несмещенная оценка дисперсии случайной величины. Сокращение (префикс) добавляемый к названию признака – Variance.
Классический способ расчета:Online способ расчета:
-
Несмещенная оценка среднеквадратичного отклонения случайной величины. Сокращение (префикс) добавляемый к названию признака – Std.
Описание признаков, характеризующих сетевые сессии
|
№ п/п |
Обозначение признака в наборе данных |
Описание |
Тип данных, пример |
|
1. |
Session Index |
Индекс сессии |
Целое число, |
|
2. |
SNI |
Server Name Indication. Имя сервера, указанное в пакете ClientHello протокола TLS/SSL |
Символьная строка, |
|
3. |
Flow ID |
Идентификатор сессии |
Символьная строка, 172.18.0.2-85.249.84.244-443-41782-6 |
|
4. |
Source IP |
IP адрес источника сетевой сессии |
Символьная строка, |
|
5. |
Source Port |
Port транспортного уровня источника сетевой сессии |
Целое 16-битное число, |
|
6. |
Destination IP |
IP адрес назначения сетевой сессии |
Символьная строка, |
|
7. |
Destination Port |
Port транспортного уровня назначения сетевой сессии |
Целое 16-битное число, |
|
8. |
Protocol |
Протокол транспортного уровня, может принимать следующие значения: 1 – ICMP, 6 – TCP, 17 – UDP |
Целое 8 битное число, |
|
9. |
Timestamp |
Метка времени, формат метки: число.месяц.год час:мин.микросекунды |
Символьная строка, 16.11.2021 11:41 |
|
10. |
Flow Duration |
Длительность сессии в микросекундах |
Целое 64-битное число, 9772334 |
|
11. |
Total Fwd Packets |
Количество сетевых пакетов, переданных в направлении от клиента к серверу |
Целое 64-битное число, 13 |
|
12. |
Total Backward Packets |
Количество сетевых пакетов, переданных в направлении от сервера к клиенту |
Целое 64-битное число, 11 |
|
13. |
Total Length of Fwd Packets |
Суммарная длина полезных данных (payload) в байтах, переданных от клиента к серверу |
Целое 64-битное число, 1929 |
|
14. |
Total Length of Bwd Packets |
Суммарная длина полезных данных (payload) в байтах, переданных от сервера к клиенту |
Целое 64-битное число, 3695 |
|
Статистические характеристики длин передаваемых полезных данных (payload) в направлении Forward (от клиента к серверу), в байтах |
|||
|
15. |
Fwd Packet Length Max |
Максимальная длина пакета |
Целое 64-битное число, |
|
16. |
Fwd Packet Length Min |
Минимальная длина пакета |
Целое 64-битное число, |
|
17. |
Fwd Packet Length Mean |
Оценка математического ожидания длин пакетов (средняя длина пакета) |
Вещественное число, |
|
18. |
Fwd Packet Length Std |
Несмещенная оценка среднеквадратичного отклонения длин пакетов |
Вещественное число, |
|
Статистические характеристики длин передаваемых полезных данных (payload) в направлении Backward (от сервера к клиенту), в байтах |
|||
|
19. |
Bwd Packet Length Max |
Максимальная длина пакета |
Целое 64-битное число, |
|
20. |
Bwd Packet Length Min |
Минимальная длина пакета |
Целое 64-битное число, |
|
21. |
Bwd Packet Length Mean |
Оценка математического ожидания длин пакетов (средняя длина пакета) |
Вещественное число, |
|
22. |
Bwd Packet Length Std |
Несмещенная оценка среднеквадратичного отклонения длин пакетов |
Вещественное число, |
|
23. |
Flow Bytes/s |
Отношение суммарной длины переданных полезных данных (payload) (в байтах) к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10 |
Вещественное число, |
|
24. |
Flow Packets/s |
Отношение общего количества сетевых пакетов в сетевой сессии к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10. |
Вещественное число, 2.45591278 |
|
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Flow (без учета направления передачи данных), первый пакет сетевой сессии считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета (не зависимо от направления передачи данных). Межпакетные интервалы измеряются в микросекундах |
|||
|
25. |
Flow IAT Mean |
Оценка математического ожидания межпакетных интервалов |
Вещественное число, |
|
26. |
Flow IAT Std |
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов |
Вещественное число, |
|
27. |
Flow IAT Max |
Максимальное значение межпакетного интервала |
Целое 64-битное число, |
|
28. |
Flow IAT Min |
Минимальное значение межпакетного интервала |
Целое 64-битное число, |
|
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Forward (от клиента к серверу), первый пакет в направлении Forward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward. Межпакетные интервалы измеряются в микросекундах |
|||
|
29. |
Fwd IAT Total |
Суммарное значение всех межпакетных интервалов в направлении Forward |
Целое 64-битное число, |
|
30. |
Fwd IAT Mean |
Оценка математического ожидания межпакетных интервалов в направлении Forward |
Вещественное число, |
|
31. |
Fwd IAT Std |
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Forward |
Вещественное число, |
|
32. |
Fwd IAT Max |
Максимальное значение межпакетного интервала в направлении Forward |
Целое 64-битное число, |
|
33. |
Fwd IAT Min |
Минимальное значение межпакетного интервала в направлении Forward |
Целое 64-битное число, |
|
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Backward (от сервера к клиенту), первый пакет в направлении Backward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward |
|||
|
34. |
Bwd IAT Total |
Суммарное значение всех межпакетных интервалов в направлении Backward |
Целое 64-битное число, |
|
35. |
Bwd IAT Mean |
Оценка математического ожидания межпакетных интервалов в направлении Backward |
Вещественное число, |
|
36. |
Bwd IAT Std |
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Backward |
Вещественное число, |
|
37. |
Bwd IAT Max |
Максимальное значение межпакетного интервала в направлении Backward |
Целое 64-битное число, |
|
38. |
Bwd IAT Min |
Минимальное значение межпакетного интервала в направлении Backward |
Целое 64-битное число, |
|
39. |
Fwd Header Length |
Суммарная длина заголовков транспортного уровня (TCP / UDP) при передаче данных в направлении Forward (от клиента к серверу) |
Целое 64-битное число, |
|
40. |
Bwd Header Length |
Суммарная длина заголовков транспортного уровня (TCP / UDP) при передаче данных в направлении Backward (от сервера к клиенту) |
Целое 64-битное число, |
|
41. |
Fwd Packets/s |
Отношение общего количества сетевых пакетов, переданных в направлении Forward (от клиента к серверу), к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10. |
Вещественное число, |
|
42. |
Bwd Packets/s |
Отношение общего количества сетевых пакетов, переданных в направлении Backward (от сервера к клиенту), к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10. |
Вещественное число, |
|
Статистические характеристики длин передаваемых полезных данных (payload) без учета направления передачи данных, в байтах |
|||
|
43. |
Min Packet Length |
Минимальная длина пакета |
Целое 64-битное число, |
|
44. |
Max Packet Length |
Максимальная длина пакета |
Целое 64-битное число, |
|
45. |
Packet Length Mean |
Оценка математического ожидания длин пакетов (средняя длина пакета) |
Вещественное число, |
|
46. |
Packet Length Std |
Несмещенная оценка среднеквадратичного отклонения длин пакетов |
Вещественное число, |
|
47. |
Packet Length Variance |
Несмещенная оценка дисперсии длин пакетов |
Вещественное число, 171623.7101 |
|
48. |
Average Packet Size |
Оценка математического ожидания длин пакетов (средняя длина пакета). Данный признак повторяется и равен значению Packet Length Mean |
Вещественное число, |
|
Количество сетевых пакетов, переданных в направлении Forward (от клиента к серверу), содержащих заданный флаг равный 1 в заголовке TCP пакета |
|||
|
49. |
Fwd FIN Flags |
FIN = 1 |
Целое 64-битное число, |
|
50. |
Fwd SYN Flags |
SYN = 1 |
Целое 64-битное число, |
|
51. |
Fwd RST Flags |
RST = 1 |
Целое 64-битное число, |
|
52. |
Fwd PSH Flags |
PSH = 1 |
Целое 64-битное число, |
|
53. |
Fwd ACK Flags |
ACK = 1 |
Целое 64-битное число, |
|
54. |
Fwd URG Flags |
URG = 1 |
Целое 64-битное число, |
|
55. |
Fwd ECE Flags |
ECE = 1 |
Целое 64-битное число, |
|
56. |
Fwd CWR Flags |
CWR = 1 |
Целое 64-битное число, |
|
57. |
Fwd NS Flags |
NS = 1 |
Целое 64-битное число, |
|
Количество сетевых пакетов, переданных в направлении Backward (от сервера к клиенту), содержащих заданный флаг равный 1 в заголовке TCP пакета |
|||
|
58. |
Bwd FIN Flags |
FIN = 1 |
Целое 64-битное число, |
|
59. |
Bwd SYN Flags |
SYN = 1 |
Целое 64-битное число, |
|
60. |
Bwd RST Flags |
RST = 1 |
Целое 64-битное число, |
|
61. |
Bwd PSH Flags |
PSH = 1 |
Целое 64-битное число, |
|
62. |
Bwd ACK Flags |
ACK = 1 |
Целое 64-битное число, |
|
63. |
Bwd URG Flags |
URG = 1 |
Целое 64-битное число, |
|
64. |
Bwd ECE Flags |
ECE = 1 |
Целое 64-битное число, |
|
65. |
Bwd CWR Flags |
CWR = 1 |
Целое 64-битное число, |
|
66. |
Bwd NS Flags |
NS = 1 |
Целое 64-битное число, |
|
67. |
Stream Session Number |
Номер сетевой сессии |
Целое 64-битное число, |
|
68. |
Stream Was Prev Session |
Есть ли предыдущая сетевая сессия в потоке? |
Целое 8-битное число, |
|
69. |
Stream Was Next Session |
Есть ли следующая сетевая сессия после текущей в потоке? |
Целое 8-битное число, |
|
70. |
Stream Prev Session Time |
Время в микросекундах между созданием текущей сетевой сессии и предыдущей сетевой сессией. Ограничение значения данного признака описано в п.12. |
Целое 64-битное число, |
|
71. |
Stream Next Session Time |
Время в микросекундах между созданием следующей и текущей сетевой сессии. Ограничение значения данного признака описано в п.13. |
Целое 64-битное число, |
|
72. |
Stream Sessions On Start |
Число параллельных сетевых сессий в потоке сетевых сессий на момент создания текущей сессии (значение включает текущую сессию) |
Целое 64-битное число, |
|
73. |
Stream Sessions On Close |
Число параллельных сетевых сессий в потоке сетевых сессий на момент окончания текущей сессии (значение включает текущую сессию) |
Целое 64-битное число, |
|
74. |
Stream Sessions Max |
Максимальное число параллельных сетевых сессий за время существования текущей сетевой сессии (значение включает текущую сессию) |
Целое 64-битное число, |
|
Статистические характеристики интервалов между созданием сетевых сессий в потоке сессий в микросекундах |
|||
|
75. |
Stream Session Intervals Min |
Минимальное значение интервала между сетевыми сессиями в потоке |
Целое 64-битное число, |
|
76. |
Stream Session Intervals Max |
Максимальное значение интервала между сетевыми сессиями в потоке |
Целое 64-битное число, |
|
77. |
Stream Session Intervals Mean |
Оценка математического ожидания значения интервала между сетевыми сессиями в потоке (среднее значение интервала между сетевыми сессиями в потоке) |
Вещественное число, |
|
78. |
Stream Session Intervals Std |
Несмещенная оценка среднеквадратичного отклонения значения интервала между сетевыми сессиями в потоке |
Вещественное число, |
|
Статистические характеристики длительностей сетевых сессий в потоке сессий в микросекундах |
|||
|
79. |
Stream Session Durations Min |
Минимальная длительность сетевой сессии в потоке |
Целое 64-битное число, |
|
80. |
Stream Session Durations Max |
Максимальная длительность сетевой сессии в потоке |
Целое 64-битное число, |
|
81. |
Stream Session Durations Mean |
Оценка математического ожидания длительностей сетевых сессии (средняя длительность сетевой сессии в потоке) |
Вещественное число, |
|
82. |
Stream Session Durations Std |
Несмещенная оценка среднеквадратичного отклонения длительностей сетевых сессии |
Вещественное число, |
|
83. |
Stream Prev Session Time/Duration |
Отношение времени в микросекундах между созданием текущей сетевой сессии и предыдущей сетевой сессией к длительности текущей сетевой сессии
|
Вещественное число, |
|
84. |
Stream Next Session Time/Duration |
Отношение времени в микросекундах между созданием следующей и текущей сетевой сессии к длительности текущей сетевой сессии |
Вещественное число, |
|
85. |
Stream Session Intervals Min/Duration |
Отношение минимального значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
86. |
Stream Session Intervals Max/Duration |
Отношение максимального значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
87. |
Stream Session Intervals Mean/Duration |
Отношение среднего значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
88. |
Stream Session Intervals Std/Duration |
Отношение среднеквадратичного отклонения значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
89. |
Stream Session Durations Min/Duration |
Отношение минимальной длительности сетевой сессии в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
90. |
Stream Session Durations Max/Duration |
Отношение максимальной длительности сетевой сессии в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
91. |
Stream Session Durations Mean/Duration |
Отношение среднего значения длительности сетевой сессии в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
92. |
Stream Session Durations Std/Duration |
Отношение среднеквадратичного отклонения длительности сетевых сессий в потоке к длительности текущей сетевой сессии |
Вещественное число, |
|
Статистические характеристики мгновенных значений скорости передачи данных (учитывается длина полного пакета со всеми заголовками), выраженной в байтах в сек, в направлении Forward (от клиента к серверу) |
|||
|
93. |
Fwd Bandwidth Min |
Минимальное значение мгновенной скорости |
Целое 64-битное число, |
|
94. |
Fwd Bandwidth Max |
Максимальное значение мгновенной скорости |
Целое 64-битное число, |
|
95. |
Fwd Bandwidth Mean |
Оценка математического ожидания значений мгновенной скорости |
Вещественное число, |
|
96. |
Fwd Bandwidth Std |
Несмещенная оценка среднеквадратичного отклонения значений мгновенной скорости |
Вещественное число, |
|
Статистические характеристики мгновенных значений скорости передачи данных (учитывается длина полного пакета со всеми заголовками), выраженной в байтах в сек, в направлении Backward (от сервера к клиенту) |
|||
|
97. |
Bwd Bandwidth Min |
Минимальное значение мгновенной скорости |
Целое 64-битное число, |
|
98. |
Bwd Bandwidth Max |
Максимальное значение мгновенной скорости |
Целое 64-битное число, |
|
99. |
Bwd Bandwidth Mean |
Оценка математического ожидания значений мгновенной скорости |
Вещественное число, |
|
100. |
Bwd Bandwidth Std |
Несмещенная оценка среднеквадратичного отклонения значений мгновенной скорости |
Вещественное число, |
|
101. |
Fwd Total Length div Duration |
Отношение суммарной длина полезных данных (payload) в байтах, переданных от клиента к серверу, к длительности сессии |
Вещественное число, |
|
102. |
Bwd Total Length div Duration |
Отношение суммарной длина полезных данных (payload) в байтах, переданных от сервера к клиенту, к длительности сессии |
Вещественное число, |
|
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Forward (от клиента к серверу) на этапе установления соединения TCP, первый пакет в направлении Forward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward |
|||
|
103. |
Fwd IAT Total HandShake |
– суммарное значение всех межпакетных интервалов в направлении Forward |
Целое 64-битное число, |
|
104. |
Fwd IAT Mean HandShake |
– оценка математического ожидания межпакетных интервалов в направлении Forward |
Вещественное число, |
|
105. |
Fwd IAT Std HandShake |
– несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Forward |
Вещественное число, |
|
106. |
Fwd IAT Max HandShake |
– максимальное значение межпакетного интервала в направлении Forward |
Целое 64-битное число, |
|
107. |
Fwd IAT Min HandShake |
– минимальное значение межпакетного интервала в направлении Forward |
Целое 64-битное число, |
|
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Backward (от сервера к клиенту) на этапе установления соединения TCP, первый пакет в направлении Backward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Backward |
|||
|
108. |
Bwd IAT Total HandShake |
– суммарное значение всех межпакетных интервалов в направлении Backward |
Целое 64-битное число, |
|
109. |
Bwd IAT Mean HandShake |
– оценка математического ожидания межпакетных интервалов в направлении Backward |
Вещественное число, |
|
110. |
Bwd IAT Std HandShake |
– несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Backward |
Вещественное число, |
|
111. |
Bwd IAT Max HandShake |
– максимальное значение межпакетного интервала в направлении Backward |
Целое 64-битное число, |
|
112. |
Bwd IAT Min HandShake |
– минимальное значение межпакетного интервала в направлении Backward |
Целое 64-битное число, |
|
Статистические характеристики межпакетных интервалов в сетевой сессии без учета направления передачи пакетов (от сервера к клиенту) на этапе установления соединения TCP, первый пакет в сетевой сессии считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета |
|||
|
113. |
Flow IAT Total HandShake |
Суммарное значение всех межпакетных интервалов |
Целое 64-битное число, |
|
114. |
Flow IAT Mean HandShake |
Оценка математического ожидания межпакетных интервалов |
Вещественное число, |
|
115. |
Flow IAT Std HandShake |
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов |
Вещественное число, |
|
116. |
Flow IAT Max HandShake |
Максимальное значение межпакетного интервала |
Целое 64-битное число, |
|
117. |
Flow IAT Min HandShake |
Минимальное значение межпакетного интервала |
Целое 64-битное число, |
|
118. |
Http Reqest |
Http запрос, который был отправлен на сервер |
Символьная строка |
Исходные данные исследования
Для проведения эксперимента был развернут стенд на базе одной из известных компаний РФ и проведен натурный эксперимент.
В состав стенда входят два сервера, на которые заведен один и тот же сетевой трафик компании. Данный трафик включает в себя как обмен между пользователями компании (порядка 200 пользователей, выполняющих различные задачи в рамках своих должностных функций), так и выход сотрудников в сеть Интернет.
При этом:
-
на первом сервере развернут сертифицированный NGFW, в состав которого входит система обнаружения вторжений уровня сети с актуальными решающими правилами (сигнатуры регулярно обновлялись, в том числе в процессе постановки эксперимента). Ядром данной системы обнаружения вторжений является модифицированная IDS Suricata (далее и будет применяться сокращение IDS Suricata);
-
на втором сервере развернута разработанная нами утилита session_analyzer, на вход которой поступал тот же самый сетевой трафик, что и на IDS Suricata.
Такая схема сбора и анализа сетевого трафика была выбрана по нескольким причинам:
-
функционирование NGFW и session_analyzer в общем случае является весьма затратной темой (повышенные требования к производительности серверов);
-
совмещение ML IDS c NGFW – это отдельная сложная и финансово затратная задача, требующая задействования команды разработчиков;
-
хотелось провести предварительные исследования «малой кровью» и ответить на вопросы, поставленные в публикации, а также выявить «подводные камни» перед внедрением ML IDS уровня сети в NGFW (в том числе, ответить на вопрос: стоит ли вообще внедрять ML IDS уровня сети в NGFW?).
Предварительное преобразование csv файла session_analyzer:
-
из всего множества рассчитываемых признаков извлекается только адресная информация и 10 значимых признаков: columns_x = [‘Average Packet Size’, ‘Flow Bytes/s’, ‘Max Packet Length’, ‘Fwd Packet Length Mean’, ‘Fwd IAT Min’, ‘Total Length of Fwd Packets’, ‘Fwd IAT Std’, ‘Flow IAT Mean’, ‘Fwd Packet Length Max’,’Fwd Header Length’];
-
добавляются 3 колонки:
Label – метка класса (может принимать 2 значения: Benign или Attack);
Origin – источник информации о метке класса (может принимать 2 значения: «session» или «suricata»);
Sid – идентификатор события (в данном случае sid события IDS Suricata или 0, если вектор признаков «чистый» трафик).
В дальнейшем, при обучении ML IDS всем «чистым» векторам будет присвоено численное значение 0 (негативное решение классификатора), атакам – численное значение 1 (позитивное решение классификатора). -
проводится сопоставление векторов признаков с зарегистрированными событиями безопасности IDS Suricata и размечается датасет.
Важно! Множество из 10 значимых признаков выбрано на основе исследования, результаты которого представлены в статье “Синтез модели машинного обучения для обнаружения компьютерных атак на основе набора данных CICIDS2017”.
Особенности процесса сопоставления векторов признаков с зарегистрированными событиями безопасности IDS Suricata
В общем случае утилиты IDS Suricata и session_analyzer могут быть расположены на разных, физически разнесенных, серверах (как в нашем случае) – это означает, что:
-
Один и тот же трафик поступает на вход двух утилит в разное время. Эксперименты показали, что разница может составлять несколько мили секунд для двух серверов стоящих в одной стойке рядом друг с другом.
-
В отдельных случаях может быть такое, что трафик, поступающий на вход утилит анализа, может различаться. Например, в случае, если администратор сети решит «перестраховаться» и на вход одной из утилит попадает трафик, который принимают в двух точках: до шлюза компании и после шлюза, а на вход другой утилиты поступает трафик только с одной точки наблюдения.
В таком случае, при разметке датасета (сопоставлении векторов признаков с зарегистрированными событиями безопасности IDS Suricata), необходимо предусмотреть, что для одного и того же потока данных может быть 2 сетевых соединения (до шлюза и после шлюза). У таких «одинаковых» сетевых соединений будет различаться адресная информации (вступают в силу механизмы трансляции ip адресов и перенаправления портов транспортного уровня). В нашем случае, оказалось, что на session_analyzer поступает трафик с двух точек наблюдения – до и после шлюза компании.
Пример случая, когда одному и тому же сетевому трафику соответствуют два сетевых соединения (до и после шлюза) Этим двум соединениям до и после шлюза соответствует событие IDS Suricata (лишние поля вырезаны):
2028762,”ET JA3 Hash – [Abuse.ch] Possible Trickbot”, “2025-06-27 13:49:45.207703”, “TCP”, “10.180.180.6”, 58557, “81.88.82.245”, 443 -
Время регистрации событий IDS Suricata (время зарегистрированной компьютерной атаки) и время соответствующего соединения (или же даже 2-х соединений) в session_analyzer различные.
Это связано с тем, что в session_analyzer (и аналогичных утилитах) время, указанное в векторе признаков, характеризующих сетевое соединение, измеряется по первому сетевому пакету в потоке данных. В отличии от этого, в IDS Suricata (или других системах обнаружения компьютерных атак уровня сети) время компьютерной атаки обычно соответствует времени пакета, на котором произошло срабатывание анализатора. Эксперименты показали, что для некоторых сетевых атак на практике разница времени между двумя утилитами может превышать 20 секунд (гипотетически для медленной атаки – это время может быть еще больше).
Cбор сетевого трафика и предварительная обработка данных
Сбор и предварительная обработка сетевого трафика выполнялись в несколько этапов.
На 1 этапе две недели с 2025-06-26 по 2025-07-10 параллельно функционировали IDS Suricata и session_analyzer.
Результатом этого этапа стали 2 файла:
-
лог с зарегистрированными компьютерными атаками IDS Suricata;
-
лог с векторами признаков всех сетевых соединений сформированный session_analyzer за указанный период времени (каждая строчка лога представляет собой вектор значений признаков соединения и содержит 119 колонок);
На 2 этапе из лога IDS Suricata были извлечены все ip адреса, которые фигурировали в зарегистрированных событиях и из лога session_analyzer были удалены все строки, которые содержали ip адреса не встречающиеся в логах IDS Suricata (по факту в нашем случае – это примерно 25% всех соединений).
В итоге осталось 55548971 сетевых соединений (векторов, характеризующих каждое соединение).
На 3 этапе из лога session_analyzer убрали все лишние столбцы (признаки). Для этого в логе session_analyzer в каждом векторе с описанием сетевых соединений отставили только адресную информацию (время начала соединения и 5-tuple: ip адреса + порты транспортного уровня + номер протокола транспортного уровня) и 10 информативных признаков для синтеза ML модели;
На 4 этапе провели сопоставление двух логов: IDS Suricata и session_analyzer для того, чтобы каждому вектору, характеризующему сетевые соединения указать метку класса: Benign («чистый» трафик) и Attack (компьютерная атака). При этом, была разработана утилита сопоставления, учитывающая все особенности приема сетевого трафика, которые были описаны выше.
Таким образом, после предварительной обработки данных и сопоставления 2-х логов датасет содержит 55548971 строк, при этом векторов чистого трафика (Benign) = 55491506, векторов компьютерных атак (Attack) = 57465.
Множество атак содержит 111 различных sid. В таблице ниже представлены атаки и их количество (атаки, которые за весь период наблюдения встречались 1 раз из таблицы убраны).
|
№ |
sid |
Описание |
Коли-чество |
|
1. |
1006217 |
HolaVPN detected |
11988 |
|
2. |
1006215 |
HolaVPN detected |
11550 |
|
3. |
1006221 |
HolaVPN detected |
7908 |
|
4. |
2028762 |
ET JA3 Hash – [Abuse.ch] Possible Trickbot |
7102 |
|
5. |
1003187 |
Anonymizer detected |
7081 |
|
6. |
2060504 |
ET INFO Observed Discord Service Domain (gateway .discord .gg) in TLS SNI |
4775 |
|
7. |
2050884 |
ET INFO Observed vk .com API Domain (api .vk .com in TLS SNI) |
1373 |
|
8. |
2053282 |
ET TA_ABUSED_SERVICES Commonly Actor Abused Online Service Domain (syncthing .net) |
1296 |
|
9. |
2014819 |
ET INFO Packed Executable Download |
986 |
|
10. |
2033967 |
ET HUNTING Observed Telegram API Domain (api .telegram .org in TLS SNI) |
728 |
|
11. |
41560233 |
HackTool.Nmap.TCP.ServerRequest |
547 |
|
12. |
2047703 |
ET INFO External IP Address Lookup Domain (ipify .org) in TLS SNI |
341 |
|
13. |
65158634 |
HackTool.Nmap.TCP.ServerRequest |
198 |
|
14. |
2035593 |
ET INFO DropBox User Content Domain (dl .dropboxusercontent .com in TLS SNI) |
197 |
|
15. |
2041933 |
ET INFO Observed Telegram Domain (t .me in TLS SNI) |
187 |
|
16. |
2022082 |
ET INFO External IP Lookup ip-api.com |
185 |
|
17. |
2402000 |
ET DROP Dshield Block Listed Source group 1 |
91 |
|
18. |
28000001 |
(o)DoH Query for dns.google |
85 |
|
19. |
2035303 |
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI) |
69 |
|
20. |
2052581 |
ET INFO Observed Alibaba Cloud CDN Domain (aliyuncs .com in TLS SNI) |
62 |
|
21. |
28000974 |
(o)DoH Query for httpdns-push.heytapmobile.com |
61 |
|
22. |
2060505 |
ET INFO Observed Discord Service Domain (discord .com) in TLS SNI |
58 |
|
23. |
2029634 |
ET HUNTING Suspected Malicious Telegram Communication (POST) |
39 |
|
24. |
2062715 |
ET INFO Observed UA-CPU Header |
36 |
|
25. |
1006213 |
MultiProxy Firefox Add-ons |
36 |
|
26. |
2026521 |
ET USER_AGENTS Suspicious User-Agent (Windows 10) |
32 |
|
27. |
2400009 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 10 |
29 |
|
28. |
1006319 |
PORT SCAN (NMAP -sA) |
28 |
|
29. |
1006585 |
Outbound connection to a possible C&C server |
27 |
|
30. |
1006554 |
IP blocklist |
25 |
|
31. |
1006556 |
IP blocklist |
24 |
|
32. |
1006555 |
IP blocklist |
22 |
|
33. |
2057746 |
ET INFO Observed Cloudflare Page Developer Domain (pages .dev in TLS SNI) |
22 |
|
34. |
1006557 |
IP blocklist |
21 |
|
35. |
58565362 |
Trojan-PSW.Agent.HTTP.C&C |
14 |
|
36. |
2029322 |
ET HUNTING Telegram API Certificate Observed |
14 |
|
37. |
2400059 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 60 |
12 |
|
38. |
2063118 |
ET INFO Abused Hosting Domain (azurewebsites .net) in TLS SNI |
10 |
|
39. |
2027695 |
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI) |
9 |
|
40. |
1800920 |
IP blocklist |
9 |
|
41. |
1802600 |
IP blocklist |
9 |
|
42. |
28000040 |
(o)DoH Query for mozilla.cloudflare-dns.com |
8 |
|
43. |
28000196 |
(o)DoH Query for dns.google.com |
8 |
|
44. |
2050633 |
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI |
8 |
|
45. |
1006258 |
PlanetVPN |
7 |
|
46. |
1801497 |
IP blocklist |
6 |
|
47. |
2058779 |
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org) |
6 |
|
48. |
2027762 |
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent |
6 |
|
49. |
2013927 |
ET INFO HTTP traffic on port 443 (HEAD) |
5 |
|
50. |
2046071 |
ET INFO Observed Google DNS over HTTPS Domain (dns .google .com in TLS SNI) |
5 |
|
51. |
2017398 |
ET INFO IP Check Domain (icanhazip. com in HTTP Host) |
5 |
|
52. |
2049202 |
ET INFO Observed File Hosting Service Domain (files .pythonhosted .org in TLS SNI) |
5 |
|
53. |
2043310 |
ET HUNTING DDoS-Guard Hosted Content |
5 |
|
54. |
28000002 |
(o)DoH Query for cloudflare-dns.com |
4 |
|
55. |
2050130 |
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI) |
4 |
|
56. |
2057036 |
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com) |
4 |
|
57. |
2021701 |
ET GAMES MINECRAFT Server response inbound |
3 |
|
58. |
1006260 |
VeePN |
3 |
|
59. |
2049251 |
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI) |
3 |
|
60. |
2063071 |
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI |
3 |
|
61. |
1803186 |
IP blocklist |
3 |
|
62. |
2047866 |
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI) |
3 |
|
63. |
36674245 |
HackTool.Nmap.TLS.C&C |
3 |
|
64. |
2023753 |
ET SCAN MS Terminal Server Traffic on Non-standard Port |
3 |
|
65. |
1801678 |
IP blocklist |
3 |
|
66. |
1802605 |
IP blocklist |
3 |
|
67. |
2400035 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 36 |
3 |
|
68. |
2039595 |
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI |
2 |
|
69. |
1800324 |
IP blocklist |
2 |
|
70. |
1801470 |
IP blocklist |
2 |
|
71. |
1802765 |
IP blocklist |
2 |
|
72. |
2054227 |
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com) |
2 |
|
73. |
2047894 |
ET INFO Observed Online Collab Tool Domain (figma .com in TLS SNI) |
2 |
|
74. |
1802434 |
IP blocklist |
2 |
|
75. |
2050282 |
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI |
2 |
|
76. |
2400004 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 5 |
2 |
|
77. |
1800572 |
IP blocklist |
2 |
|
78. |
1800496 |
IP blocklist |
2 |
|
79. |
1802677 |
IP blocklist |
2 |
|
80. |
2400060 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 61 |
2 |
|
81. |
1800742 |
IP blocklist |
2 |
|
82. |
1801285 |
IP blocklist |
2 |
|
83. |
28000957 |
(o)DoH Query for httpdns-push.heytapmobile.com |
2 |
55 млн. строк – это достаточно много (с одной стороны по продолжительности сбора данных о сетевом трафике, с другой стороны по требуемому объему оперативной памяти при дальнейшем обучении моделей) и для упрощения анализа при проведении исследования все множество векторов разбиваем на файлы по 10 млн строк.
Все 55 млн. строк сортируем по меткам времени появления вектора признаков, характеризующих сетевые соединения – это позволит ответить на вопрос: сколько времени требуется наблюдать за трафиком компании для обучения и получения качественной ML модели.
Распределение всех векторов по классам и по времени появления представлены ниже в таблице.
|
Название файла |
Количество векторов признаков по метке класса |
Период наблюдения |
|
dataset_1.csv |
Benign – 9996297 |
2025-06-26 23:47:43 (четверг) |
|
dataset_2.csv |
Benign – 9979487 |
2025-06-29 17:31:35 (воскресенье) |
|
dataset_3.csv |
Benign – 9983212 |
2025-07-02 10:55:35 (среда) |
|
dataset_4.csv |
Benign – 9999896 |
2025-07-02 22:23:49 (пятница) |
|
dataset_5.csv |
Benign – 9999893 |
2025-07-06 02:05:00 (воскресенье) |
|
dataset_6.csv |
Benign – 5532721 |
2025-07-07 08:10:49 (понедельник) |
Ура! Датасет готов. Можно попробовать синтезировать ML модель.
Построение ML IDS
Для построения классификатора сетевого трафика была использована библиотека catboost. Количество признаков – 10, все признаки – числовые. Эксперименты проводились на ПЭВМ: Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz, 32 Gb DDR3.
Настройки классификатора при обучении (данные значения настроек использовались во всех экспериментах: значения выбраны эвристически исходя из различных рекомендаций исследователей и разработчиков):
iterations = 1000, depth = 8, CatBoostClassifier(iterations=iterations, verbose=250, depth=depth,task_type="CPU", eval_metric='F1').
Важно помнить! Безусловно, надо подбирать рациональные значения всех гиперпараметров ML модели, но в данном исследовании этого не делалось, а упор сделан на все «подводные» камни процесса построения ML IDS в целом!
Эксперимент 1.
Обучили модель на файле dataset_1.csv (2,5 дня наблюдения за сетью, в том числе в рабочие дни: 18 % всех чистых векторов, 6,5% всех атак).
Эксперимент 1. Оценка качества классификатора сетевого трафика
|
Набор данных |
Матрица ошибок |
Показатели качества классификации |
|
dataset_1.csv |
clear as clear (TN-true negative): 9996239 |
accuracy = 0.9998 |
|
dataset_2.csv |
clear as clear (TN-true negative): 9974887 |
accuracy = 0.9978 |
|
dataset_3.csv |
clear as clear (TN-true negative): 9980409 |
accuracy = 0.9984 |
|
dataset_4.csv |
clear as clear (TN-true negative): 9999888 |
accuracy = 0.9999 |
|
dataset_5.csv |
clear as clear (TN-true negative): 9999889 |
accuracy = 0.9999 |
|
dataset_6.csv |
clear as clear (TN-true negative): 5530706 |
accuracy = 0.9981 |
Выводы по эксперименту: пока что, все плохо!
-
Обучение произведено на файле dataset_1.csv и качество классификации на нем же плохое: слишком много «пропуска цели», а следовательно и значение recall тоже низкое. Т.е. выборки плохо разделимы с использованием выбранного математического аппарата, существующего признакового пространства и/или разметки датасета.
-
На остальных файлах (участках времени) всё плохо не только с попуском цели, но и достаточно высокий уровень ложных срабатываний, что обычно говорит о том, что в обучающей выборке недостаточно «чистых» векторов, т.е. обучающая выборка не репрезентативна и надо добавить векторов со следующего временного участка. Однако в нашем случае, в явном виде такой вывод сделать нельзя, т.к. на dataset_4.csv и dataset_5.csv (выходные дни и совсем небольшое количество атак) качество классификации «чистого» трафика неплохое.
Что же делать дальше?
Высокий уровень пропуска цели и в целом невозможность разделения векторов на обучающей выборке, в совокупности с применением catboost (одна из лучших в мире реализаций RandomForest) говорит о том, что скорее всего разметка датасета неправильная и есть вектора имеющие одинаковые (или очень близкие) значения признаков, но разные метки классов. Все такие вектора для простоты обозначения будем по тексту публикации называть «плохими» векторами.
Тогда на следующем этапе исследования:
-
найдем все вектора, расстояние между которыми равны 0, но они относятся к разным классам (это однозначно неправильная разметка датасета);
-
найдем все вектора, расстояние между которыми имеют «очень маленькое» значение (данное значение было подобрано экспериментально);
-
проведем анализ: какие именно атаки (sid правил IDS Suricata) попали во множество «плохих»?
-
заменим метку класса найденных векторов на Benign.
Эксперимент 2.
Для поиска векторов имеющих одинаковые значения признаков, но разные метки классов, воспользуемся расчетом Евклидова расстояния между векторами (не забываем при этом нормализовать значения каждого признака). Поиск осуществляем только на файле dataset_1.csv (он у нас обучающий).
В результате поиска векторов с одинаковыми (или очень близкими) значениями признаков, но разными метками классов было найдено 24 sid (объединим их в логические группы и представим текстовое описание семантики решающего правила).
|
№п/п |
Sid |
Короткое описание (описание взято из решающего правила IDS Suricata) и краткое описание семантики решающего правила |
|
1 |
1003187 |
“Anonymizer detected”, |
|
2 |
1006215, 1006217, 1006221 |
“HolaVPN detected”, |
|
3 |
1006554, 1006555, 1006556, 1800330, 1800496, 1800742, 1801285, 1801673, 1802363, 1802600, 1802677 |
“IP blocklist”, |
|
4 |
41560233, 65158634 |
“HackTool.Nmap.TCP.ServerRequest”, правила находят сетевые пакеты с заданными флагами протокола TCP (таких признаков в нашем датасете нет!) |
|
5 |
2035593 |
“ET INFO DropBox User Content Domain (dl.dropboxusercontent.com in TLS SNI)”, |
|
6 |
2047703 |
“ET INFO External IP Address Lookup Domain (ipify.org) in TLS SNI”, |
|
7 |
2400009, 2400035, 2400059, 2400060 |
“ET DROP Spamhaus DROP Listed Traffic Inbound group 10” |
|
8 |
2402000 |
“ET DROP Dshield Block Listed Source group 1”, |
Для практически всех вышеперечисленных компьютерных атак имелись полностью совпадающие вектора из множества «чистых» векторов (т.е. расстояние между ними было равно 0).
Исключения составили события с sid: 1006217, 2035593 и 2047703. Для этих событий минимальное расстояние между векторами было < 0.00005. Что это означает на практике хорошо видно на рисунке ниже (dist = 0.000001).
Т.е. небольшая разница была в значениях признаков, которые зависят от времени (задержек в сети, используемых сетевых технологиях и т.п.).
Дополнительным интересным результатом явилось еще и то, что некоторые атаки в принципе имеют практически 0 значения всех признаков (такое возможно при условии, что NGFW заблокировало соединение по первому пакету). Это означает, что для этих атак признаковое пространство необходимо изменять.
Так, например, атаки “HackTool.Nmap.TCP.ServerRequest” и “ET DROP Dshield Block Listed Source group 1” в заданном признаковом пространстве вообще не различимы (см. рисунок ниже). Имеются и другие примеры наблюдаемого явления.
Ниже представлены результаты модификации набора данных (путем изменения метки класса на Benign для всех векторов, имеющих «плохие» sid), повторного обучения ML модели и оценки качества классификации. Настройки процедуры обучения ML модели, выбранные значения гиперпараметров модели и используемый набор данных остаются как и в эксперименте 1.
После модификации набора данных векторов с меткой класса Benign – 55531544, векторов с меткой Attack – 17427 (было 57465).
Обучим заново ML IDS и оценим качество полученного классификатора.
Эксперимент 2. Оценка качества классификатора сетевого трафика
|
Набор данных |
Матрица ошибок |
Показатели качества классификации |
|
dataset_1.csv |
clear as clear (TN-true negative): 9998394 |
accuracy = 0.9999 |
|
dataset_2.csv |
clear as clear (TN-true negative): 9996661 |
accuracy = 0.9999 |
|
dataset_3.csv |
clear as clear (TN-true negative): 9995458 |
accuracy = 0.9999 |
|
dataset_4.csv |
clear as clear (TN-true negative): 9999937 |
accuracy = 0.9999 |
|
dataset_5.csv |
clear as clear (TN-true negative): 9999923 |
accuracy = 0.9999 |
|
dataset_6.csv |
clear as clear (TN-true negative): 5540606 |
accuracy = 0.9996 |
Время обучения модели 19 мин 36 сек, время классификации 55 млн. векторов – 7 мин 21,4 сек.
Выводы по эксперименту
-
Не смотря на улучшение качества классификации в целом, уровень «пропуска» цели и ложных срабатываний остается высоким.
-
При этом, достаточно большое значение «FN-false negative» (и как следствие значение recall) на файлах dataset_2/3/4/5/6.csv показывает, что:
-
необходимо исследовать: появились ли новые зарегистрированные атаки на временных интервалах, следующих за обучающим интервалом (т.е. на dataset_2/3/4/5/6.csv)?;
-
объем обучающей выборки с атаками явно недостаточный и требуется переобучить модель с новыми данными.
Исследование состава зарегистрированных событий безопасности IDS Suricata на разных интервалах времени
Для того, чтобы понять какие события правильно классифицируются, а какие нет, была построена таблица, в ней указано, какие атаки встречались на каждом временном участке и сколько из этих атак было НЕ обнаружено (т.е. на примере самой первой строки sid = 2028762, в файле на котором обучались (dataset_1.csv) было таких событий 688 и все обнаружены, на dataset_2 было 1424 атаки из ни не обнаружено 5 и т.д.).
Обозначения. В таблицах ошибок ниже жирным шрифтом выделено плохое качество классификации векторов с признаками.
Для наглядности можно применить раскраску таблицы цветами (к сожалению, сайт не поддерживает раскраску таблиц), становится очень хорошо видно, что отдельные события безопасности хорошо распознаются, другие не в какую не хотят правильно классифицироваться, какие события были в процессе обучения представлены, а какие – нет:
– зеленый цвет – качество классификации приемлемое;
– красный цвет – качество плохое (надо обратить внимание на это решающее правило);
– желтый цвет (только в колонке dataset_1, т.е. на обучающем наборе данных) – sid не встречался в процессе обучения (решающее правило не срабатывало).
Эксперимент 2. Таблица ошибок “пропуск” цели
|
№ п/п |
sid |
Описание |
dataset_1 |
dataset_2 |
dataset_3 |
dataset_4 |
dataset_5 |
dataset_6 |
|
1 |
2028762 |
ET JA3 Hash – [Abuse.ch] Possible Trickbot |
688|0 |
1424|5 |
1954|10 |
0|0 |
0|0 |
3036|11 |
|
2 |
2060504 |
ET INFO Observed Discord Service Domain (gateway .discord .gg) in TLS SNI |
135|0 |
534|10 |
853|7 |
0|0 |
0|0 |
3253|669 |
|
3 |
2050884 |
ET INFO Observed vk .com API Domain (api .vk .com in TLS SNI) |
231|3 |
303|261 |
331|278 |
0|0 |
0|0 |
508|361 |
|
4 |
2053282 |
ET TA_ABUSED_SERVICES Commonly Actor Abused Online Service Domain (syncthing .net) |
197|0 |
222|14 |
459|36 |
0|0 |
0|0 |
418|29 |
|
5 |
2014819 |
ET INFO Packed Executable Download |
145|1 |
224|44 |
261|60 |
31|2 |
47|3 |
278|59 |
|
6 |
2033967 |
ET HUNTING Observed Telegram API Domain (api .telegram .org in TLS SNI) |
92|0 |
172|26 |
220|39 |
24|8 |
12|2 |
208|37 |
|
7 |
2041933 |
ET INFO Observed Telegram Domain (t .me in TLS SNI) |
25|2 |
55|46 |
53|48 |
0|0 |
0|0 |
54|40 |
|
8 |
2022082 |
ET INFO External IP Lookup ip-api.com |
0|0 |
46|46 |
66|66 |
0|0 |
0|0 |
73|73 |
|
9 |
28000001 |
(o)DoH Query for dns.google |
0|0 |
2|2 |
82|82 |
0|0 |
0|0 |
1|1 |
|
10 |
2035303 |
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI) |
19|0 |
18|0 |
27|1 |
0|0 |
0|0 |
5|0 |
|
11 |
2052581 |
ET INFO Observed Alibaba Cloud CDN Domain (aliyuncs .com in TLS SNI) |
0|0 |
3|3 |
0|0 |
0|0 |
0|0 |
59|59 |
|
12 |
28000974 |
(o)DoH Query for httpdns-push.heytapmobile.com |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
61|61 |
|
13 |
2060505 |
ET INFO Observed Discord Service Domain (discord .com) in TLS SNI |
0|0 |
13|13 |
21|21 |
0|0 |
0|0 |
24|24 |
|
14 |
2029634 |
ET HUNTING Suspected Malicious Telegram Communication (POST) |
5|0 |
13|13 |
6|6 |
0|0 |
0|0 |
15|13 |
|
15 |
1006213 |
MultiProxy Firefox Add-ons |
33|0 |
3|2 |
0|0 |
0|0 |
0|0 |
0|0 |
|
16 |
2062715 |
ET INFO Observed UA-CPU Header |
2|1 |
7|7 |
12|12 |
0|0 |
7|7 |
8|8 |
|
17 |
2026521 |
ET USER_AGENTS Suspicious User-Agent (Windows 10) |
0|0 |
26|26 |
6|6 |
0|0 |
0|0 |
0|0 |
|
18 |
1006319 |
PORT SCAN (NMAP -sA) |
0|0 |
8|8 |
4|4 |
0|0 |
0|0 |
16|16 |
|
19 |
1006585 |
Outbound connection to a possible C&C server |
0|0 |
4|4 |
1|1 |
0|0 |
0|0 |
22|22 |
|
20 |
2057746 |
ET INFO Observed Cloudflare Page Developer Domain (pages .dev in TLS SNI) |
3|3 |
3|3 |
7|7 |
0|0 |
0|0 |
9|9 |
|
21 |
1006557 |
IP blocklist |
2|2 |
4|4 |
5|5 |
1|1 |
2|2 |
7|7 |
|
22 |
2029322 |
ET HUNTING Telegram API Certificate Observed |
3|0 |
3|1 |
2|1 |
1|1 |
2|1 |
3|1 |
|
23 |
58565362 |
Trojan-PSW.Agent.HTTP.C&C |
0|0 |
8|8 |
5|5 |
0|0 |
0|0 |
1|1 |
|
24 |
2063118 |
ET INFO Abused Hosting Domain (azurewebsites .net) in TLS SNI |
1|0 |
1|1 |
2|2 |
0|0 |
0|0 |
6|6 |
|
25 |
2027695 |
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI) |
0|0 |
1|0 |
4|0 |
0|0 |
0|0 |
4|0 |
|
26 |
1800920 |
IP blocklist |
0|0 |
0|0 |
9|9 |
0|0 |
0|0 |
0|0 |
|
27 |
2050633 |
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI |
8|0 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
28 |
28000196 |
(o)DoH Query for dns.google.com |
1|1 |
3|3 |
4|4 |
0|0 |
0|0 |
0|0 |
|
29 |
28000040 |
(o)DoH Query for mozilla.cloudflare-dns.com |
1|0 |
4|0 |
1|0 |
0|0 |
1|0 |
1|0 |
|
30 |
1006258 |
PlanetVPN |
0|0 |
3|1 |
1|1 |
0|0 |
0|0 |
3|1 |
|
31 |
1801497 |
IP blocklist |
0|0 |
3|3 |
2|2 |
0|0 |
1|1 |
0|0 |
|
32 |
2058779 |
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org) |
0|0 |
2|2 |
4|4 |
0|0 |
0|0 |
0|0 |
|
33 |
2027762 |
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent |
0|0 |
0|0 |
2|2 |
0|0 |
0|0 |
4|4 |
|
34 |
2013927 |
ET INFO HTTP traffic on port 443 (HEAD) |
0|0 |
2|2 |
2|2 |
0|0 |
0|0 |
1|1 |
|
35 |
2046071 |
ET INFO Observed Google DNS over HTTPS Domain (dns .google .com in TLS SNI) |
0|0 |
2|2 |
1|1 |
0|0 |
0|0 |
2|2 |
|
36 |
2017398 |
ET INFO IP Check Domain (icanhazip. com in HTTP Host) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
2|2 |
|
37 |
2049202 |
ET INFO Observed File Hosting Service Domain (files .pythonhosted .org in TLS SNI) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
2|2 |
|
38 |
2043310 |
ET HUNTING DDoS-Guard Hosted Content |
0|0 |
0|0 |
4|4 |
0|0 |
0|0 |
1|1 |
|
39 |
28000002 |
(o)DoH Query for cloudflare-dns.com |
0|0 |
2|0 |
1|0 |
0|0 |
0|0 |
1|0 |
|
40 |
2050130 |
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI) |
0|0 |
2|2 |
2|2 |
0|0 |
0|0 |
0|0 |
|
41 |
2057036 |
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com) |
0|0 |
4|4 |
0|0 |
0|0 |
0|0 |
0|0 |
|
42 |
1801678 |
IP blocklist |
1|1 |
1|1 |
0|0 |
0|0 |
0|0 |
1|1 |
|
43 |
1802605 |
IP blocklist |
1|1 |
0|0 |
1|1 |
1|1 |
0|0 |
0|0 |
|
44 |
2021701 |
ET GAMES MINECRAFT Server response inbound |
0|0 |
3|3 |
0|0 |
0|0 |
0|0 |
0|0 |
|
45 |
1006260 |
VeePN |
0|0 |
3|3 |
0|0 |
0|0 |
0|0 |
0|0 |
|
46 |
2049251 |
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI) |
0|0 |
2|2 |
1|1 |
0|0 |
0|0 |
0|0 |
|
47 |
2063071 |
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
2|2 |
|
48 |
1803186 |
IP blocklist |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
2|2 |
|
49 |
2047866 |
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
0|0 |
|
50 |
36674245 |
HackTool.Nmap.TLS.C&C |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
51 |
2023753 |
ET SCAN MS Terminal Server Traffic on Non-standard Port |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
52 |
28000957 |
(o)DoH Query for httpdns-push.heytapmobile.com |
2|2 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
53 |
1800572 |
IP blocklist |
1|1 |
0|0 |
0|0 |
0|0 |
1|1 |
0|0 |
|
54 |
2039595 |
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI |
0|0 |
2|2 |
0|0 |
0|0 |
0|0 |
0|0 |
|
55 |
1800324 |
IP blocklist |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
1|1 |
|
56 |
1801470 |
IP blocklist |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
1|1 |
|
57 |
1802765 |
IP blocklist |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
1|1 |
|
58 |
2054227 |
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com) |
0|0 |
0|0 |
2|2 |
0|0 |
0|0 |
0|0 |
|
59 |
1802434 |
IP blocklist |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
2|2 |
|
60 |
2050282 |
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
2|2 |
|
61 |
2400004 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 5 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
2|2 |
Выводы по исследованию состава зарегистрированных событий безопасности IDS Suricata на разных интервалах времени:
-
не все атаки хорошо распознаются на обучающем наборе данных, и необходимо провести анализ каким образом срабатывают такие правила (дальнейший анализ показал, что большинство из красных областей – это срабатывания решающих правил, основанных на адресной информации);
-
ряд атак на обучающем наборе данных классифицируются правильно с хорошим качеством, а на остальных участках времени – плохо. Для того, чтобы понять почему так бывает можно рассмотреть правило строка 5: sid = 2014819; краткое описание: «ET INFO Packed Executable Download», если посмотреть на него, то видно, что критерий принятия решения – это все файлы формата PE, причем откомпилирован не в Visual Studio и то с ограничениями. Очевидно, что ложных срабатываний в таком случае будет огромное количество, что и видно на практике;
-
плохая обобщающая способность. Библиотека catboost – это реализация RandomForest и это сказывается в случае, если ряд признаков (как в нашем случае) в датасете связаны с временем. На практике это означает, что ряд атак, в нашем случае – почти все, которые отсутствовали на обучающем наборе данных либо плохо (плохая обобщающая способность), либо вообще не распознаются и требуется переобучение модели, чтобы обучающая выборка была «репрезентативной» (строки 8, 9, 11, 13, 14 и многие другие).
Что же делать?
На следующем шаге исследования обратим внимание на правила из “красной” зоны и заново обучим модель на первом и втором временном интервале. Таким образом, с точки зрения практики, первого временного интервала для обучения не достаточно (выборка не репрезентативна, если посмотреть выше на таблицу, то первый временной интервал – это всего лишь один рабочий день – пятница и потом наступают выходные), увеличим временной интервал для сбора сетевого трафика.
Эксперимент 3.
Предварительная обработка данных: убрать все адресные решающие правила (т.е. правила, критерием срабатывания которых является обращение по конкретному ip адресу или диапазону адресов, или обращение к TLS серверам с конкретным SNI (или SNI префиксом).
Перечислим sid «плохих» для построения ML модели правил:
2060504,2050884,28000001,2041933,28000974,2052581,1006585,2060505,2057746,2053282,2033967,2063118,2046071,2049202,1006554,1006556,1006555,1006557,1800920,1802600,1801497,1803186,1801678,1802605,1800324,1801470,1802765,1802434,1800572,1800496,1802677,1800742,1801285,1801368,1802634,1801601,1800766,1801379,1802764,1800722,1802174,1802654,1800213,1803394,1803583,1801944,1801673,1802363,1800330,1006258,1006260,1006557,1800324,1800766,1801368,1801379,1801470,1801497,1801601,1801678,1802634,1802765,2029634,2033967,2050884,2062715 – это правила с адресной информацией.
После модификации набора данных векторов с меткой класса Benign – 55540391, векторов с меткой Attack – 8580 (первоначально было 57465).
При обучении объединим два временных диапазона dataset_1.csv и dataset_2.csv, т.е. обучение осуществлялось в течение 6 дней (включая трафик выходных дней).
Эксперимент 3. Оценка качества классификатора сетевого трафика.
|
Набор данных |
Матрица ошибок |
Показатели качества классификации |
|
dataset_1.csv |
clear as clear (TN-true negative): 9999094 |
accuracy = 0.9999 |
|
dataset_2.csv |
clear as clear (TN-true negative): 9998210 |
accuracy = 0.9999 |
|
dataset_3.csv |
clear as clear (TN-true negative): 9997626 |
accuracy = 0.9999 |
|
dataset_4.csv |
clear as clear (TN-true negative): 9999966 |
accuracy = 0.9999 |
|
dataset_5.csv |
clear as clear (TN-true negative): 9999949 |
accuracy = 0.9999 |
|
dataset_6.csv |
clear as clear (TN-true negative): 5545503 |
accuracy = 0.9999 |
Время обучения модели 39 мин 49 сек, время классификации 55 млн. векторов – 8 мин 41,6 сек.
Эксперимент 3. Таблица ошибок “пропуска” цели
|
№ п/п |
sid |
Описание |
dataset_1 |
dataset_2 |
dataset_3 |
dataset_4 |
dataset_5 |
dataset_6 |
|
1 |
2028762 |
ET JA3 Hash – [Abuse.ch] Possible Trickbot |
688|0 |
1424|0 |
1954|9 |
0|0 |
0|0 |
3036|6 |
|
2 |
2014819 |
ET INFO Packed Executable Download |
145|0 |
224|0 |
261|42 |
31|0 |
47|1 |
278|37 |
|
3 |
2022082 |
ET INFO External IP Lookup ip-api.com |
0|0 |
46|0 |
66|5 |
0|0 |
0|0 |
73|0 |
|
4 |
2035303 |
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI) |
19|0 |
18|0 |
27|2 |
0|0 |
0|0 |
5|0 |
|
5 |
1006213 |
MultiProxy Firefox Add-ons |
33|4 |
3|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
6 |
2026521 |
ET USER_AGENTS Suspicious User-Agent (Windows 10) |
0|0 |
26|26 |
6|6 |
0|0 |
0|0 |
0|0 |
|
7 |
1006319 |
PORT SCAN (NMAP -sA) |
0|0 |
8|0 |
4|3 |
0|0 |
0|0 |
16|16 |
|
8 |
2029322 |
ET HUNTING Telegram API Certificate Observed |
3|0 |
3|1 |
2|1 |
1|1 |
2|2 |
3|3 |
|
9 |
58565362 |
Trojan-PSW.Agent.HTTP.C&C |
0|0 |
8|0 |
5|0 |
0|0 |
0|0 |
1|0 |
|
10 |
2027695 |
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI) |
0|0 |
1|1 |
4|4 |
0|0 |
0|0 |
4|4 |
|
11 |
2050633 |
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI |
8|5 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
12 |
28000196 |
(o)DoH Query for dns.google.com |
1|1 |
3|3 |
4|4 |
0|0 |
0|0 |
0|0 |
|
13 |
28000040 |
(o)DoH Query for mozilla.cloudflare-dns.com |
1|1 |
4|4 |
1|1 |
0|0 |
1|1 |
1|1 |
|
14 |
2058779 |
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org) |
0|0 |
2|1 |
4|4 |
0|0 |
0|0 |
0|0 |
|
15 |
2027762 |
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent |
0|0 |
0|0 |
2|2 |
0|0 |
0|0 |
4|4 |
|
16 |
2017398 |
ET INFO IP Check Domain (icanhazip. com in HTTP Host) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
2|2 |
|
17 |
2043310 |
ET HUNTING DDoS-Guard Hosted Content |
0|0 |
0|0 |
4|4 |
0|0 |
0|0 |
1|1 |
|
18 |
28000002 |
(o)DoH Query for cloudflare-dns.com |
0|0 |
2|2 |
1|1 |
0|0 |
0|0 |
1|1 |
|
19 |
2050130 |
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI) |
0|0 |
2|2 |
2|2 |
0|0 |
0|0 |
0|0 |
|
20 |
2057036 |
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com) |
0|0 |
4|4 |
0|0 |
0|0 |
0|0 |
0|0 |
|
21 |
2021701 |
ET GAMES MINECRAFT Server response inbound |
0|0 |
3|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
22 |
2049251 |
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI) |
0|0 |
2|1 |
1|1 |
0|0 |
0|0 |
0|0 |
|
23 |
2063071 |
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
2|2 |
|
24 |
2047866 |
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
0|0 |
|
25 |
36674245 |
HackTool.Nmap.TLS.C&C |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
26 |
2023753 |
ET SCAN MS Terminal Server Traffic on Non-standard Port |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
27 |
28000957 |
(o)DoH Query for httpdns-push.heytapmobile.com |
2|2 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
28 |
2039595 |
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI |
0|0 |
2|2 |
0|0 |
0|0 |
0|0 |
0|0 |
|
29 |
2054227 |
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com) |
0|0 |
0|0 |
2|2 |
0|0 |
0|0 |
0|0 |
|
30 |
2047894 |
ET INFO Observed Online Collab Tool Domain (figma .com in TLS SNI) |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
1|1 |
|
31 |
2050282 |
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
2|2 |
|
32 |
2400004 |
ET DROP Spamhaus DROP Listed Traffic Inbound group 5 |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
2|2 |
|
33 |
2054246 |
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
34 |
2038967 |
ET INFO SSH-2.0-Go version string Observed in Network Traffic |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
35 |
1006206 |
Browsec-VPN |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
36 |
2060251 |
ET INFO Go-http-client User-Agent Observed Outbound |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
37 |
2014788 |
ET DYN_DNS DYNAMIC_DNS HTTP Request to a 3322.net Domain *.3322.net |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
38 |
2017499 |
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1 |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
39 |
1006914 |
Possible trojan activity, base64-encoded content |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
40 |
1003302 |
Anonymizer detected |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
41 |
2018383 |
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client) |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
42 |
2012252 |
ET SHELLCODE Common 0a0a0a0a Heap Spray String |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
|
43 |
2048493 |
ET INFO ISO File Downloaded |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
|
44 |
2024833 |
ET INFO Observed IP Lookup Domain (l2 .io in TLS SNI) |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
Выводы по эксперименту:
качество модели стало лучше, но с датасетом надо еще работать. «Глазами» изучить с первого раза все 111 решающих правил IDS Suricata у автора не получилось и скорее всего адресные правила удалены были не все (т.к. «пропуск» цели достаточно большой на файлах dataset_3.csv и dataset_6.csv, а на файле dataset_2.csv много ошибок обучения).
Эксперимент 4.
Предварительная обработка данных такая же как и в предыдущем эксперименте – убрать все адресные решающие правила (т.е. правила, критерием срабатывания которых является обращение по конкретному ip адресу или диапазону адресов, или обращение к TLS серверам с конкретным SNI (или SNI префиксом).
Анализ перечисленных выше в эксперименте 3 ошибок «пропуска цели» выявили следующие категории «плохих» sid:
-
поиск SNI: 2058779, 2039595, 2054227, 2047894, 2050282, 2024833;
-
поиск SNI с опцией dotprefix: 2027695, 2050633, 2063071, 2047866;
-
поиск сертификата с конкретными данными: 2029322, 28000196, 28000040, 28000002, 28000957;
-
поиск конкретных IP адресов: 2400004;
-
анализ TCP Flags: 1006319.
Остальные решающие правила исключать нельзя – они опираются на поиск контекстный поиск внутри данных TCP соединения (анализ заголовков http, анализ содержимого передаваемых по протоколу http файлов и т.п.).
После модификации набора данных векторов с меткой класса Benign – 55540495, векторов с меткой Attack – 8476 (первоначально было 57465).
При обучении объединим два временных диапазона dataset_1.csv и dataset_2.csv, т.е. обучение осуществлялось в течение 6 дней (включая трафик выходных дней).
Эксперимент 4. Оценка качества классификатора сетевого трафика.
|
Набор данных |
Матрица ошибок |
Показатели качества классификации |
|
dataset_1.csv |
clear as clear (TN-true negative): 9999112 |
accuracy = 0.9999 |
|
dataset_2.csv |
clear as clear (TN-true negative): 9998235 |
accuracy = 0.9999 |
|
dataset_3.csv |
clear as clear (TN-true negative): 9997651 |
accuracy = 0.9999 |
|
dataset_4.csv |
clear as clear (TN-true negative): 9999968 |
accuracy = 0.9999 |
|
dataset_5.csv |
clear as clear (TN-true negative): 9999952 |
accuracy = 0.9999 |
|
dataset_6.csv |
clear as clear (TN-true negative): 5545538 |
accuracy = 0.9999 |
Время обучения модели 39 мин 58 сек, время классификации 55 млн. векторов – 7 мин 56 сек.
Эксперимент 4. Таблица ошибок «пропуска» цели.
|
№ п/п |
sid |
Описание |
dataset_1 |
dataset_2 |
dataset_3 |
dataset_4 |
dataset_5 |
dataset_6 |
|
1 |
2028762 |
ET JA3 Hash – [Abuse.ch] Possible Trickbot |
688|0 |
1424|0 |
1954|11 |
0|0 |
0|0 |
3036|8 |
|
2 |
2014819 |
ET INFO Packed Executable Download |
145|0 |
224|0 |
261|37 |
31|0 |
47|1 |
278|30 |
|
3 |
2022082 |
ET INFO External IP Lookup ip-api.com |
0|0 |
46|0 |
66|6 |
0|0 |
0|0 |
73|2 |
|
4 |
2035303 |
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI) |
19|0 |
18|0 |
27|2 |
0|0 |
0|0 |
5|0 |
|
5 |
1006213 |
MultiProxy Firefox Add-ons |
33|5 |
3|1 |
0|0 |
0|0 |
0|0 |
0|0 |
|
6 |
2026521 |
ET USER_AGENTS Suspicious User-Agent (Windows 10) |
0|0 |
26|26 |
6|6 |
0|0 |
0|0 |
0|0 |
|
7 |
58565362 |
Trojan-PSW.Agent.HTTP.C&C |
0|0 |
8|0 |
5|0 |
0|0 |
0|0 |
1|0 |
|
8 |
2027762 |
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent |
0|0 |
0|0 |
2|2 |
0|0 |
0|0 |
4|4 |
|
9 |
2013927 |
ET INFO HTTP traffic on port 443 (HEAD) |
0|0 |
2|0 |
2|2 |
0|0 |
0|0 |
1|1 |
|
10 |
2017398 |
ET INFO IP Check Domain (icanhazip. com in HTTP Host) |
0|0 |
0|0 |
3|3 |
0|0 |
0|0 |
2|2 |
|
11 |
2043310 |
ET HUNTING DDoS-Guard Hosted Content |
0|0 |
0|0 |
4|4 |
0|0 |
0|0 |
1|1 |
|
12 |
2050130 |
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI) |
0|0 |
2|2 |
2|2 |
0|0 |
0|0 |
0|0 |
|
13 |
2057036 |
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com) |
0|0 |
4|4 |
0|0 |
0|0 |
0|0 |
0|0 |
|
14 |
2021701 |
ET GAMES MINECRAFT Server response inbound |
0|0 |
3|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
15 |
2049251 |
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI) |
0|0 |
2|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
16 |
36674245 |
HackTool.Nmap.TLS.C&C |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
17 |
2023753 |
ET SCAN MS Terminal Server Traffic on Non-standard Port |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
18 |
2054246 |
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
19 |
2038967 |
ET INFO SSH-2.0-Go version string Observed in Network Traffic |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
0|0 |
|
20 |
1006206 |
Browsec-VPN |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
21 |
2060251 |
ET INFO Go-http-client User-Agent Observed Outbound |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
22 |
2014788 |
ET DYN_DNS DYNAMIC_DNS HTTP Request to a 3322.net Domain *.3322.net |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
23 |
2017499 |
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1 |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
24 |
1006914 |
Possible trojan activity (base64-encoded content) |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
25 |
1003302 |
Anonymizer detected |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
26 |
2018383 |
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client) |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
27 |
2012252 |
ET SHELLCODE Common 0a0a0a0a Heap Spray String |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
|
28 |
2048493 |
ET INFO ISO File Downloaded |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
Выводы по эксперименту:
на третьем временном интервале появились новые события безопасности, на которых обучения ML IDS не проводилось и классификатор из не “видит”. В качестве эксперимента попробуем переобучить систему и добавить ошибочные вектора из файла dataset_3.
Эксперимент 5.
Исходными данными для эксперимента возьмем датасеты эксперимента 4 + добавим только ошибочные вектора (вектора с “пропуском” цели) из файла dataset_3.
Эксперимент 5. Оценка качества классификатора сетевого трафика.
|
Набор данных |
Матрица ошибок |
Показатели качества классификации |
|
dataset_1.csv |
clear as clear (TN-true negative): 9999111 |
accuracy = 0.9999 |
|
dataset_2.csv |
clear as clear (TN-true negative): 9998235 |
accuracy = 0.9999 |
|
dataset_3.csv |
clear as clear (TN-true negative): 9997641 |
accuracy = 0.9999 |
|
dataset_4.csv |
clear as clear (TN-true negative): 9999967 |
accuracy = 0.9999 |
|
dataset_5.csv |
clear as clear (TN-true negative): 9999951 |
accuracy = 0.9999 |
|
dataset_6.csv |
clear as clear (TN-true negative): 5545527 |
accuracy = 0.9999 |
Время обучения модели 39 мин 38 сек, время классификации 55 млн. векторов – 8 мин 12 сек.
Эксперимент 5. Таблица ошибок «пропуска» цели.
|
№ п/п |
sid |
Описание |
dataset_1 |
dataset_2 |
dataset_3 |
dataset_4 |
dataset_5 |
dataset_6 |
|
1 |
2028762 |
ET JA3 Hash – [Abuse.ch] Possible Trickbot |
688|0 |
1424|0 |
1954|0 |
0|0 |
0|0 |
3036|2 |
|
2 |
2014819 |
ET INFO Packed Executable Download |
145|0 |
224|1 |
261|5 |
31|0 |
47|0 |
278|29 |
|
3 |
2022082 |
ET INFO External IP Lookup ip-api.com |
0|0 |
46|0 |
66|6 |
0|0 |
0|0 |
73|2 |
|
4 |
2035303 |
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI) |
19|0 |
18|0 |
27|1 |
0|0 |
0|0 |
5|0 |
|
5 |
1006213 |
MultiProxy Firefox Add-ons |
33|3 |
3|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
6 |
2026521 |
ET USER_AGENTS Suspicious User-Agent (Windows 10) |
0|0 |
26|26 |
6|6 |
0|0 |
0|0 |
0|0 |
|
7 |
58565362 |
Trojan-PSW.Agent.HTTP.C&C |
0|0 |
8|0 |
5|0 |
0|0 |
0|0 |
1|0 |
|
8 |
2027762 |
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent |
0|0 |
0|0 |
2|1 |
0|0 |
0|0 |
4|2 |
|
9 |
2013927 |
ET INFO HTTP traffic on port 443 (HEAD) |
0|0 |
2|0 |
2|0 |
0|0 |
0|0 |
1|0 |
|
10 |
2017398 |
ET INFO IP Check Domain (icanhazip. com in HTTP Host) |
0|0 |
0|0 |
3|1 |
0|0 |
0|0 |
2|1 |
|
11 |
2043310 |
ET HUNTING DDoS-Guard Hosted Content |
0|0 |
0|0 |
4|0 |
0|0 |
0|0 |
1|1 |
|
12 |
2050130 |
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI) |
0|0 |
2|0 |
2|0 |
0|0 |
0|0 |
0|0 |
|
13 |
2057036 |
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com) |
0|0 |
4|4 |
0|0 |
0|0 |
0|0 |
0|0 |
|
14 |
2021701 |
ET GAMES MINECRAFT Server response inbound |
0|0 |
3|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
15 |
2049251 |
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI) |
0|0 |
2|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
16 |
36674245 |
HackTool.Nmap.TLS.C&C |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
17 |
2023753 |
ET SCAN MS Terminal Server Traffic on Non-standard Port |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
3|3 |
|
18 |
2054246 |
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
0|0 |
|
19 |
2038967 |
ET INFO SSH-2.0-Go version string Observed in Network Traffic |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
0|0 |
|
20 |
1006206 |
Browsec-VPN |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
21 |
2060251 |
ET INFO Go-http-client User-Agent Observed Outbound |
0|0 |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
|
22 |
2014788 |
ET DYN_DNS DYNAMIC_DNS HTTP Request to a 3322.net Domain *.3322.net |
0|0 |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
|
23 |
2017499 |
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1 |
0|0 |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
|
24 |
1006914 |
Possible trojan activity (base64-encoded content) |
0|0 |
0|0 |
1|0 |
0|0 |
0|0 |
0|0 |
|
25 |
1003302 |
Anonymizer detected |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
26 |
2018383 |
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client) |
0|0 |
0|0 |
1|1 |
0|0 |
0|0 |
0|0 |
|
27 |
2012252 |
ET SHELLCODE Common 0a0a0a0a Heap Spray String |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
|
28 |
2048493 |
ET INFO ISO File Downloaded |
0|0 |
0|0 |
0|0 |
0|0 |
0|0 |
1|1 |
Выводы по эксперименту 5:
-
добавление в обучающую выборку новых векторов атак, которые ранее не встречались, может приводить к положительному результату (строки 10, 11, 21, 22, 23, 24) однако могут появляться дополнительные ложные срабатывания (для выяснения причин необходимо оценить близость новых векторов до «чистых»);
-
иногда добавление информации об атаках не приносит ни какого результата или качество распознавания этих атак не высокое (строки 8, 20, 25, 26);
-
интересная для анализа строка 2 (событие «ET INFO Packed Executable Download», суть данного правила раскрыта выше). Добавление новой информации о такой атаке с одной стороны позволяет уменьшить пропуск цели на обучающей выборке, а вот обобщающая способность совсем не высокая (ошибки в последнем столбце). При этом, скорее всего, такие правила добавляют ложные срабатывания;
-
как бы не проходило обучение, но есть атаки, которые все равно не распознаются (например, строки 6, 8). По идеи их необходимо убирать из датасета (устанавливать метку класса Benign).
Общие выводы по проведенному исследованию
-
ML IDS уровня сети можно построить на уже эксплуатируемой сети связи, опираясь при этом на события безопасности, зарегистрированные с помощью IDS Suricata.
-
Разметка датасетов с использованием данных срабатываний сигнатурных анализаторов (IDS Suricata / Snort и т.п.) имеет преимущество – тонкая настройка решающих правил сигнатурных анализаторов позволяет убрать большое количество «ложных» срабатываний, на которые операторы систем обнаружения вторжений не «обращают» внимание.
-
Не все срабатывания IDS Suracata (sid зарегистрированных атак) можно использовать для разметки датасетов:
– много решающих правил сигнатурных анализаторов опираются на поиск исключительно адресной информации: SNI TLS соединений, конкретные IP адреса, обращения к конкретным веб-страницам. Если при разметке датасета будут применены такие sid очень высокая вероятность появления дополнительных «ложных» срабатываний и «пропуска» цели ML IDS;
– для качественного распознавания некоторых атак (sid) необходимо изменение признакового пространства (в проведенном выше исследовании, к таким атакам были отнесены различные способы сканирования портов). -
На этапе разметки датасета важно проводить оценку близости векторов признаков сетевых соединений, имеющих разные метки классов. Появление векторов с одинаковыми, или очень близкими значениями векторов признаков, но разными метками классов приводит к существенному ухудшению точности ML моделей. Одной из причин появления одинаковых значениями признаков в векторах, но разными метками классов является несовершенство самого признаковое пространства (т.е. требуется изменения признаков).
-
Обучающая выборка должна была репрезентативной. ML модель возможно необходимо обучить заново в следующих ситуациях:
– появление новых типов (sid) компьютерных атак;
– модификация или удаление решающих правил сигнатурных анализаторов (раньше был sid и были вектора им соответствующие в датасете, теперь такие же вектора будут иметь другую метку класса);
– изменение количества сотрудников в компании или изменение их трудовых функций (изменение сетевой нагрузки и как следствие влияние трафика пользователей на задержки, маршрутизацию / балансировку трафика в сети и т.п.);
– изменение сетевого оборудования или набора локальных сетевых сервисов компании (изменение задержек в сети связи, маршрутизации / балансировки трафика в сети и т.п.). -
Для качественного обучения ML IDS, в нашем случае, требуется 1 недели наблюдения за сетевым трафиком компании (включая, выходные и рабочие дни).
-
На этапе оценки качества обученной ML модели важно провести анализ ошибок классификации.
Причины ошибок:
– некачественные решающие правила сигнатурных анализаторов (IDS Suricata);
– состязательные атаки на ML модель. -
Набор значимых признаков для распознавания разных типов компьютерных атак различный (очевидно, что для распознавания атак типа brute force и для распознавания сканирования портов признаки, отличающие их друг от друга, будут различные).
-
При сопоставлении событий безопасности IDS Suricata с векторами, характеризующими соответствующие сетевые соединения (session_analyzer или аналогичные утилиты) необходимо учесть следующее:
– метка времени срабатывания решающего правила IDS Suricata чаще всего не совпадает со временем начала сетевого соединения;
– одному и тому же событию безопасности IDS Suricata может соответствовать 2 сетевых соединения – это зависит от точки наблюдения за трафиком (например, session_analyzer может наблюдать за трафиком как до, так и после шлюза). Подробнее можно посмотреть выше в подразделе «Особенности приема сетевого трафика». -
Качество ML IDS классификатора по метрики F1-меры при должной разметке датасета может достигать 0.98.
Недостатки проведенного исследования
-
Использование бинарной классификации при построении ML IDS, что в при практическом внедрении в существующие средства NGFW является на наш взгляд не приемлемым. Нельзя ответить на вопрос – какой класс атаки был зарегистрирован и как реагировать на такое событие?
-
При построении ML IDS защищаемым объектом была пользовательская сеть, а не конкретный ресурс, по этому на основании полученных результатов невозможно ответить на вопрос: какие классы атак на реальный объект защиты (например, web-сервер) возможно обнаруживать с помощью технологии ML IDS уровня сети.
В наших будущих публикациях постараемся ответить Вам, дорогие читатели, на эти вопросы. До скорой встречи!
Автор: Mag3d


