Вкалывают роботы,
А не человек!
"До чего дошёл прогресс" Крылатов. Энтин
Сегодня на SOC forum рассказывал о машинном обучении для целей триажа алертов.
Выкладываю презентацию.
Было всего 15 минут, поэтому есть риск, что не успел донести даже то, что планировал. Попробую поправить ситуацию в этой заметке, написав текстом примерно то, что хотел рассказать (заголовок - это название слайда).
FP против FN
Для начала рассмотрим самый известный компромисс между пропусками и ложными срабатываниями.
Поскольку, чем заметнее зло, тем проще его обнаруживать и обезвреживать полностью автоматически, есть непреодолимое желание смещать свою способность обнаруживать автоматизированно (красный пунктир) в сторону абсолютно невидимого Зла.
Да, это позволит нам снизить Ошибочные пропуски (False negative, FN), но увеличит количество Ложных срабатываний (False Positive, FP), которые, несомненно отразятся на нашей операционной эффективности – нам нужно много людей на первой линии, которые будут заниматься триажем алертов….
Типовое применение МашОбуча
Есть два вида машинного обучения: без учителя и с учителем. Первое применимо для поиска похожего, второе - для профилирования и аномалий.
Но в обоих случаях типовое применение машинного обучения – это автоматизированное обнаружение. А так как оно автоматизировано, с философской точки зрения – не лишено все той же проблемы сложности обнаружения сценария скрытной и ранее неизвестной атаки, когда атака настолько уникальна, что не является похожей на что-либо, или не производит аномалий.
Другое применение МашОбуча
Прекрасно осознавая, как выглядят современные атаки, и понимая, что платой за возможность их обнаружить будет огромное количество алертов для анализа на линии SOC (так как мы хотим их обнаруживать, не хотим качеством обнаружения сервиса оплачивать наши же ресурсные проблемы!), мы задумались как разгрузить аналитиков с помощь того же Машобуча. Как решить проблему эффективного триажа? Как из образовавшегося потока алертов отфильтровать те, что являются ложными срабатываниями, и тем самым подойти к проблеме обнаружения не стороны перечисления зла, а со стороны фильтрации легитимной активности.
Так мы придумали Автоаналитика, чему и посвящен мой доклад.
Этапы пайплайна MDR
Сенсоры поставляют События, которые обрабатываются всевозможной детектирующей логикой, включая машинное обучение для целей обнаружения. В конечном счете на выходе – Алерты, представляющие из себя совокупность Событий, в которых Машина распознала что-либо подозрительное.
Аналитики получают эти алерты в IRP, смотрят на них. Если сразу понятно, что это фолса – закрывают. Если есть ощущение, что надо посмотреть более пристально – импортируют в Кейс.
Далее, работают по кейсу в IRP (идут в События, смотрят что было до, что было после, подшивают релевантные события, строят Timeline инцидента). Если после расследования понятно, что это не фолса, пишут описание для Заказчика и публикуют в Портал.
Мечты..., превращенные в цели
Достаточно весомая часть алертов закрываются аналитиками без импорта в кейс, это означает, что данных в алерте достаточно для его классификации аналитиком как ложное срабатывание. Поэтому, наверно, можно обучить Модель делать это за аналитика, и такого рода алерты вовсе не выдавать на анализ Человеку.
Этапы пайплайна MDR + ML
Модель встраивается в пайплайн таким образом. Будучи автоматом, Автоаналитк является частью пайплайна автообработки.
Прежняя детектирующая логика решает проблему пропусков (FN), а Автоаналитик быстрого триажа (фильтрации FP).
Входные данные
На слайде представлен пример реального алерта. Это массив JSON-объектов Событий, каждый объект имеет набор признаков со значениями. В качестве значений может быть что угодно: строка, число, дата, список.
Текущая агрегация
Алерт мы представляем вектором значений полей, причем, если какие-то значения встречаются несколько раз, выбирается наиболее популярное. Полученный вектор передаем на вход Модели.
FPR и TPR
У каждого классифицируемого нами алерта есть истинные классы True и False, и есть классы, предсказанные Моделью, тоже True и False. В таблице приведены все пересечения истинной и предсказанной Моделью разметки.
FPR показывает какой % из истинно ложных алертов Модель классифицировала как True инциденты. Идеальная ситуация, чтобы ложных срабатываний не было и FPR=0%.
TPR показывает какой % реальных инцидентов был распознан корректно. Идеальная ситуация, когда TPR = 100%.
ROC-кривая
Рассмотрим как меняются предсказания Модели в зависимости от Порога. На схеме "горбиками" показаны распределения истинных классов True и False, а жирный красный пунктир – наш порог принятия решения Моделью: все что справа от порога модель предсказывает как True, все что слева – False. На горбиках в зависимости от порога я отобразил уже знакомые нам множества ошибок - FP, FN и верных предсказаний - TP, TN. Горизонтально перемещая порог влево и вправо, мы можем получать разные метрики TPR и FPR.
Положения нашего Порога и получившиеся TPR и FPR удобно смотреть на ROC-кривой. ROC-кривая также характеризует качество модели – чем больше площадь под ней, тем модель работает лучше.
Схема потока алертов
Мы считаем, что все, что можно алгоритмизировать, должно быть автоматизировано! Поэтому у нас нет понятия "Первой линии SOC, отрабатывающей плейбук".
Весь поток алертов летит в Автоаналитика и чуть более трети он классифицирует как ложное срабатывание, а то, что превышает Порог и заданную Долю фильтрации – отправляет уже на разбор Человеку.
Маленькие ручейки в виде 3% и 5% - это потоки перепроверки, необходимых для постоянного контроля качества аналитиков.
Послесловие
Этот слайд очень важен, но все что нужно я на нем написал текстом, поэтому пояснений, думаю, не требуется.
Важной ссылкой о теме является доклад Даниила Удимова по этой же теме на профильной конференции.
Благодарности
Автоаналитик был придуман в 2017, а с 2018 уже использовался в сервисе. С тех пор он значительно изменился, и процесс его совершенствования не стоит на месте. Он - продукт труда целой команды выдающихся экспертов, которым спешу выразить безмерную благодарность, и надежду на долгое плодотворное сотрудничество как в данной, так и во многих других областях применения машинного обучения в нашем нелегком Security Operations. Ребята, спасибо Вам!