Построение ансамблевой модели для обнаружения и предотвращения сетевых вторжений

Все изображения, если не указано иное, принадлежат автору

Введение

Что происходит, когда киберпреступники сталкиваются с роботами? Что происходит, когда они используют роботов? Как будут развиваться наступательные и оборонительные стратегии кибербезопасности по мере развития искусственного интеллекта? И искусственный интеллект, и кибербезопасность из года в год неизменно занимают первые места в рейтингах самых быстрорастущих отраслей¹². Эти две области пересекаются во многих областях и, несомненно, будут продолжать делать это еще долгие годы. В этой статье я сузил область применения до конкретного варианта использования — обнаружения вторжений. Система обнаружения вторжений (IDS) — это программное обеспечение, которое отслеживает сеть компании на предмет вредоносной активности. Я погружаюсь в роль ИИ в системах обнаружения вторжений, кодирую свою собственную IDS с помощью машинного обучения и далее демонстрирую, как ее можно использовать для помощи охотникам за угрозами.

Определение проблемы

В последнее время менее половины компаний используют преимущества машинного обучения в своих системах обнаружения вторжений¹. Наиболее распространенные IDS основаны исключительно на методе, называемом «сопоставление подписи». Обнаружение вторжений на основе сигнатур находит «последовательности и шаблоны, которые могут соответствовать конкретному известному IP-адресу злоумышленника, хэшу файла или вредоносному домену»; однако он имеет значительные ограничения для обнаружения неизвестных атак². Многие киберпреступники понимают, как работает сопоставление сигнатур, и меняют свое поведение, чтобы избежать обнаружения. Хотя сопоставление сигнатур оказалось полезным, в постоянно меняющемся климате киберугроз оно само по себе не может быть решением. Скорее, сопоставление подписей должно быть дополнено более гибким решением: машинным обучением. Используя функции сетевого трафика, машинное обучение не только обнаруживает атаки, которые произошли ранее, но и достаточно динамично, чтобы обнаруживать совершенно новые атаки.

Конкретной проблемой, на которой я хотел сосредоточиться в своем алгоритме обнаружения вторжений, была оптимизация точности и отзыва. В контексте обнаружения вторжений ошибки могут иметь огромные издержки для организации. Ложный отрицательный результат может привести к необнаруженной бреши в системе с потенциально разрушительными последствиями. Слишком большое количество ложноположительных предупреждений о вредоносных образцах может подорвать доверие к системе и сбить критически важных сотрудников службы безопасности с тупиковой точки, заставив их потерять приоритеты и не смягчить фактические атаки. Количественная оценка и оптимизация этого компромисса — отдельный исследовательский проект, который, вероятно, зависит от организации. В этой статье я предполагаю, что ложноотрицательные результаты хуже, чем ложноположительные, но стараюсь свести к минимуму и то, и другое. Оценивая результаты, я пытаюсь количественно оценить эту взаимосвязь с точки зрения взвешенных затрат для организации, предполагая, что ложноотрицательные результаты стоят в два раза больше, чем ложноположительные.

Данные

Для этого проекта я использовал набор данных NSL-KDD³ ¹⁴, улучшенную версию набора данных Кубка KDD 1999 года³. Эти данные состоят из необработанного трафика tcpdump за 9 недель в локальной сети (LAN), которая имитировала среду локальной сети ВВС США. Функции в этом наборе данных созданы из необработанного tcpdump. Большинство описаний функций можно найти здесь и здесь. Каждая строка представляет образец сетевого трафика в данный момент времени, и каждый образец сети может быть помечен как Вредоносный или Безопасный и классифицирован по категориям атак DoS (отказ в обслуживании), R2L (от удаленного к локальному), U2R (Пользователь для рутирования) и Probe.

Связанных с работой

Этот проект вдохновлен книгой Машинное обучение и безопасность Кларенса Чио и Дэвида Фримана⁴. В главе «Анализ сетевого трафика» Чио и Фриман исследуют ансамблевый метод обнаружения вторжений. Конечным результатом стала система, которая работала очень хорошо с точки зрения отзыва, но не совсем соответствовала стандартам с точки зрения точности⁵. Моя система учитывает и реализует многие из их стратегий, совершенствуя их для оптимизации точности и отзыва. Результаты их ансамблевой модели, представленные ниже, будут служить в качестве основы.

