Что надо знать, если вы решили применить машинное обучение при мониторинге угроз

BIS Journal №4(43)/2021

29 ноября, 2021

Что надо знать, если вы решили применить машинное обучение при мониторинге угроз

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

При данном подходе очень важно заранее знать, что такое плохо! Во втором случае мы начинаем с моделирования хорошего поведения и затем смотрим на отклонения от него; также в сетевом трафике, в логах, в поведении и т. п.

В этой ситуации очень важно знать, что такое хорошо! При этом в обоих вариантах важно учитывать:

  • сложно моделировать то, чего вы не знаете (как с хорошей стороны, так и с плохой);
  • если моделирование происходит при изначально плохом поведении (идут атаки, происходят мошеннические операции, пользователи нарушают политику ИБ), то система будет рассматривать это поведение как норму и не будет выявлять в будущем схожие ситуации;
  • окружение может заставить пользователей или иных субъектов вести себя аномально под влиянием внутренних или внешних факторов (авральная сдача проекта к сроку, отсутствие обучения и т. п.).

Если текущие варианты не способны эффективно бороться с новыми и неизвестными ранее угрозами, то что нам позволит это сделать? Ответ есть — машинное обучение! Но чтобы разобраться с тем, насколько оно эффективно и как его применять на практике, надо немного погрузиться в теорию.

 

НЕМНОГО ТЕОРИИ

Начнём с развенчания мифа, что систему на базе машинного обучения, в отличие от антивируса, не надо обновлять. Это не так — в любой системе машинного обучения есть два больших блока — собственно само обучение и исполнение, которые часто и объединяют под общим термином «машинное обучение». Заметьте, в процессе исполнения система, или, иными словами, модель, уже не учится. И если она делает ошибку на одних входных данных, то она будет делать ошибку и на других входных данных, пока не будут внесены изменения в саму модель. В отличие от человека, который учится в процессе работы, машинное обучение является итеративным. Обучили модель — запустили в работу — нашли ошибки и неточности — снова стали обучать — снова запустили в работу. Когда говорят, что машинное обучение не требует обновления, как сигнатурные механизмы, это некоторое лукавство. Модель надо регулярно дообучать на новых данных.

 

Жизненный цикл системы защиты на базе машинного обучения выглядит следующим образом:

  • Загрузка обучающих данных, так называемого датасета.
  • Предварительная обработка датасета.
  • Извлечение так называемых признаков. Это один из самых важных этапов большинства алгоритмов машинного обучения, который позволяет превратить сырые данные в информацию, которую может обрабатывать модель, на основе которой он и будет принимать решения на новых, неизвестных данных.
  • Выбор алгоритма или модели машинного обучения.
  • Тренировка модели, используя датасет и извлечённые из него признаки.
  • Повтор для поиска лучшей модели. Перед тем как мы выберем наиболее эффективную модель, нам придётся перепробовать многие из них, так как большинство из них может решить поставленную задачу, но с разным результатом — какая-то модель делать это быстрее, но менее точно; какая-то будет обнаруживать угрозы точнее, но медленнее. Мы можем упростить модель, снижая число признаков, или усложнить её, добавив новые признаки, новые источники данных или скомбинировав модели.
  • Интеграция лучшей модели в «боевую» систему.
  • Запуск системы в промышленную эксплуатацию и подача ей на вход реальных данных.
  • По мере появления новых угроз возврат к первому этапу.

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

