В настоящее время для противодействия компьютерным атакам применяются разнообразные средства защиты информации:
- межсетевые экраны;
- системы обнаружения вторжений уровня сети;
- системы обнаружения вторжений уровня хоста;
- межсетевые экраны нового поколения (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
- Анализу подлежат все сетевые пакеты следующих сетевых протоколов: 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.
Описание признаков, характеризующих сетевые сессии
Обозначение признака в наборе данных
Тип данных, пример
Session Index
Индекс сессии
Целое число,0
Server Name Indication. Имя сервера, указанное в пакете ClientHello протокола TLS/SSL
Символьная строка,dvwa.isp
Идентификатор сессии
Символьная строка, 172.18.0.2-85.249.84.244-443-41782-6
IP адрес источника сетевой сессии
Символьная строка,85.249.84.244
Source Port
Port транспортного уровня источника сетевой сессии
Целое 16-битное число,41782
Destination IP
IP адрес назначения сетевой сессии
Символьная строка,172.18.0.2
Destination Port
Port транспортного уровня назначения сетевой сессии
Целое 16-битное число,443
Протокол транспортного уровня, может принимать следующие значения: 1 – ICMP, 6 – TCP, 17 – UDP
Целое 8 битное число,6
Метка времени, формат метки:
число.месяц.год час:мин.микросекунды
Символьная строка, 16.11.2021 11:41
Flow Duration
Длительность сессии в микросекундах
Целое 64-битное число, 9772334
Total Fwd Packets
Количество сетевых пакетов, переданных в направлении от клиента к серверу
Целое 64-битное число, 13
Total Backward Packets
Количество сетевых пакетов, переданных в направлении от сервера к клиенту
Целое 64-битное число, 11
Total Length of Fwd Packets
Суммарная длина полезных данных (payload) в байтах, переданных от клиента к серверу
Целое 64-битное число, 1929
Total Length of Bwd Packets
Суммарная длина полезных данных (payload) в байтах, переданных от сервера к клиенту
Целое 64-битное число, 3695
Статистические характеристики длин передаваемых полезных данных (payload) в направлении Forward (от клиента к серверу), в байтах
Fwd Packet Length Max
Максимальная длина пакета
Целое 64-битное число,672
Fwd Packet Length Min
Минимальная длина пакета
Целое 64-битное число,0
Fwd Packet Length Mean
Оценка математического ожидания длин пакетов (средняя длина пакета)
Вещественное число,148.38461538
Fwd Packet Length Std
Несмещенная оценка среднеквадратичного отклонения длин пакетов
Вещественное число,262.28341492
Статистические характеристики длин передаваемых полезных данных (payload) в направлении Backward (от сервера к клиенту), в байтах
Bwd Packet Length Max
Максимальная длина пакета
Целое 64-битное число,1415
Bwd Packet Length Min
Минимальная длина пакета
Целое 64-битное число,0
Bwd Packet Length Mean
Оценка математического ожидания длин пакетов (средняя длина пакета)
Вещественное число,335.90909091
Bwd Packet Length Std
Несмещенная оценка среднеквадратичного отклонения длин пакетов
Вещественное число,539.65793880
Flow Bytes/s
Отношение суммарной длины переданных полезных данных (payload) (в байтах) к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10
Вещественное число,575.50222905
Flow Packets/s
Отношение общего количества сетевых пакетов в сетевой сессии к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10.
Вещественное число, 2.45591278
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Flow (без учета направления передачи данных), первый пакет сетевой сессии считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета (не зависимо от направления передачи данных).Межпакетные интервалы измеряются в микросекундах
Flow IAT Mean
Оценка математического ожидания межпакетных интервалов
Вещественное число,424884.0869565
Flow IAT Std
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов
Вещественное число,1349427.122279
Flow IAT Max
Максимальное значение межпакетного интервала
Целое 64-битное число,4952858
Flow IAT Min
Минимальное значение межпакетного интервала
Целое 64-битное число,17
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Forward (от клиента к серверу), первый пакет в направлении Forward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward.Межпакетные интервалы измеряются в микросекундах
Fwd IAT Total
Суммарное значение всех межпакетных интервалов в направлении Forward
Целое 64-битное число,9772334
Fwd IAT Mean
Оценка математического ожидания межпакетных интервалов в направлении Forward
Вещественное число,814361.166667
Fwd IAT Std
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Forward
Вещественное число,1827899.8492
Fwd IAT Max
Максимальное значение межпакетного интервала в направлении Forward
Целое 64-битное число,5003029
Fwd IAT Min
Минимальное значение межпакетного интервала в направлении Forward
Целое 64-битное число,255
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Backward (от сервера к клиенту), первый пакет в направлении Backward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward
Bwd IAT Total
Суммарное значение всех межпакетных интервалов в направлении Backward
Целое 64-битное число,5247374
Bwd IAT Mean
Оценка математического ожидания межпакетных интервалов в направлении Backward
Вещественное число,524737.4
Bwd IAT Std
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Backward
Вещественное число,1573943.9826
Bwd IAT Max
Максимальное значение межпакетного интервала в направлении Backward
Целое 64-битное число,5002839
Bwd IAT Min
Минимальное значение межпакетного интервала в направлении Backward
Целое 64-битное число,237
Fwd Header Length
Суммарная длина заголовков транспортного уровня (TCP / UDP) при передаче данных в направлении Forward (от клиента к серверу)
Целое 64-битное число,424
Bwd Header Length
Суммарная длина заголовков транспортного уровня (TCP / UDP) при передаче данных в направлении Backward (от сервера к клиенту)
Целое 64-битное число,360
Fwd Packets/s
Отношение общего количества сетевых пакетов, переданных в направлении Forward (от клиента к серверу), к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10.
Вещественное число,1.33028609
Bwd Packets/s
Отношение общего количества сетевых пакетов, переданных в направлении Backward (от сервера к клиенту), к длительности сетевой сессии (в секундах). Длительность сетевой сессии может быть рассчитана 2 способами см. п. 10.
Вещественное число,1.12562669
Статистические характеристики длин передаваемых полезных данных (payload) без учета направления передачи данных, в байтах
Min Packet Length
Минимальная длина пакета
Целое 64-битное число,0
Max Packet Length
Максимальная длина пакета
Целое 64-битное число,1415
Packet Length Mean
Оценка математического ожидания длин пакетов (средняя длина пакета)
Вещественное число,234.3333
Packet Length Std
Несмещенная оценка среднеквадратичного отклонения длин пакетов
Вещественное число,414.27492097
Packet Length Variance
Несмещенная оценка дисперсии длин пакетов
Вещественное число, 171623.7101
Average Packet Size
Оценка математического ожидания длин пакетов (средняя длина пакета).
Данный признак повторяется и равен значению Packet Length Mean
Вещественное число,234.3333
Количество сетевых пакетов, переданных в направлении Forward (от клиента к серверу), содержащих заданный флаг равный 1 в заголовке TCP пакета
Fwd FIN Flags
Целое 64-битное число,0
Fwd SYN Flags
Целое 64-битное число,1
Fwd RST Flags
Целое 64-битное число,1
Fwd PSH Flags
Целое 64-битное число,4
Fwd ACK Flags
Целое 64-битное число,12
Fwd URG Flags
Целое 64-битное число,0
Fwd ECE Flags
Целое 64-битное число,0
Fwd CWR Flags
Целое 64-битное число,0
Fwd NS Flags
Целое 64-битное число,0
Количество сетевых пакетов, переданных в направлении Backward (от сервера к клиенту), содержащих заданный флаг равный 1 в заголовке TCP пакета
Bwd FIN Flags
Целое 64-битное число,1
Bwd SYN Flags
Целое 64-битное число,1
Bwd RST Flags
Целое 64-битное число,0
Bwd PSH Flags
Целое 64-битное число,5
Bwd ACK Flags
Целое 64-битное число,11
Bwd URG Flags
Целое 64-битное число,0
Bwd ECE Flags
Целое 64-битное число,0
Bwd CWR Flags
Целое 64-битное число,0
Bwd NS Flags
Целое 64-битное число,0
Stream Session Number
Номер сетевой сессии
Целое 64-битное число,0
Stream Was Prev Session
Есть ли предыдущая сетевая сессия в потоке?
Целое 8-битное число,0
Stream Was Next Session
Есть ли следующая сетевая сессия после текущей в потоке?
Целое 8-битное число,1
Stream Prev Session Time
Время в микросекундах между созданием текущей сетевой сессии и предыдущей сетевой сессией. Ограничение значения данного признака описано в п.12.
Целое 64-битное число,60000000
Stream Next Session Time
Время в микросекундах между созданием следующей и текущей сетевой сессии. Ограничение значения данного признака описано в п.13.
Целое 64-битное число,218
Stream Sessions On Start
Число параллельных сетевых сессий в потоке сетевых сессий на момент создания текущей сессии (значение включает текущую сессию)
Целое 64-битное число,1
Stream Sessions On Close
Число параллельных сетевых сессий в потоке сетевых сессий на момент окончания текущей сессии (значение включает текущую сессию)
Целое 64-битное число,2
Stream Sessions Max
Максимальное число параллельных сетевых сессий за время существования текущей сетевой сессии (значение включает текущую сессию)
Целое 64-битное число,3
Статистические характеристики интервалов между созданием сетевых сессий в потоке сессий в микросекундах
Stream Session Intervals Min
Минимальное значение интервала между сетевыми сессиями в потоке
Целое 64-битное число,218
Stream Session Intervals Max
Максимальное значение интервала между сетевыми сессиями в потоке
Целое 64-битное число,9769550
Stream Session Intervals Mean
Оценка математического ожидания значения интервала между сетевыми сессиями в потоке (среднее значение интервала между сетевыми сессиями в потоке)
Вещественное число,4884884.0
Stream Session Intervals Std
Несмещенная оценка среднеквадратичного отклонения значения интервала между сетевыми сессиями в потоке
Вещественное число,6907960.905
Статистические характеристики длительностей сетевых сессий в потоке сессий в микросекундах
Stream Session Durations Min
Минимальная длительность сетевой сессии в потоке
Целое 64-битное число,9771073
Stream Session Durations Max
Максимальная длительность сетевой сессии в потоке
Целое 64-битное число,9772334
Stream Session Durations Mean
Оценка математического ожидания длительностей сетевых сессии (средняя длительность сетевой сессии в потоке)
Вещественное число,9771703.5
Stream Session Durations Std
Несмещенная оценка среднеквадратичного отклонения длительностей сетевых сессии
Вещественное число,891.66165108
Stream Prev Session Time/Duration
Отношение времени в микросекундах между созданием текущей сетевой сессии и предыдущей сетевой сессией к длительности текущей сетевой сессии
Вещественное число,6.13978196
Stream Next Session Time/Duration
Отношение времени в микросекундах между созданием следующей и текущей сетевой сессии к длительности текущей сетевой сессии
Вещественное число,0.00002231
Stream Session Intervals Min/Duration
Отношение минимального значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии
Вещественное число,0.00002231
Stream Session Intervals Max/Duration
Отношение максимального значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии
Вещественное число,0.99971511
Stream Session Intervals Mean/Duration
Отношение среднего значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии
Вещественное число,0.49986871
Stream Session Intervals Std/Duration
Отношение среднеквадратичного отклонения значения интервала между сетевыми сессиями в потоке к длительности текущей сетевой сессии
Вещественное число,0.70688956
Stream Session Durations Min/Duration
Отношение минимальной длительности сетевой сессии в потоке к длительности текущей сетевой сессии
Вещественное число,0.99987096
Stream Session Durations Max/Duration
Отношение максимальной длительности сетевой сессии в потоке к длительности текущей сетевой сессии
Вещественное число,1.0
Stream Session Durations Mean/Duration
Отношение среднего значения длительности сетевой сессии в потоке к длительности текущей сетевой сессии
Вещественное число,0.9999
Stream Session Durations Std/Duration
Отношение среднеквадратичного отклонения длительности сетевых сессий в потоке к длительности текущей сетевой сессии
Вещественное число,0.00009124
Статистические характеристики мгновенных значений скорости передачи данных (учитывается длина полного пакета со всеми заголовками), выраженной в байтах в сек, в направлении Forward (от клиента к серверу)
Fwd Bandwidth Min
Минимальное значение мгновенной скорости
Целое 64-битное число,13
Fwd Bandwidth Max
Максимальное значение мгновенной скорости
Целое 64-битное число,2894117
Fwd Bandwidth Mean
Оценка математического ожидания значений мгновенной скорости
Вещественное число,322671.75
Fwd Bandwidth Std
Несмещенная оценка среднеквадратичного отклонения значений мгновенной скорости
Вещественное число,845316.235
Статистические характеристики мгновенных значений скорости передачи данных (учитывается длина полного пакета со всеми заголовками), выраженной в байтах в сек, в направлении Backward (от сервера к клиенту)
Bwd Bandwidth Min
Минимальное значение мгновенной скорости
Целое 64-битное число,19
Bwd Bandwidth Max
Максимальное значение мгновенной скорости
Целое 64-битное число,929922
Bwd Bandwidth Mean
Оценка математического ожидания значений мгновенной скорости
Вещественное число,234621.6
Bwd Bandwidth Std
Несмещенная оценка среднеквадратичного отклонения значений мгновенной скорости
Вещественное число,292243.2465
Fwd Total Length div Duration
Отношение суммарной длина полезных данных (payload) в байтах, переданных от клиента к серверу, к длительности сессии
Вещественное число,0.00019739
Bwd Total Length div Duration
Отношение суммарной длина полезных данных (payload) в байтах, переданных от сервера к клиенту, к длительности сессии
Вещественное число,0.00037811
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Forward (от клиента к серверу) на этапе установления соединения TCP, первый пакет в направлении Forward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Forward
Fwd IAT Total HandShake
– суммарное значение всех межпакетных интервалов в направлении Forward
Целое 64-битное число,9130
Fwd IAT Mean HandShake
– оценка математического ожидания межпакетных интервалов в направлении Forward
Вещественное число,9130.0
Fwd IAT Std HandShake
– несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Forward
Вещественное число,0.0
Fwd IAT Max HandShake
– максимальное значение межпакетного интервала в направлении Forward
Целое 64-битное число,9130
Fwd IAT Min HandShake
– минимальное значение межпакетного интервала в направлении Forward
Целое 64-битное число,9130
Статистические характеристики межпакетных интервалов в потоке сетевых пакетов Backward (от сервера к клиенту) на этапе установления соединения TCP, первый пакет в направлении Backward считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета в направлении Backward
Bwd IAT Total HandShake
– суммарное значение всех межпакетных интервалов в направлении Backward
Целое 64-битное число,0
Bwd IAT Mean HandShake
– оценка математического ожидания межпакетных интервалов в направлении Backward
Вещественное число,0
Bwd IAT Std HandShake
– несмещенная оценка среднеквадратичного отклонения межпакетных интервалов в направлении Backward
Вещественное число,0
Bwd IAT Max HandShake
– максимальное значение межпакетного интервала в направлении Backward
Целое 64-битное число,0
Bwd IAT Min HandShake
– минимальное значение межпакетного интервала в направлении Backward
Целое 64-битное число,0
Статистические характеристики межпакетных интервалов в сетевой сессии без учета направления передачи пакетов (от сервера к клиенту) на этапе установления соединения TCP, первый пакет в сетевой сессии считается началом отсчета времени, первое значение межпакетного интервала рассчитывается при получении второго пакета
Flow IAT Total HandShake
Суммарное значение всех межпакетных интервалов
Целое 64-битное число,9130
Flow IAT Mean HandShake
Оценка математического ожидания межпакетных интервалов
Вещественное число,4565.0
Flow IAT Std HandShake
Несмещенная оценка среднеквадратичного отклонения межпакетных интервалов
Вещественное число,6380.932
Flow IAT Max HandShake
Максимальное значение межпакетного интервала
Целое 64-битное число,9077
Flow IAT Min HandShake
Минимальное значение межпакетного интервала
Целое 64-битное число,53
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 раз из таблицы убраны).
Коли-чество
HolaVPN detected
HolaVPN detected
HolaVPN detected
ET JA3 Hash - [Abuse.ch] Possible Trickbot
Anonymizer detected
ET INFO Observed Discord Service Domain (gateway .discord .gg) in TLS SNI
ET INFO Observed vk .com API Domain (api .vk .com in TLS SNI)
ET TA_ABUSED_SERVICES Commonly Actor Abused Online Service Domain (syncthing .net)
ET INFO Packed Executable Download
ET HUNTING Observed Telegram API Domain (api .telegram .org in TLS SNI)
HackTool.Nmap.TCP.ServerRequest
ET INFO External IP Address Lookup Domain (ipify .org) in TLS SNI
HackTool.Nmap.TCP.ServerRequest
ET INFO DropBox User Content Domain (dl .dropboxusercontent .com in TLS SNI)
ET INFO Observed Telegram Domain (t .me in TLS SNI)
ET INFO External IP Lookup ip-api.com
ET DROP Dshield Block Listed Source group 1
(o)DoH Query for dns.google
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI)
ET INFO Observed Alibaba Cloud CDN Domain (aliyuncs .com in TLS SNI)
(o)DoH Query for httpdns-push.heytapmobile.com
ET INFO Observed Discord Service Domain (discord .com) in TLS SNI
ET HUNTING Suspected Malicious Telegram Communication (POST)
ET INFO Observed UA-CPU Header
MultiProxy Firefox Add-ons
ET USER_AGENTS Suspicious User-Agent (Windows 10)
ET DROP Spamhaus DROP Listed Traffic Inbound group 10
PORT SCAN (NMAP -sA)
Outbound connection to a possible C&C server
IP blocklist
IP blocklist
IP blocklist
ET INFO Observed Cloudflare Page Developer Domain (pages .dev in TLS SNI)
IP blocklist
Trojan-PSW.Agent.HTTP.C&C
ET HUNTING Telegram API Certificate Observed
ET DROP Spamhaus DROP Listed Traffic Inbound group 60
ET INFO Abused Hosting Domain (azurewebsites .net) in TLS SNI
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI)
IP blocklist
IP blocklist
(o)DoH Query for mozilla.cloudflare-dns.com
(o)DoH Query for dns.google.com
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI
IP blocklist
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org)
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent
ET INFO HTTP traffic on port 443 (HEAD)
ET INFO Observed Google DNS over HTTPS Domain (dns .google .com in TLS SNI)
ET INFO IP Check Domain (icanhazip. com in HTTP Host)
ET INFO Observed File Hosting Service Domain (files .pythonhosted .org in TLS SNI)
ET HUNTING DDoS-Guard Hosted Content
(o)DoH Query for cloudflare-dns.com
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI)
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com)
ET GAMES MINECRAFT Server response inbound
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI)
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI
IP blocklist
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI)
HackTool.Nmap.TLS.C&C
ET SCAN MS Terminal Server Traffic on Non-standard Port
IP blocklist
IP blocklist
ET DROP Spamhaus DROP Listed Traffic Inbound group 36
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI
IP blocklist
IP blocklist
IP blocklist
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com)
ET INFO Observed Online Collab Tool Domain (figma .com in TLS SNI)
IP blocklist
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI
ET DROP Spamhaus DROP Listed Traffic Inbound group 5
IP blocklist
IP blocklist
IP blocklist
ET DROP Spamhaus DROP Listed Traffic Inbound group 61
IP blocklist
IP blocklist
(o)DoH Query for httpdns-push.heytapmobile.com
55 млн. строк – это достаточно много (с одной стороны по продолжительности сбора данных о сетевом трафике, с другой стороны по требуемому объему оперативной памяти при дальнейшем обучении моделей) и для упрощения анализа при проведении исследования все множество векторов разбиваем на файлы по 10 млн строк.
Все 55 млн. строк сортируем по меткам времени появления вектора признаков, характеризующих сетевые соединения –это позволит ответить на вопрос: сколько времени требуется наблюдать за трафиком компании для обучения и получения качественной ML модели.
Распределение всех векторов по классам и по времени появления представлены ниже в таблице.
Название файла
Количество векторов признаков по метке класса
Период наблюдения
dataset_1.csv
Benign – 9996297Attack – 3703
2025-06-26 23:47:43 (четверг)2025-06-29 17:31:35 (воскресенье)
dataset_2.csv
Benign – 9979487Attack – 20513
2025-06-29 17:31:35 (воскресенье)2025-07-02 10:55:35 (среда)
dataset_3.csv
Benign – 9983212Attack – 16788
2025-07-02 10:55:35 (среда)2025-07-04 22:52:20 (пятница)
dataset_4.csv
Benign – 9999896Attack – 104
2025-07-02 22:23:49 (пятница)2025-07-06 02:05:00 (воскресенье)
dataset_5.csv
Benign – 9999893Attack – 107
2025-07-06 02:05:00 (воскресенье)2025-07-07 08:10:49 (понедельник)
dataset_6.csv
Benign – 5532721Attack – 16250
2025-07-07 08:10:49 (понедельник)2025-07-10 08:25:40 (четверг)
Ура! Датасет готов. Можно попробовать синтезировать 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): 9996239clear as attack (FP-false positive): 58attack as clear (FN-false negative): 1612attack as attack (TP-true positive): 2091
accuracy = 0.9998precision = 0.9730recall = 0.5646f1-score = 0.7146
dataset_2.csv
clear as clear (TN-true negative): 9974887clear as attack (FP-false positive): 4600attack as clear (FN-false negative): 16783attack as attack (TP-true positive): 3730
accuracy = 0.9978precision = 0.4477recall = 0.1818f1-score = 0.2586
dataset_3.csv
clear as clear (TN-true negative): 9980409clear as attack (FP-false positive): 2803attack as clear (FN-false negative): 12279attack as attack (TP-true positive): 4509
accuracy = 0.9984precision = 0.6166recall = 0.2685f1-score = 0.3742
dataset_4.csv
clear as clear (TN-true negative): 9999888clear as attack (FP-false positive): 8attack as clear (FN-false negative): 47attack as attack (TP-true positive): 57
accuracy = 0.9999precision = 0.8769recall = 0.5480f1-score = 0.6745
dataset_5.csv
clear as clear (TN-true negative): 9999889clear as attack (FP-false positive): 4attack as clear (FN-false negative): 40attack as attack (TP-true positive): 67
accuracy = 0.9999precision = 0.9436recall = 0.6261f1-score = 0.7528
dataset_6.csv
clear as clear (TN-true negative): 5530706clear as attack (FP-false positive): 2015attack as clear (FN-false negative): 8488attack as attack (TP-true positive): 7762
accuracy = 0.9981precision = 0.7939recall = 0.4776f1-score = 0.5964
Выводы по эксперименту: пока что, все плохо!
- Обучение произведено на файле dataset_1.csv и качество классификации на нем же плохое: слишком много «пропуска цели», а следовательно и значение recall тоже низкое.Т.е. выборки плохо разделимы с использованием выбранного математического аппарата, существующего признакового пространства и/или разметки датасета.
- На остальных файлах (участках времени) всё плохо не только с попуском цели, но и достаточно высокий уровень ложных срабатываний, что обычно говорит о том, что в обучающей выборке недостаточно «чистых» векторов, т.е. обучающая выборка не репрезентативна и надо добавить векторов со следующего временного участка. Однако в нашем случае, в явном виде такой вывод сделать нельзя, т.к. на dataset_4.csv и dataset_5.csv (выходные дни и совсем небольшое количество атак) качество классификации «чистого» трафика неплохое.
Что же делать дальше?
Высокий уровень пропуска цели и в целом невозможность разделения векторов на обучающей выборке, в совокупности с применением catboost (одна из лучших в мире реализаций RandomForest) говорит о том, что скорее всего разметка датасета неправильная и есть вектора имеющие одинаковые (или очень близкие) значения признаков, но разные метки классов.Все такие вектора для простоты обозначения будем по тексту публикации называть «плохими» векторами.
Тогда на следующем этапе исследования:
- найдем все вектора, расстояние между которыми равны 0, но они относятся к разным классам (это однозначно неправильная разметка датасета);
- найдем все вектора, расстояние между которыми имеют «очень маленькое» значение (данное значение было подобрано экспериментально);
- проведем анализ: какие именно атаки (sid правил IDS Suricata) попали во множество «плохих»?
- заменим метку класса найденных векторов на Benign.
Эксперимент 2.
Для поиска векторов имеющих одинаковые значения признаков, но разные метки классов, воспользуемся расчетом Евклидова расстояния между векторами (не забываем при этом нормализовать значения каждого признака). Поиск осуществляем только на файле dataset_1.csv (он у нас обучающий).
В результате поиска векторов с одинаковыми (или очень близкими) значениями признаков, но разными метками классов было найдено 24 sid (объединим их в логические группы и представим текстовое описание семантики решающего правила).
Короткое описание (описание взято из решающего правила IDS Suricata) и краткое описание семантики решающего правила
"Anonymizer detected",правило находит TLS соединения с заданным значением SNI
1006215, 1006217, 1006221
"HolaVPN detected",правила находят TLS соединения с заданными значениями SNI (в одном из sid, есть небольшое контекстное уточнение)
1006554, 1006555, 1006556, 1800330, 1800496, 1800742, 1801285, 1801673, 1802363, 1802600, 1802677
"IP blocklist",правила находят сетевые пакеты с заданными IP адресами
41560233, 65158634
"HackTool.Nmap.TCP.ServerRequest", правила находят сетевые пакеты с заданными флагами протокола TCP (таких признаков в нашем датасете нет!)
"ET INFO DropBox User Content Domain (dl.dropboxusercontent.com in TLS SNI)",правило находит TLS соединения с заданным значением SNI
"ET INFO External IP Address Lookup Domain (ipify.org) in TLS SNI",правило находит TLS соединения с заданным значением SNI
2400009,2400035,2400059,2400060
"ET DROP Spamhaus DROP Listed Traffic Inbound group 10""ET DROP Spamhaus DROP Listed Traffic Inbound group 36""ET DROP Spamhaus DROP Listed Traffic Inbound group 60""ET DROP Spamhaus DROP Listed Traffic Inbound group 61",правила находят сетевые пакеты с заданными IP адресами
"ET DROP Dshield Block Listed Source group 1",правила находят сетевые пакеты с заданными IP адресами
Для практически всех вышеперечисленных компьютерных атак имелись полностью совпадающие вектора из множества «чистых» векторов (т.е. расстояние между ними было равно 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): 9998394clear as attack (FP-false positive): 10attack as clear (FN-false negative): 18attack as attack (TP-true positive): 1578
accuracy = 0.9999precision = 0.9937recall = 0.9887f1-score = 0.9912
dataset_2.csv
clear as clear (TN-true negative): 9996661clear as attack (FP-false positive): 194attack as clear (FN-false negative): 587attack as attack (TP-true positive): 2558
accuracy = 0.9999precision = 0.9295recall = 0.8133f1-score = 0.8675
dataset_3.csv
clear as clear (TN-true negative): 9995458clear as attack (FP-false positive): 103attack as clear (FN-false negative): 753attack as attack (TP-true positive): 3686
accuracy = 0.9999precision = 0.9728recall = 0.8303f1-score = 0.8959
dataset_4.csv
clear as clear (TN-true negative): 9999937clear as attack (FP-false positive): 5attack as clear (FN-false negative): 13attack as attack (TP-true positive): 45
accuracy = 0.9999precision = 0.9recall = 0.7758f1-score = 0.8333
dataset_5.csv
clear as clear (TN-true negative): 9999923clear as attack (FP-false positive): 3attack as clear (FN-false negative): 18attack as attack (TP-true positive): 56
accuracy = 0.9999precision = 0.9491recall = 0.7567f1-score = 0.8421
dataset_6.csv
clear as clear (TN-true negative): 5540606clear as attack (FP-false positive): 250attack as clear (FN-false negative): 1549attack as attack (TP-true positive): 6566
accuracy = 0.9996precision = 0.9633recall = 0.8091f1-score = 0.8795
Время обучения модели 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. Таблица ошибок "пропуск" цели
ET JA3 Hash - [Abuse.ch] Possible Trickbot
ET INFO Observed Discord Service Domain (gateway .discord .gg) in TLS SNI
ET INFO Observed vk .com API Domain (api .vk .com in TLS SNI)
ET TA_ABUSED_SERVICES Commonly Actor Abused Online Service Domain (syncthing .net)
ET INFO Packed Executable Download
ET HUNTING Observed Telegram API Domain (api .telegram .org in TLS SNI)
ET INFO Observed Telegram Domain (t .me in TLS SNI)
ET INFO External IP Lookup ip-api.com
(o)DoH Query for dns.google
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI)
ET INFO Observed Alibaba Cloud CDN Domain (aliyuncs .com in TLS SNI)
(o)DoH Query for httpdns-push.heytapmobile.com
ET INFO Observed Discord Service Domain (discord .com) in TLS SNI
ET HUNTING Suspected Malicious Telegram Communication (POST)
MultiProxy Firefox Add-ons
ET INFO Observed UA-CPU Header
ET USER_AGENTS Suspicious User-Agent (Windows 10)
PORT SCAN (NMAP -sA)
Outbound connection to a possible C&C server
ET INFO Observed Cloudflare Page Developer Domain (pages .dev in TLS SNI)
IP blocklist
ET HUNTING Telegram API Certificate Observed
Trojan-PSW.Agent.HTTP.C&C
ET INFO Abused Hosting Domain (azurewebsites .net) in TLS SNI
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI)
IP blocklist
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI
(o)DoH Query for dns.google.com
(o)DoH Query for mozilla.cloudflare-dns.com
IP blocklist
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org)
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent
ET INFO HTTP traffic on port 443 (HEAD)
ET INFO Observed Google DNS over HTTPS Domain (dns .google .com in TLS SNI)
ET INFO IP Check Domain (icanhazip. com in HTTP Host)
ET INFO Observed File Hosting Service Domain (files .pythonhosted .org in TLS SNI)
ET HUNTING DDoS-Guard Hosted Content
(o)DoH Query for cloudflare-dns.com
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI)
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com)
IP blocklist
IP blocklist
ET GAMES MINECRAFT Server response inbound
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI)
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI
IP blocklist
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI)
HackTool.Nmap.TLS.C&C
ET SCAN MS Terminal Server Traffic on Non-standard Port
(o)DoH Query for httpdns-push.heytapmobile.com
IP blocklist
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI
IP blocklist
IP blocklist
IP blocklist
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com)
IP blocklist
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI
ET DROP Spamhaus DROP Listed Traffic Inbound group 5
Выводы по исследованию состава зарегистрированных событий безопасности 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): 9999094clear as attack (FP-false positive): 6attack as clear (FN-false negative): 13attack as attack (TP-true positive): 887
accuracy = 0.9999precision = 0.9932recall = 0.9855f1-score = 0.9894
dataset_2.csv
clear as clear (TN-true negative): 9998210clear as attack (FP-false positive): 1attack as clear (FN-false negative): 47attack as attack (TP-true positive): 1742
accuracy = 0.9999precision = 0.9994recall = 0.9737f1-score = 0.9864
dataset_3.csv
clear as clear (TN-true negative): 9997626clear as attack (FP-false positive): 7attack as clear (FN-false negative): 110attack as attack (TP-true positive): 2257
accuracy = 0.9999precision = 0.9969recall = 0.9535f1-score = 0.9747
dataset_4.csv
clear as clear (TN-true negative): 9999966clear as attack (FP-false positive): 2attack as clear (FN-false negative): 1attack as attack (TP-true positive): 31
accuracy = 0.9999precision = 0.9393recall = 0.9687f1-score = 0.9538
dataset_5.csv
clear as clear (TN-true negative): 9999949clear as attack (FP-false positive): 1attack as clear (FN-false negative): 4attack as attack (TP-true positive): 46
accuracy = 0.9999precision = 0.9787recall = 0.92f1-score = 0.9484
dataset_6.csv
clear as clear (TN-true negative): 5545503clear as attack (FP-false positive): 26attack as clear (FN-false negative): 92attack as attack (TP-true positive): 3350
accuracy = 0.9999precision = 0.9922recall = 0.9732f1-score = 0.9826
Время обучения модели 39 мин 49 сек, время классификации 55 млн. векторов – 8 мин 41,6 сек.
Эксперимент 3. Таблица ошибок "пропуска" цели
ET JA3 Hash - [Abuse.ch] Possible Trickbot
ET INFO Packed Executable Download
ET INFO External IP Lookup ip-api.com
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI)
MultiProxy Firefox Add-ons
ET USER_AGENTS Suspicious User-Agent (Windows 10)
PORT SCAN (NMAP -sA)
ET HUNTING Telegram API Certificate Observed
Trojan-PSW.Agent.HTTP.C&C
ET INFO Observed Cloudflare DNS over HTTPS Domain (cloudflare-dns .com in TLS SNI)
ET INFO Observed File Hosting Service Domain (zohopublic .eu) in TLS SNI
(o)DoH Query for dns.google.com
(o)DoH Query for mozilla.cloudflare-dns.com
ET INFO Observed Smart Chain Domain in TLS SNI (bsc-dataseed .binance .org)
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent
ET INFO IP Check Domain (icanhazip. com in HTTP Host)
ET HUNTING DDoS-Guard Hosted Content
(o)DoH Query for cloudflare-dns.com
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI)
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com)
ET GAMES MINECRAFT Server response inbound
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI)
ET INFO Observed External IP Lookup Domain (l2 .io) in TLS SNI
ET INFO Observed Google DNS over HTTPS Domain (dns .google in TLS SNI)
HackTool.Nmap.TLS.C&C
ET SCAN MS Terminal Server Traffic on Non-standard Port
(o)DoH Query for httpdns-push.heytapmobile.com
ET INFO External IP Address Lookup Domain (get .geojs .io) in TLS SNI
ET TA_ABUSED_SERVICES Fingerprinting Service in TLS SNI (customfingerprints .bablosoft .com)
ET INFO Observed Online Collab Tool Domain (figma .com in TLS SNI)
ET INFO Observed External IP Lookup Domain (ip-info .ff .avast .com) in TLS SNI
ET DROP Spamhaus DROP Listed Traffic Inbound group 5
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound
ET INFO SSH-2.0-Go version string Observed in Network Traffic
Browsec-VPN
ET INFO Go-http-client User-Agent Observed Outbound
ET DYN_DNS DYNAMIC_DNS HTTP Request to a3322.netDomain *.3322.net
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1
Possible trojan activity, base64-encoded content
Anonymizer detected
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client)
ET SHELLCODE Common 0a0a0a0a Heap Spray String
ET INFO ISO File Downloaded
ET INFO Observed IP Lookup Domain (l2 .io in TLS SNI)
Выводы по эксперименту:
качество модели стало лучше, но с датасетом надо еще работать. «Глазами» изучить с первого раза все 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): 9999112clear as attack (FP-false positive): 3attack as clear (FN-false negative): 5attack as attack (TP-true positive): 880
accuracy = 0.9999precision = 0.9966recall = 0.9943f1-score = 0.9954
dataset_2.csv
clear as clear (TN-true negative): 9998235clear as attack (FP-false positive): 1attack as clear (FN-false negative): 34attack as attack (TP-true positive): 1730
accuracy = 0.9999precision = 0.9994recall = 0.9807f1-score = 0.9899
dataset_3.csv
clear as clear (TN-true negative): 9997651clear as attack (FP-false positive): 9attack as clear (FN-false negative): 83attack as attack (TP-true positive): 2257
accuracy = 0.9999precision = 0.9960recall = 0.9645f1-score = 0.98
dataset_4.csv
clear as clear (TN-true negative): 9999968clear as attack (FP-false positive): 1attack as clear (FN-false negative): 0attack as attack (TP-true positive): 31
accuracy = 0.9999precision = 0.9687recall = 1.0f1-score = 0.9841
dataset_5.csv
clear as clear (TN-true negative): 9999952clear as attack (FP-false positive): 1attack as clear (FN-false negative): 1attack as attack (TP-true positive): 46
accuracy = 0.9999precision = 0.9787recall = 0.9787f1-score = 0.9787
dataset_6.csv
clear as clear (TN-true negative): 5545538clear as attack (FP-false positive): 24attack as clear (FN-false negative): 56attack as attack (TP-true positive): 3353
accuracy = 0.9999precision = 0.9928recall = 0.9835f1-score = 0.9882
Время обучения модели 39 мин 58 сек, время классификации 55 млн. векторов – 7 мин 56 сек.
Эксперимент 4. Таблица ошибок «пропуска» цели.
ET JA3 Hash - [Abuse.ch] Possible Trickbot
ET INFO Packed Executable Download
ET INFO External IP Lookup ip-api.com
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI)
MultiProxy Firefox Add-ons
ET USER_AGENTS Suspicious User-Agent (Windows 10)
Trojan-PSW.Agent.HTTP.C&C
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent
ET INFO HTTP traffic on port 443 (HEAD)
ET INFO IP Check Domain (icanhazip. com in HTTP Host)
ET HUNTING DDoS-Guard Hosted Content
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI)
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com)
ET GAMES MINECRAFT Server response inbound
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI)
HackTool.Nmap.TLS.C&C
ET SCAN MS Terminal Server Traffic on Non-standard Port
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound
ET INFO SSH-2.0-Go version string Observed in Network Traffic
Browsec-VPN
ET INFO Go-http-client User-Agent Observed Outbound
ET DYN_DNS DYNAMIC_DNS HTTP Request to a 3322.net Domain *.3322.net
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1
Possible trojan activity (base64-encoded content)
Anonymizer detected
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client)
ET SHELLCODE Common 0a0a0a0a Heap Spray String
ET INFO ISO File Downloaded
Выводы по эксперименту:
на третьем временном интервале появились новые события безопасности, на которых обучения ML IDS не проводилось и классификатор из не "видит". В качестве эксперимента попробуем переобучить систему и добавить ошибочные вектора из файла dataset_3.
Эксперимент 5.
Исходными данными для эксперимента возьмем датасеты эксперимента 4 + добавим только ошибочные вектора (вектора с "пропуском" цели) из файла dataset_3.
Эксперимент 5. Оценка качества классификатора сетевого трафика.
Набор данных
Матрица ошибок
Показатели качества классификации
dataset_1.csv
clear as clear (TN-true negative): 9999111clear as attack (FP-false positive): 4attack as clear (FN-false negative): 3attack as attack (TP-true positive): 882
accuracy = 0.9999precision = 0.9954recall = 0.9966f1-score = 0.9960
dataset_2.csv
clear as clear (TN-true negative): 9998235clear as attack (FP-false positive): 1attack as clear (FN-false negative): 32attack as attack (TP-true positive): 1732
accuracy = 0.9999precision = 0.9994recall = 0.9818f1-score = 0.9905
dataset_3.csv
clear as clear (TN-true negative): 9997641clear as attack (FP-false positive): 19attack as clear (FN-false negative): 24attack as attack (TP-true positive): 2316
accuracy = 0.9999precision = 0.9918recall = 0.9897f1-score = 0.9908
dataset_4.csv
clear as clear (TN-true negative): 9999967clear as attack (FP-false positive): 2attack as clear (FN-false negative): 0attack as attack (TP-true positive): 31
accuracy = 0.9999precision = 0.9393recall = 1.0f1-score = 0.9687
dataset_5.csv
clear as clear (TN-true negative): 9999951clear as attack (FP-false positive): 2attack as clear (FN-false negative): 0attack as attack (TP-true positive): 47
accuracy = 0.9999precision = 0.9591recall = 1.0f1-score = 0.9791
dataset_6.csv
clear as clear (TN-true negative): 5545527clear as attack (FP-false positive): 35attack as clear (FN-false negative): 45attack as attack (TP-true positive): 3364
accuracy = 0.9999precision = 0.9897recall = 0.9867f1-score = 0.9882
Время обучения модели 39 мин 38 сек, время классификации 55 млн. векторов – 8 мин 12 сек.
Эксперимент 5. Таблица ошибок «пропуска» цели.
ET JA3 Hash - [Abuse.ch] Possible Trickbot
ET INFO Packed Executable Download
ET INFO External IP Lookup ip-api.com
ET INFO Observed Chocolatey Windows Package Management Domain (chocolatey .org in TLS SNI)
MultiProxy Firefox Add-ons
ET USER_AGENTS Suspicious User-Agent (Windows 10)
Trojan-PSW.Agent.HTTP.C&C
ET REMOTE_ACCESS AnyDesk Remote Desktop Software User-Agent
ET INFO HTTP traffic on port 443 (HEAD)
ET INFO IP Check Domain (icanhazip. com in HTTP Host)
ET HUNTING DDoS-Guard Hosted Content
ET INFO Observed Online Application Hosting Domain (supabase .co in TLS SNI)
ET EXPLOIT_KIT Balada Domain in TLS SNI (broworker10s .com)
ET GAMES MINECRAFT Server response inbound
ET INFO Observed FingerprintJS Domain (openfpcdn .io in TLS SNI)
HackTool.Nmap.TLS.C&C
ET SCAN MS Terminal Server Traffic on Non-standard Port
ET ATTACK_RESPONSE Eval Hex Obfuscated JS Inbound
ET INFO SSH-2.0-Go version string Observed in Network Traffic
Browsec-VPN
ET INFO Go-http-client User-Agent Observed Outbound
ET DYN_DNS DYNAMIC_DNS HTTP Request to a 3322.net Domain *.3322.net
ET ATTACK_RESPONSE Probably Evil Long Unicode string only string and unescape 1
Possible trojan activity (base64-encoded content)
Anonymizer detected
ET EXPLOIT Possible OpenSSL HeartBleed Large HeartBeat Response from Common SSL Port (Outbound from Client)
ET SHELLCODE Common 0a0a0a0a Heap Spray String
ET INFO ISO File Downloaded
Выводы по эксперименту 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 уровня сети.
В наших будущих публикациях постараемся ответить Вам, дорогие читатели, на эти вопросы. До скорой встречи!