Точность: 85 %

Методология

Выбор функции

  1. Классифицировать непрерывные, двоичные и номинальные столбцы
  2. Отбросьте все функции только с 1 значением. num_outbound_cmds имел только одно уникальное значение, поэтому я исключил его из набора данных.
  3. Проверять данные по типу атрибута (su_attempted должен быть двоичным атрибутом, но имеет 3 значения)
  4. Горячее кодирование категориальных переменных

Повторная выборка

Чтобы максимизировать отзыв и создать модель, адаптируемую к необычным и невидимым атакам, мне нужно убедиться, что эти необычные атаки лучше представлены в обучающих данных. Как видно выше, несмотря на то, что распределение вредоносных и безопасных меток довольно равномерное, в наших обучающих данных существует очень неравномерное распределение категорий атак. Чтобы увеличить представительство некоторых классов меньшинств и уменьшить представительство некоторых классов большинства, я использую подход повторной выборки, который сочетает в себе передискретизацию и недостаточную выборку⁵.

С помощью классов SMOTE¹⁰ и RandomUnderSampler¹¹ от Imbalanced-Learn у меня теперь есть сбалансированный тренировочный набор.

Прогнозирование категории атак — мультиклассовое моделирование

Я сосредоточен на обнаружении вторжений; однако определение правильной категории атак поможет охотникам за угрозами в предотвращении вторжений. Я перекрестно проверяю 4 модели классификации на обучающих данных, сравнивая точность.

Древовидные модели работали намного лучше, чем линейная модель (логистическая регрессия), причем XGBoost показал лучшие результаты.

Подгоняя модель XGBoost ко всей обучающей выборке и прогнозируя результаты теста, я получаю следующее:

Точность: 79 %

XGBoost отлично справляется с идентификацией Probe и DoS-атак, но ему не хватает отзыва, когда речь идет о R2L и U2R, которые были меньше представлены в начальном обучающем наборе. Ресэмплинг помог улучшить это; однако атрибуты обучения для этих классов не были достаточно репрезентативными для тестовых данных.

Сопоставление категорий атак с вредоносными и доброкачественными, вот бинарные результаты:

Точность: 81 %

Многоклассовая классификация категорий атак хорошо справляется с идентификацией категорий атак; однако его отзыв для выявления вредоносных образцов слишком низок. Я решил больше сосредоточиться на обнаружении вторжений, чем на классификации атак, но все же оценил приведенные выше результаты при выборе алгоритма. Я буду использовать это в качестве основы для продвижения вперед, а также включу в панель инструментов.

Обнаружение вторжений — двоичная классификация

Сокращение возможностей

Я решил уменьшить количество функций с помощью SelectPercentile⁶, выполняя тесты ANOVA и возвращая F-значения для функций, чтобы определить их независимую релевантность целевому вектору. После некоторых экспериментов я решил оставить лучшие 33% функций в соответствии с их F-оценкой.

Показатели для выбора модели

Поскольку я планирую оптимизировать точность и полноту в контексте обнаружения вторжений, важно, чтобы производительность модели была максимальной при всех пороговых значениях. Таким образом, рабочая характеристика приемника (ROC) Площадь под кривой (AUC) является подходящей метрикой, которую следует максимизировать при выборе модели. Кривая ROC отображает процент истинно положительных результатов (TRR) в сравнении с коэффициентом ложных срабатываний (FPR). Площадь под этой кривой, по сути, покажет нам вероятность того, что случайно выбранный вредоносный пример имеет более высокий балл, чем случайно выбранный доброкачественный пример.

После сравнения AUC разных моделей с использованием 5-кратной перекрестной проверки модели леса превзошли другие, особенно XGBoost.

Ниже я настроил конвейер для стандартизации функций, уменьшения их с помощью SelectPercentile и сопоставления данных с классификатором XGBoost.