Хороший датасет очень ценится, и они являются лакомым куском для любой компании, которая занимается машинным обучением. Сегодня в Интернете можно найти немало таких датасетов в различных областях, но в области информационной безопасности их почти нет. Вы не можете его купить, вы не можете его получить у какой-либо ИБ компании, так как такая база является конкурентным преимуществом. Обычно датасеты хранятся в тайне, в отличие от тех же алгоритмов машинного обучения, которые часто раскрываются разработчиками. Однако бывают и исключения. Например, Splunk выложил в Интернет датасеты для изучения и тестирования своего продукта, но можно ли считать его подходящим для тестирования других средств защиты и построения собственной системы мониторинга на базе машинного обучения? На самом деле я бы не рассчитывал в обозримом будущем на чужие датасеты, а рекомендовал бы формировать собственную обучающую выборку, на которой и учить модели машинного обучения. У вас же есть сетевой трафик, вредоносные файлы, URL, электронная почта, действия пользователей? Собирайте их и обрабатывайте.

В качестве примера покажу, какой объём данных собирает Cisco в течение всего одних суток:

  • 180 миллиардов DNS-запросов;
  • 18 миллионов файлов, из них 1,5 млн вредоносных;
  • 18 миллиардов URL;
  • 600 миллиардов email;
  • 250 тысяч облачных приложений.

Это большой объём данных, но, прежде чем их подавать в модель машинного обучения, необходимо их предварительно обработать, так как модель не понимает разницы между шумом и полезными данными. Кроме того, надо помнить, что в датасеты могут быть целенаправленно внесены некорректные или фальшивые данные, чтобы обмануть систему. Поэтому так важна предварительная обработка, в рамках которой мы выделяем так называемые признаки, например доменное имя, отправителя email или IP-адреc. На самом деле таких атрибутов может быть очень много, и зависят они от того, какую систему мониторинга мы будем строить/использовать. Например, для системы мониторинга сетевых аномалий (NTA или NDR) к таким признакам могут быть отнесены:

  • порт источника;
  • порт отправителя;
  • протокол (udp, icmp, tcp, ipv6, другой);
  • идентификатор приложения;
  • входящие пакеты/фреймы (количество байт, количество пакетов, количество пакетов с битами rst, fin, syn, syn-ack);
  • исходящие пакеты/фреймы;
  • сервера и клиенты;
  • длительность потока;
  • число потоков (за определённый интервал времени);
  • число соединений;
  • число параллельных потоков;
  • число новых потоков;
  • время суток;
  • процент прекращённых соединений;

и др.

У решений класса EDR (Endpoin Detection & Response) признаков больше 400 — это метаданные, ассоциированные с анализируемым файлом, — наличие сетевых подключений, нестандартные протоколы, использование определённых вызовов, внесение изменений в файловую систему, разработка под определённую архитектуру, обращения к реестру, поддерживаемые языки, работа с оперативной памятью и жёстким диском, запуск других процессов и т. д.

А, например, при мониторинге DNS-запросов с точки зрения ИБ мы должны обращать внимание на следующие признаки:

  • В какое количество IP-адресов резолвится домен?
  • Число стран, в которых размещаются IP-адреса домена?
  • Длина имени домена?
  • Минимальный, средний и максимальный TTL домена?
  • Как часто за сутки менялись IP-адрес домена?
  • Каков возраст домена?
  • Насколько равномерно распределены символы в домене?
  • Насколько осмыслен домен?
  • Кто владелец домена?
  • В какой автономной системе располагается домен?
  • Какие ещё домены «висят» на этом же IP-адресе?
  • Кто регистратор домена?

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

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

 

МОДЕЛИ МАШИННОГО ОБУЧЕНИЯ

Наиболее популярным классом машинного обучения является обучение с учителем (supervised machine learning). Эти алгоритмы используются в тех случаях, когда у вас достаточно простые данные и понятные признаки. Например, блокирование платёжной карты после снятия наличных за границей. Тут всё просто. Обычно все ваши транзакции проходят в домашнем регионе, а тут аномалия — внезапное (если вы не предупредили свой банк о поездке) снятие наличных за пределами страны. Наверное, до 75% всех алгоритмов машинного обучения, используемые в том числе и в ИБ, — это нестареющая классика, то есть обучение с учителем, с помощью которого можно быстро решить нужную задачу.

