Существует два основных подхода при обнаружении угроз — сигнатурный и «аномальный». В первом случае мы начинаем с моделирования плохого поведения, а затем сравниваем с ним, ища совпадения в сетевом трафике, в журналах событий, в поведении процессов и т. п.
При данном подходе очень важно заранее знать, что такое плохо! Во втором случае мы начинаем с моделирования хорошего поведения и затем смотрим на отклонения от него; также в сетевом трафике, в логах, в поведении и т. п.
В этой ситуации очень важно знать, что такое хорошо! При этом в обоих вариантах важно учитывать:
Если текущие варианты не способны эффективно бороться с новыми и неизвестными ранее угрозами, то что нам позволит это сделать? Ответ есть — машинное обучение! Но чтобы разобраться с тем, насколько оно эффективно и как его применять на практике, надо немного погрузиться в теорию.
НЕМНОГО ТЕОРИИ
Начнём с развенчания мифа, что систему на базе машинного обучения, в отличие от антивируса, не надо обновлять. Это не так — в любой системе машинного обучения есть два больших блока — собственно само обучение и исполнение, которые часто и объединяют под общим термином «машинное обучение». Заметьте, в процессе исполнения система, или, иными словами, модель, уже не учится. И если она делает ошибку на одних входных данных, то она будет делать ошибку и на других входных данных, пока не будут внесены изменения в саму модель. В отличие от человека, который учится в процессе работы, машинное обучение является итеративным. Обучили модель — запустили в работу — нашли ошибки и неточности — снова стали обучать — снова запустили в работу. Когда говорят, что машинное обучение не требует обновления, как сигнатурные механизмы, это некоторое лукавство. Модель надо регулярно дообучать на новых данных.
Жизненный цикл системы защиты на базе машинного обучения выглядит следующим образом:
Машинное обучение позволяет сделать правильный вывод, опираясь на качественный датасет, который является одним из залогов успеха в обнаружении новых угроз. Чем больше и разнообразнее набор обучающих данных, тем точнее будет результат обнаружения. Чтобы научиться определять спам, нам нужны десятки и сотни тысяч электронных сообщений для анализа. Чтобы научиться предсказывать поведение пользователя, нужно отслеживать все его действия в течение нескольких недель (и ещё делать контрольное обучение в атипичное время — предотпускное, послеотпускное, перед корпоративом и т. п.).
Хороший датасет очень ценится, и они являются лакомым куском для любой компании, которая занимается машинным обучением. Сегодня в Интернете можно найти немало таких датасетов в различных областях, но в области информационной безопасности их почти нет. Вы не можете его купить, вы не можете его получить у какой-либо ИБ компании, так как такая база является конкурентным преимуществом. Обычно датасеты хранятся в тайне, в отличие от тех же алгоритмов машинного обучения, которые часто раскрываются разработчиками. Однако бывают и исключения. Например, Splunk выложил в Интернет датасеты для изучения и тестирования своего продукта, но можно ли считать его подходящим для тестирования других средств защиты и построения собственной системы мониторинга на базе машинного обучения? На самом деле я бы не рассчитывал в обозримом будущем на чужие датасеты, а рекомендовал бы формировать собственную обучающую выборку, на которой и учить модели машинного обучения. У вас же есть сетевой трафик, вредоносные файлы, URL, электронная почта, действия пользователей? Собирайте их и обрабатывайте.
В качестве примера покажу, какой объём данных собирает Cisco в течение всего одних суток:
Это большой объём данных, но, прежде чем их подавать в модель машинного обучения, необходимо их предварительно обработать, так как модель не понимает разницы между шумом и полезными данными. Кроме того, надо помнить, что в датасеты могут быть целенаправленно внесены некорректные или фальшивые данные, чтобы обмануть систему. Поэтому так важна предварительная обработка, в рамках которой мы выделяем так называемые признаки, например доменное имя, отправителя email или IP-адреc. На самом деле таких атрибутов может быть очень много, и зависят они от того, какую систему мониторинга мы будем строить/использовать. Например, для системы мониторинга сетевых аномалий (NTA или NDR) к таким признакам могут быть отнесены:
и др.
У решений класса EDR (Endpoin Detection & Response) признаков больше 400 — это метаданные, ассоциированные с анализируемым файлом, — наличие сетевых подключений, нестандартные протоколы, использование определённых вызовов, внесение изменений в файловую систему, разработка под определённую архитектуру, обращения к реестру, поддерживаемые языки, работа с оперативной памятью и жёстким диском, запуск других процессов и т. д.
А, например, при мониторинге DNS-запросов с точки зрения ИБ мы должны обращать внимание на следующие признаки:
После выбора признаков мы переходим к этапу, который чаще других ассоциируется с термином «машинное обучение», а именно к выбору соответствующей модели, который всегда будет являться балансом между скоростью работы, аккуратностью предсказания и сложностью модели. При этом помните, что ошибки будут присутствовать всегда. Не получилось с одной моделью, попробуйте другую. Не бывает единственно правильного или универсального алгоритма — исходную задачу можно решить разными способами, от выбора которых будет зависеть точность и скорость решения. Если вам нужно оперативное обнаружение в близком к реальному времени, вы выберете одну модель, для ретроспективного анализа постфактум — другую.
Стоит помнить, что вам нужно правильно выбрать все три элемента — датасет, признаки и алгоритмы. При этом датасет является самым важным. Если обучающая выборка мала, неполна или некачественна, то никакая модель не поможет.
МОДЕЛИ МАШИННОГО ОБУЧЕНИЯ
Наиболее популярным классом машинного обучения является обучение с учителем (supervised machine learning). Эти алгоритмы используются в тех случаях, когда у вас достаточно простые данные и понятные признаки. Например, блокирование платёжной карты после снятия наличных за границей. Тут всё просто. Обычно все ваши транзакции проходят в домашнем регионе, а тут аномалия — внезапное (если вы не предупредили свой банк о поездке) снятие наличных за пределами страны. Наверное, до 75% всех алгоритмов машинного обучения, используемые в том числе и в ИБ, — это нестареющая классика, то есть обучение с учителем, с помощью которого можно быстро решить нужную задачу.
Самыми популярными моделями являются классификация и регрессия. Первая позволяет предсказать категорию событий (например, конкретных угроз), а регрессия — предсказать значение. Например, если вам нужно предсказать, когда у вас будет рост атак, то вам нужна регрессия, а если вы хотите понять, каких атак у вас будет больше через полгода, то вам нужна классификация. С помощью машинного обучения с учителем можно выявлять заражение вредоносным кодом, взаимодействие с командным C2-сервером, загрузку вредоносного кода, фишинг и спам, DGA-домены и т. п. В этих моделях кто-то должен дать на вход модели уже размеченные данные (опять возвращаемся к важности датасета и разметки). Например, сказать: это спам, а это нет; это DDoS, а это просто новогодний всплеск заказов; это фрод, а это обычная транзакция.
Что делать, когда у нас нет размеченных данных? В этом случае нам поможет обучение без учителя (unsupervised machine learning), которое позволяет искать структуру и зависимости в неразмеченных данных и делать выводы на их основе. Если обучение с учителем позволяет выявлять новые, но всё-таки ранее известные типы угроз, то обучение без учителя фокусируется на угрозах неизвестных, например, расширение плацдарма злоумышленников в инфраструктуре (lateral movements), утечки данных, аномальный доступ к различным сервисам и серверам.
Представим себе, что мы фиксируем четыре неудачных попытки входа под одной учётной записью. Это явное нарушение, так как у нас в политике стоит ограничение в три попытки. Для обнаружения четырёх и более неудачных попыток не требуется машинное обучение. Активность одной учётной записи из разных географических точек в течение одних суток может означать вредоносную активность. А может и нет, если вы, например, полетели в командировку и заходили в какую-либо систему, например, из Москвы, Лондона, Нью-Йорка и Чикаго в течение суток (это, кстати, вполне возможно). По этой причине банки часто блокируют карточные транзакции, считая их фродом. Для обнаружения такой активности также не требуется машинное обучение. А вот доступ из непривычного места уже требует — тут как раз поможет кластеризация, для которой такая попытка будет рассматриваться как аномалия. Причём может оказаться, что это даже не кража учётной записи, а пользователь дал добро какому-то приложению через OAuth подключаться к облачному сервису и благополучно забыл об этом.
Вы не можете сказать, где провести грань между нормальным и аномальным числом удаляемых из облака или скачиваемых по локальной сети на один компьютер файлов. Вы можете только сравнивать между собой этот признак у разных пользователей и групп пользователей, выявляя тем самым нормальное и аномальное поведение, что и помогает делать машинное обучение без учителя.
Какие ещё сценарии можно назвать для систем машинного обучения без учителя? Вот только некоторые примеры:
МОЖНО ЛИ СВОИМИ СИЛАМИ?
И вот тут мы подошли к самому главному. Как получить максимальную пользу от машинного обучения при мониторинге угроз? Я бы начал с ответа на три ключевых вопроса, с которых начнется длинный путь:
После ответов на эти вопросы перед вами откроется две дороги — строить собственную систему машинного обучения или купить готовое решение. Первый путь откроет новый набор вопросов:
Непростые вопросы, не так ли? Второй путь может показаться более простым, но стоит помнить, что и он не устлан розами и лилиями и многие производители часто обманывают или не говорят всей правды своим клиентам, которые повелись на рекламу о применении машинного обучения для обнаружения угроз. В этом случае я бы задал вендору свою порцию вопросов:
В заключение хочу отметить, что раньше люди покупали SIEM, чтобы снизить необходимость написания сигнатур для систем обнаружения атак, а также снизить число ложных срабатываний у них. Сейчас люди покупают или строят машинное обучение, чтобы не писать правила для SIEM или снизить число ложных срабатываний в них. Что дальше?
Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных
Отправляя данную форму вы соглашаетесь с политикой конфиденциальности персональных данных