Выбор порога

Я разделяю данные на обучающие и проверочные, подгоняю модель к обучающим данным и строю ROC-кривую результатов проверки.

Помните, что цель состоит в том, чтобы максимизировать точность и припоминание, уделяя больше внимания припоминанию. Это сведет к минимуму количество атак, которые проходят через систему обнаружения, не жертвуя целостностью алгоритма, помечая слишком много ложных срабатываний. Как показано выше, я могу настроить порог, чтобы улучшить процент истинных положительных результатов без значительного увеличения количества ложных положительных результатов. Установка порога с истинно положительным показателем 1 означает отсутствие ложноотрицательных результатов; следовательно, модель помечает каждый отдельный вредоносный образец. При этом я выбрал оптимальный порог 0,0050058886, создав полноту проверки 100% и точность 98%. При прогнозировании вредоносных сэмплов это означает, что любой сэмпл, который имеет вероятность быть вредоносным не менее 0,5 % в соответствии с вероятностями прогноза модели, помечается как вредоносный.

Посмотрим на результаты тестирования этой модели с уточненным порогом.

Точность: 90 %

На данный момент модель показывает улучшение точности на 5% по сравнению с моделью Чио/Фримена, с улучшением точности на 16% и снижением полноты на 6%.

Я хочу продолжить изучение способов улучшения отзыва при сохранении высокой точности. Размышляя о шаблонах кибератак, многие злоумышленники создают новое вредоносное ПО, которое либо немного отличается от предыдущей версии, либо сильно отличается, либо представляет собой совершенно новый эксплойт нулевого дня. Итак, как алгоритм машинного обучения может пометить эти экземпляры, которые не представлены в обучающих данных? Я поворачиваюсь к обнаружению аномалий. Поэкспериментировав со множеством различных алгоритмов, я решил, что кластеризация — лучший подход.

Кластеризация

Моя цель — дополнить модель классификации моделью кластеризации. В идеале модель кластеризации могла бы выявить некоторые образцы вредоносного ПО, которые были неправильно помечены моделью классификации. В этой модели более важно сбалансировать точность и полноту, потому что кластеризация сможет хорошо дополнить классификацию только в том случае, если ее прогнозы достаточно точны, чтобы переопределить прогнозы классификатора. Чтобы максимизировать точность и полноту в этом контексте, я обращаюсь к F1 Score.

Во-первых, я рисую классы тренировочного набора в двумерном векторном пространстве.

На первый взгляд кластеры выглядят не очень четко определенными, но потенциально я мог бы использовать кластеризацию для обнаружения некоторых очевидных выбросов.

Затем я подогнал простую двухкластерную модель K-средних, используя анализ основных компонентов (PCA) для уменьшения размерности.

Двухкластерная модель плохо представляет реальные классы. Мой следующий подход состоит в том, чтобы поэкспериментировать с большим количеством кластеров и оптимизировать стратегию, которая сопоставит их со злонамеренными или безопасными.

После многих итераций по количеству кластеров и параметрам стратегии я подогнал модель из 27 кластеров.

Кластеры здесь выглядят гораздо более центрированными и отчетливыми, чем модель с двумя кластерами. Итак, какова была моя стратегия и как сопоставить эти кластеры с метками классов безвредных и вредоносных? Оба вопроса имеют 1 ответ:

Вдохновленный Chio и Freeman⁴, этот метод сопоставления кластеров включает обнаружение аномалий и маркировку большинства вредоносных образцов.

Стратегия:

  • Если процент вредоносного трафика в кластере превышает 95 %, все экземпляры в кластере помечаются как вредоносные.
  • Если размер кластера по отношению к общей численности меньше 0,1 %, все экземпляры в кластере помечаются как вредоносные.

Это отличается от модели Чио и Фримана, поскольку уточняет параметры количества кластеров, процента вредоносного трафика и относительного размера кластера, чтобы максимизировать оценку F1. Кроме того, мой подход фокусируется только на маркировке вредоносных экземпляров и не использует модели машинного обучения для каждого кластера⁴.