Самыми популярными моделями являются классификация и регрессия. Первая позволяет предсказать категорию событий (например, конкретных угроз), а регрессия — предсказать значение. Например, если вам нужно предсказать, когда у вас будет рост атак, то вам нужна регрессия, а если вы хотите понять, каких атак у вас будет больше через полгода, то вам нужна классификация. С помощью машинного обучения с учителем можно выявлять заражение вредоносным кодом, взаимодействие с командным C2-сервером, загрузку вредоносного кода, фишинг и спам, DGA-домены и т. п. В этих моделях кто-то должен дать на вход модели уже размеченные данные (опять возвращаемся к важности датасета и разметки). Например, сказать: это спам, а это нет; это DDoS, а это просто новогодний всплеск заказов; это фрод, а это обычная транзакция.

Что делать, когда у нас нет размеченных данных? В этом случае нам поможет обучение без учителя (unsupervised machine learning), которое позволяет искать структуру и зависимости в неразмеченных данных и делать выводы на их основе. Если обучение с учителем позволяет выявлять новые, но всё-таки ранее известные типы угроз, то обучение без учителя фокусируется на угрозах неизвестных, например, расширение плацдарма злоумышленников в инфраструктуре (lateral movements), утечки данных, аномальный доступ к различным сервисам и серверам.

Представим себе, что мы фиксируем четыре неудачных попытки входа под одной учётной записью. Это явное нарушение, так как у нас в политике стоит ограничение в три попытки. Для обнаружения четырёх и более неудачных попыток не требуется машинное обучение. Активность одной учётной записи из разных географических точек в течение одних суток может означать вредоносную активность. А может и нет, если вы, например, полетели в командировку и заходили в какую-либо систему, например, из Москвы, Лондона, Нью-Йорка и Чикаго в течение суток (это, кстати, вполне возможно). По этой причине банки часто блокируют карточные транзакции, считая их фродом. Для обнаружения такой активности также не требуется машинное обучение. А вот доступ из непривычного места уже требует — тут как раз поможет кластеризация, для которой такая попытка будет рассматриваться как аномалия. Причём может оказаться, что это даже не кража учётной записи, а пользователь дал добро какому-то приложению через OAuth подключаться к облачному сервису и благополучно забыл об этом.

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

Какие ещё сценарии можно назвать для систем машинного обучения без учителя? Вот только некоторые примеры:

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

 

МОЖНО ЛИ СВОИМИ СИЛАМИ?

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

  • Какие данные мне нужны?
  • Что я хочу в них увидеть?
  • Как и где это «что» будет применено?

После ответов на эти вопросы перед вами откроется две дороги — строить собственную систему машинного обучения или купить готовое решение. Первый путь откроет новый набор вопросов:

  • У вас есть необходимые датасеты?
  • У вас есть квалифицированные аналитики? В начале 2000-х годов на CISO Summit в Москве Антон Чувакин сказал: «У вас есть нужные данные, но нет правильных моделей. У вас есть правильные модели, но нет нужных данных». Сегодня ситуация изменилась: у вас есть нужные данные (и их слишком много) и правильные (наверное) модели… но нет аналитиков, которые могут свести всё это вместе.
  • Какие алгоритмы вы будете использовать?
  • Вы можете использовать доступные модели?
  • Как вы будете проверять качество своих моделей?

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

  • Какие алгоритмы/модели используются для обнаружения угроз?
  • Какие наборы данных используются в алгоритме/модели?
  • Где запускаются алгоритмы (на узле, в ЦОДе, в облаке)?
  • Могут быть алгоритмы/модели обучены на моих данных?
  • Как много обучающих данных требуется?

В заключение хочу отметить, что раньше люди покупали SIEM, чтобы снизить необходимость написания сигнатур для систем обнаружения атак, а также снизить число ложных срабатываний у них. Сейчас люди покупают или строят машинное обучение, чтобы не писать правила для SIEM или снизить число ложных срабатываний в них. Что дальше?

Смотрите также