Каждую вредоносную метку из этой стратегии можно отследить либо до кластера с большинством вредоносных программ, либо до выброса, что позже будет полезно для интерпретируемости модели. После сопоставления кластеров в соответствии с этой стратегией, вот параллельное сравнение прогнозируемых значений с фактическими значениями в двумерном векторном пространстве.

После сопоставления прогнозы и метки выглядят практически идентичными.

Создайте ансамблевую модель: объедините классификацию и кластеризацию

Я комбинирую модель XGBoost с моделью K-Means, переписывая все случаи, когда XGBoost помечал образец как безопасный, а подход K-Means помечал образец как вредоносный.

Оценка

Окончательные результаты модели следующие:

Точность: 90 %

Добавление кластеризации в модель XGBoost улучшило отзыв вредоносного трафика при сохранении точности. Алгоритм обнаружил 109 новых вредоносных атак по небольшой цене всего лишь 5 ошибочных маркировок; таким образом, повышенная производительность классификатора без ухудшения его целостности

Прежде чем я сравню эту модель с другими базовыми моделями, которые я обсуждал, важно определить функцию стоимости. Стоимость или воздействие кибератаки — это целая область исследований, которая включает в себя множество переменных. С целью в конечном итоге расширить это исследование в будущем функция стоимости, которую я определяю в этой статье, является временной эвристикой.

Основываясь на логике, согласно которой необнаруженная кибератака хуже ложной тревоги, я предполагаю, что ложный отрицательный результат в два раза дороже, чем ложный положительный результат. Я предполагаю, что средняя ложная тревога обходится организации в 1000 долларов; поэтому средняя необнаруженная кибератака стоит в два раза больше и составляет 2000 долларов.

Результаты

Если двигаться слева направо, становится очевидным, что многоклассовый предсказатель XGBoost, сопоставленный с двоичными метками, имеет самую высокую точность — 97%. К сожалению, эта модель уступает во всех остальных областях. При сравнении ансамблевой модели с основным базовым уровнем модели Чио Фримена наблюдается повышение точности на 16 %, что означает повышение достоверности помеченных образцов системы обнаружения вторжений. Модель Chio Freeman по-прежнему превосходит другие модели по запоминаемости с показателем 97%, а моя ансамблевая модель — с показателем 92%. Я считаю, что в этой области еще есть возможности для совершенствования. Оценка F1 для ансамблевой модели превосходит другие, а модель XGBoost с пороговым значением следует за ней с показателем 0,91. Ансамблевая модель превзошла базовый уровень Чио Фримена на 0,05. Высокая оценка F1 достигает моей цели оптимизации точности и отзыва. Модель ансамбля и модели XGBoost с пороговым значением очень похожи по точности, с округленной точностью 90% для каждой. Наконец, ансамблевая модель превзошла остальные по взвешенной стоимости: на 220 000 долларов дешевле, чем модель следующего лучшего исполнения, и на 540 000 долларов дешевле, чем модель Чио Фримена.

Обсуждение

Хотя моя модель действительно оптимизировала точность и полноту, достигнув наивысшего балла F1, у меня нет конкретного измерения для оптимизации этих показателей в контексте обнаружения вторжений. Имейте в виду, что моя функция стоимости является временной эвристикой. Различные категории атак, сетевые архитектуры, системы и организации имеют разную стоимость. Все это должно учитываться при моделировании новой функции затрат. Например, зондирующие атаки обычно не обходятся организации слишком дорого, потому что они обычно используются для наблюдения за сетью, а не для ее взлома. Кроме того, успешная DoS-атака может стоить Facebook 3 миллиона долларов, в то время как местной сети кофеен она обойдется всего в 2000 долларов. Поскольку не все эти данные легко доступны, моими следующими шагами будет исследование средней стоимости каждой категории атак и включение ее в расчеты. В послесловии я бы скорректировал стоимость ложных срабатываний, приняв во внимание средние затраты на рабочую силу, альтернативные издержки отсутствия фактических атак и, возможно, даже стоимость обесценившейся уверенности в модели.

Объяснимость

Теперь моя система неплохо справляется с выявлением атак. Следующим шагом является автоматизированное объяснение этих прогнозов, которое может помочь киберзащите защитить их инфраструктуру. Объяснимые системы обнаружения вторжений могут указать охотникам за угрозами правильное направление.

Используя библиотеку python streamlit¹³, я создал приборную панель для проверки концепции, показывающую, как система обнаружения вторжений может также служить системой предотвращения вторжений, помечая атаки, приоритизируя их по риску и рекомендуя конкретные пути исправления для охотники за угрозами.

Интерпретация моделей

Чтобы объяснить злонамеренное предсказание модели ансамбля, я должен автоматически интерпретировать как классификатор XGBoost, так и алгоритм кластеризации K-Means.

XGBoost. Для XGBoost одним из вариантов является извлечение важности функций и, возможно, подгонка линейной модели к данным, чтобы помочь определить направленность. В сложной модели леса, такой как XGBoost, это не лучшее представление базовой модели. Идеальной интерпретацией модели XGBoost было бы построение лесов деревьев решений; однако построить полную сложную диаграмму леса было бы сложно, и это было бы нецелесообразно для групп безопасности, которые должны работать в быстром темпе. Я обратился к программному пакету LIME (Local Interpretable Model-Agnostic Explanations), который аппроксимирует поведение модели вблизи конкретного экземпляра⁸. Я выбрал LIME, потому что он разбивает сложные модели на локальные приближения и оценки, которые легко понять.

Для моего IDS LIME может дать локальные пояснения по образцам XGBoost, помеченным как вредоносные. На приведенной ниже диаграмме показаны 10 наиболее важных признаков при маркировке конкретной выборки, веса признака и направленности.

Для прогнозирования категории я использую мультиклассовую модель XGBoost, обсуждавшуюся ранее.

К-средних. Для интерпретации модели К-средних я сначала идентифицирую прогнозируемый кластер. Затем я строю тепловую карту каждого из центров кластеров, показывая относительные значения всех функций и выделяя кластер для этой выборки. Высокое значение признака в векторе центра кластера в абсолютном выражении считается важным признаком и включается в таблицу значений признаков.

Для прогнозирования категории я беру наиболее распространенную категорию атак в каждом кластере, если только это не исключительный кластер.

Риск

Я рассчитываю риск как прогнозируемую моделью XGboost вероятность того, что образец является вредоносным, со стандартными значениями от 1 до 10. Я сопоставляю эти оценки риска с серьезностью в соответствии с картами серьезности воздействия CVSS v3.0 Национальной базы данных уязвимостей⁹.

Сопоставление оценок риска с их серьезностью для тестовой популяции приводит к следующему распределению.

Здесь есть много критических флагов серьезности, следующим по величине является Низкий. Панель мониторинга предоставляет охотникам за угрозами возможность фильтрации по степени серьезности, что позволяет им расставлять приоритеты для флагов с более высокой степенью серьезности.

Исправление

Последний шаг в превращении системы обнаружения вторжений в систему предотвращения вторжений — указать правильное направление охотникам за угрозами и предложить путь исправления. Охотники за угрозами, скорее всего, могут получить общее представление о том, как была обнаружена атака, и о корне проблемы, взглянув на важные функции, выделенные на гистограмме или тепловой карте. В дополнение к этим диаграммам на информационной панели представлены значения для трех наиболее важных функций и категории атаки, к которой, вероятно, относится образец. Для каждой категории атак я предоставил путь исправления, который предлагает действия, которые должны предпринимать охотники за угрозами или аналитики безопасности при проверке и устранении каждой атаки.

От начала до конца панель инструментов позволяет любому охотнику за угрозами быстро обнаруживать атаки, расставлять приоритеты, определять ключевые функции для расследования, прогнозировать категорию указанной атаки и предлагать стратегию исправления для этой конкретной атаки.

Здесь я рассмотрю пару примеров того, как можно использовать панель инструментов.

Пример 1

В этом примере охотник за угрозами хочет сосредоточиться на критических атаках. Он фильтрует серьезность до критической и выбирает помеченный образец сетевого трафика. Этот образец имеет максимально возможный балл риска — 10. Скорее всего, это атака типа «отказ в обслуживании», что имеет смысл для охотника за угрозами, поскольку он может видеть, что было 255 подключений к одному и тому же IP-адресу назначения («dst_host_count»). Следуя предложению приборной панели, охотник за угрозами исследует эти подключения в журналах сетевого трафика, подтверждая, что они исходят от известного ботнета, и подтверждает, что это атака типа «отказ в обслуживании». Он немедленно уведомляет службу реагирования на инциденты и службу сетевой безопасности, чтобы они заблокировали эти соединения и перенаправили трафик.

Пример 2

Позаботившись о проблемах с высоким приоритетом в течение дня, аналитик по безопасности получает задание исследовать некоторые из вопросов с более низким приоритетом, которые некоторое время находились в очереди. Он замечает, что этот образец является выбросом, и хочет продолжить расследование. Следуя совету панели управления, он выясняет, какие функции могли привести к тому, что этот трафик был помечен. Он считает, что неудачная попытка входа в систему усилила подозрения системы. Он отслеживает активность этого пользователя и замечает больше неудачных попыток входа в систему, часто в нерабочее время и посредством удаленного подключения. Аналитик работает с системным администратором, чтобы усилить безопасность сервера, требуя удаленного подключения через сервер перехода и добавляя двухфакторную аутентификацию. Количество неудачных попыток входа уменьшается в течение следующей недели.

Обсуждение

Отмечая области для улучшения панели мониторинга и модели объяснимости, я хочу сослаться на расчет оценки риска, мультиклассовую модель, согласование пути исправления и создание готовой панели мониторинга.

Я использовал временную эвристику для измерения риска. Это должно быть скорректировано в соответствии с отраслевыми стандартами и взвешено по-разному в зависимости от категории атаки и хост-системы. Кроме того, должен быть лучший метод количественной оценки риска для прогнозов K-средних.

Еще одним следующим шагом будет улучшение многоклассовой модели XGBoost, которая прогнозирует категорию атаки. Я решил больше сосредоточиться на обнаружении вторжений, чем на классификации атак, но в итоге я включил мультиклассовую модель в информационную панель, чтобы помочь охотникам за угрозами. Один из способов улучшить модель — убрать из обучающей выборки безопасные примеры и пометить только вредоносные образцы, поскольку для этого у меня уже есть IDS. Улучшение этой модели дает наибольшую выгоду при наименьших усилиях и повысит уверенность в прогнозируемых категориях панели мониторинга и путях исправления.

Говоря об этом, пути исправления должны быть определены экспертами в предметной области. Пока я писал исправления, насколько мне известно, я хотел бы получить мнение опытного аналитика угроз, чтобы уточнить рекомендации и предложить новые.

Последним шагом, если вы строите это для организации, будет настройка панели мониторинга в производственной среде. Это будет означать настройку ETL для извлечения соответствующих функций из сетевого трафика системы, потоковой передачи их на панель мониторинга, обновления панели мониторинга в режиме реального времени и включения цикла обратной связи для повторной настройки модели.

Заключение

С ансамблевой моделью я достиг своей цели по оптимизации точности и отзыва. Используя расширенный ансамбль, сочетающий XGBoost с K-Means, я смог превзойти других в ряде областей, включая определенный мною показатель взвешенной стоимости. Поскольку некоторые модели по-прежнему имели преимущества перед моей, а метрика взвешенной стоимости является субъективной эвристикой, я не могу объективно утверждать, что моя модель в целом превосходит другие. Тем не менее, заявленные цели модель выполнила.

Я считаю, что основной вывод из этого проекта заключается в том, что искусственный интеллект — ценный инструмент, который может помочь командам по кибербезопасности, когда дело доходит до обнаружения вторжений. Машинное обучение — это надежное решение для методов предотвращения IDS и новых участников угроз в этой области. Кроме того, эти модели могут быть связаны с группами безопасности, чтобы помогать друг другу. Они способны обнаруживать большое количество угроз, которые люди не могут смоделировать самостоятельно, указывать охотникам за угрозами правильное направление и учитывать отзывы пользователей для адаптации к новым сценариям.

Так что же происходит, когда киберпреступники сталкиваются с роботами? Вопрос следует переформулировать. ИИ примечателен своей способностью обнаруживать большое количество угроз, но у него есть много недостатков, таких как деградация модели, подверженность отравлению и взлому, а также неспособность автоматически устранять сложные или невидимые атаки. Людям не хватает способности обрабатывать такой большой объем данных в режиме реального времени, но они обладают творческим потенциалом и деловой хваткой, необходимыми для преследования и предотвращения некоторых из самых изощренных киберпреступников. Модели машинного обучения могут заполнить многие пробелы в командах реагирования на кибератаки и наоборот. И системы обнаружения вторжений, и охотники за угрозами дополняют друг друга, создавая еще более мощную систему. Таким образом, вопрос должен звучать так: «Что происходит, когда киберпреступники сталкиваются с киборгами?» Когда люди и ИИ работают вместе для защиты от киберпреступлений, злоумышленникам ответ, вероятно, не понравится.

Ссылка на код

Ссылка на панель управления

"Мой веб-сайт"

Ссылки

  1. Фельдман, Сара и Феликс Рихтер. Обнаружение вторжений в систему безопасности — самое популярное приложение ИИ в 2018 году. Инфографика Statista, Statista, 5 апреля 2019 г., https://www.statista.com/chart/17630/artificial-intelligence-use-in-business/.
  2. Резек, Майкл. В чем разница между системами обнаружения вторжений на основе сигнатур и на основе поведения? Accedian, Accedian, 29 июня 2022 г., https://accedian.com/blog/what-is-the-difference-between-signature-based-and-behavior-based-id/.
  3. Mahbod Tavallaee et al., «Подробный анализ набора данных KDD CUP 99», Proceedings of the 2nd IEEE Symposium on Computational Intelligence in Security and Defense Applications (2009): 53–58.
  4. Чио, Кларенс и Дэвид Фримен. Машинное обучение и безопасность: защита систем с помощью данных и алгоритмов. О'Рейли Медиа, Инкорпорейтед, 2018.
  5. Чио, Кларенс. Book-Resources/NSL-KDD-Classification.ipynb в Master · Oreilly-MLSEC/Book-Resources. GitHub, Oreilly, https://github.com/oreilly-mlsec/book-resources/blob/master/chapter5/nsl-kdd-classification.ipynb.
  6. Sklearn.feature_selection.Selectpercentile. Scikit, Scikit-Learn, https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectPercentile.html.
  7. https://pixabay.com/illustrations/technology-sci-fi-futuristic-7111801/
  8. Локальные интерпретируемые модельно-независимые объяснения (LIME)¶. Local Interpretable Model-Agnostic Explanations (Lime) — Lime 0.1 Documentation, GitHub, https://lime-ml.readthedocs.io/en/latest/.
  9. Метрики уязвимости. НВД, НВД, https://nvd.nist.gov/vuln-metrics/cvss.
  10. Смот. SMOTE — версия 0.9.1, Imbalanced-Learn, https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html.
  11. Случайный андерсэмплер. RandomUnderSampler — версия 0.9.1, Imbalanced-Learn, https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.RandomUnderSampler.html.
  12. Элиас, Над и др. Самые растущие отрасли занятости: искусственный интеллект, наука о данных и кибербезопасность. RecruitAbility, RecruitAbility, 23 марта 2020 г., https://www.therecruitability.com/ai-data-science-and-cybersecurity-americas-fastest-growing-jobs-sectors/.
  13. Документы Streamlit. Документация Streamlit, Streamlit, https://docs.streamlit.io/.
  14. Набор данных NSL-KDD. Университет Нью-Брансуика, оценка 1785 года, UNB, https://www.unb.ca/cic/datasets/nsl.html.