Хакер - ИИ в ИБ. Как машинное обучение применяется в безопасности и каким оно бывает
hacker_frei
Константин Коновалов
Содержание статьи
- Классический кодинг vs машинное обучение
- Задачи искусственного интеллекта
- Чем машинлернинг может помочь в ИБ
- Что включает в себя машинное обучение
- Данные
- Признаки
- Алгоритмы
- Чем отличаются разные алгоритмы
- Наивный байесовский классификатор
- Деревья решений
- Отличия нейросетей от других алгоритмов
- Особенности машинного обучения в ИБ
- Подведем итоги
Сейчас очень много говорят об искусственном интеллекте, машинном обучении и глубоких нейросетях, но мало кто понимает, в чем различие между разными подходами к ИИ. В этой статье мы поговорим об этом и я приведу примеры того, как искусственный интеллект применяется в кибербезопасности.
INFO
Редакция благодарит команду «Хакердом» за помощь в подготовке статьи.
Искусственный интеллект — это на самом деле сразу несколько областей компьютерных наук, которые решают задачи, свойственные человеческому разуму: распознавание речи, классификация объектов, а также разные игры вроде шахмат и го.
Машинное обучение — это часть темы искусственного интеллекта, где изучается не прямое программирование задач, а программирование через обучение в процессе решения однотипных задач.
В понятие машинлернинга входят разные алгоритмы — такие как random forest («случайный лес»), деревья решений, наивный байесовский классификатор, градиентный бустинг и другие. Нейронные сети, в том числе глубокие, — это тоже один из алгоритмов машинного обучения.

КЛАССИЧЕСКИЙ КОДИНГ VS МАШИННОЕ ОБУЧЕНИЕ
Как происходит программирование в классическом понимании? Допустим, у человека есть компьютер, который работает по определенному алгоритму. Человек вводит в него данные, подает программу, и алгоритм выдает результаты. В этом случае все предельно понятно. Человек может получить точность до 100 процентов, особенно если запрос — это математические операции.

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

ЗАДАЧИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА
Есть четыре основные задачи искусственного интеллекта:
- классификация;
- регрессия;
- ранжирование;
- кластеризация.
Машинное обучение состоит из двух процессов. Первый — это тренировка, когда человек берет данные, обучает модель и в итоге получает некий классификатор.

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

ЧЕМ МАШИНЛЕРНИНГ МОЖЕТ ПОМОЧЬ В ИБ
Рассмотрим пример того, как человек пользуется своей электронной почтой. Можно выделить четыре паттерна поведения человека, анализ которых поможет определить его действия.
- В какое время суток человек пользуется почтой: утром, днем, вечером.
- Сколько устройств использует: телефон, компьютер или сразу несколько устройств одновременно.
- В каких локациях человек находится, когда пользуется почтой.
- Как человек проверяет письма: сверху вниз или снизу вверх. Мы можем определить это по тому, как он отвечает или удаляет из ящика рассылки и прочий мусор.
Ответы на эти вопросы создает портрет человека (на рисунке ниже поведение такого человека выделено красным). Для машинного обучения эти действия будут предсказуемые, без каких‑либо всплесков.

Теперь представим, что хакер взломал почту, узнав каким‑то образом пароль от нее, и зашел как пользователь. Его поведение будет явно отличаться от поведения человека, который пользовался электронным ящиком до него. На графике поведение хакера показано характерными всплесками.

Задача алгоритма заключается в том, чтобы определить тот момент, когда изменилось поведение человека, которое образовало такой всплеск. О подобном примере можешь почитать в блоге Яндекса на Хабре.
Другой хороший пример — соревнования Catch me if you can на сайте Kaggle. Это, кстати, очень полезный сайт для тех, кто хочет изучить машинное обучение.
Задача — отличить поведение взломщика от нормального пользователя. Например, дано: сайты, которые посещает человек, и время нахождения человека на них. Нужно по последовательности посещений сайтов определить взломщика. На стартовой странице представлен обзор задачи и размеченные данные. А также есть вкладка, где можно найти, как эту задачу решили другие пользователи. То есть Kaggle дает возможность не только поучаствовать в соревнованиях, но и набраться опыта у других людей.
ЧТО ВКЛЮЧАЕТ В СЕБЯ МАШИННОЕ ОБУЧЕНИЕ
Машинное обучение включает в себя три компонента: данные, признаки и алгоритмы. Давай рассмотрим их по отдельности.
Данные
В открытом доступе есть множество наборов данных, на которых можно тренировать алгоритмы. Но у таких наборов есть недостатки. Например, наборы могут быть неполными, плохо размечены и неточны. Если ты захочешь внедрить решение на ML-технологиях, нужно будет собрать набор данных под определенную задачу и готовый набор вряд ли будет хорошо соответствовать. Люди готовы выкладывать алгоритмы, рассказывать, что и как они используют, но мало кто хочет делиться своими наборами данных.
Задача дата‑сайентиста — подготовить набор данных к использованию: собрать, разметить и вычистить его. Это очень трудоемкий процесс, который занимает примерно 50–70 процентов работы.
Признаки
Рассмотрим простой веб‑запрос. Допустим, у тебя есть: длина запроса, код ответа, URL, контекст, популярность домена и так далее. Всего таких признаков можно набрать 600 штук. В этом случае возникает два важных вопроса:
- Какие из этих признаков брать, а какие не стоит?
- Где будет использовано решение — в режиме realtime или офлайн?
Причем тебе придется искать компромисс между этими двумя параметрами. Например, если решение будет использовано в реальном времени, нужно, чтобы модель могла быстро считать. Поэтому признаков стоит взять поменьше, модельку послабее. В офлайновом режиме можно выгрузить данные, анализировать их и раскидывать по категориям. В этом случае используй любую модель любой сложности, потому что можно заставить алгоритм думать столько, сколько понадобится.
Вот еще один пример. Предположим, нам нужно понять, опасный перед нами файл или нет. Для этого сначала ответим на следующие вопросы:
- Требует ли файл доступ в интернет?
- Делает ли он что‑то похожее на сканирование?
- Какие IP использует файл?
- Хочет ли он достучаться до реестра?
- Работает ли файл с памятью?
- Хочет ли он изменить файловую систему?
- Имеет ли файл возможность самокопирования или захвата других файлов?
Ответы на эти вопросы помогут выявить признаки, которые можно использовать для решения нашей задачи.
Алгоритмы
Алгоритмы можно разделить на несколько типов:
- обучение без учителя;
- обучение с учителем;
- обучение с частичным привлечением учителя (semi-supervised learning);
- обучение с подкреплением.
При обучении без учителя человек вводит в алгоритм неразмеченные данные и ждет от алгоритма нужный результат. В случае обучения с учителем данные уже размечены и есть возможность отличить действия злоумышленника от действий нормального человека. Это самый удобный и распространенный вариант, тогда как обучение без учителя в безопасности сейчас не используется.
Обучение с частичным привлечением учителя — это нечто среднее между первым и вторым типами. Нужно обучить алгоритм на неразмеченных данных, а затем проверить его точность на размеченных данных. Например, у нас есть некий набор данных. 90% мы можем отправить на обучение модели, а 10% — на то, чтобы протестировать его точность. Эта разновидность алгоритма экономит время.
В обучении с подкреплением есть агент и среда. Агент, взаимодействуя со средой, получает либо награду, либо штраф. При этом он должен перестроить свою стратегию таким образом, чтобы всегда получать награду. Например, это может быть шагающий робот, который пытается научиться шагать, или мобильный робот, который должен доехать из точки А в точку Б так, чтобы ни с чем не столкнуться.
Плюс этого алгоритма в том, что он работает в реальном времени, взаимодействуя с системой. Здесь не нужно комплектовать набор данных, он собирается и размечается одновременно. В кибербезопасности этот алгоритм не встречается.
ЧЕМ ОТЛИЧАЮТСЯ РАЗНЫЕ АЛГОРИТМЫ
Рассмотрим семь алгоритмов машинного обучения:
- линейная регрессия;
- логистическая регрессия;
- деревья решений;
- метод опорных векторов;
- наивный байесовский классификатор;
- случайный лес;
- алгоритм градиентного бустинга.
Алгоритм градиентного бустинга и случайный лес — это мощное развитие основного алгоритма, деревьев решений. Например, в алгоритме случайного леса параллельно может работать 1000 деревьев решений, за счет чего результат будет эффективнее.
В случае градиентного бустинга задача рассчитывается по‑другому. Например, это может быть два случайных дерева, которые выстраиваются в цепочку и создают более точный результат, чем при использовании любого другого одного‑единственного алгоритма и нейронной сети.
Рассмотрим, как работают некоторые алгоритмы, на примере реальной задачи.
Наивный байесовский классификатор
Наивный байесовский классификатор использовался до 2010 года в спам‑фильтрах, однако спамеры стали под него подстраиваться и сделали его фактически непригодным. Рассмотрим тем не менее, как он работает.
Итак, наша задача — понять, относится письмо к спаму или нет. При обучении классификатора возникает два списка: хороших слов и плохих — тех, что часто попадаются в спаме. В списках представлены сами слова и частота, с которой они обычно встречаются.
Предположим, в письме есть слово «собака». Смотрим и узнаем, что в хороших письмах оно встречалась намного чаще, чем в спаме. Дальше информация о каждом слове отправляется в формулу наивного байесовского классификатора, который вычисляет вероятность того, спам перед нами или не спам.
Деревья решений
Здесь нам снова пригодится пример с детектом малвари в файле. Итак, у нас есть файл и мы хотим определить, насколько он опасен. На каждом этапе алгоритм будет решать, какой вопрос нужно задавать в процессе обучения. Предположим, он задает вопрос, требует ли этот файл соединения с интернетом. Ответ может быть либо положительный, либо отрицательный. От этого зависит, каким будет следующий вопрос.
К примеру, если ответ отрицательный, то алгоритм задает новый вопрос: требует ли файл доступа к реестру? Если ответ «да», значит, этот файл опасен. В противном случае алгоритм задает вопрос, работает ли файл с памятью напрямую. Если нет, это нормальный файл. В случае положительного ответа нужно задать новый вопрос. Этот процесс длится, пока не станет понятно, опасен файл или нет.
ОТЛИЧИЯ НЕЙРОСЕТЕЙ ОТ ДРУГИХ АЛГОРИТМОВ
Классическая схема машинного обучения строится на том, что человек вручную выделяет признаки данных, выбирает из множества признаков важные и строит классификатор, который затем сможет выдавать результат.
Нейронные сети самостоятельно выделяют признаки и производят классификацию. Однако они более чувствительны к настройке и требовательны к ресурсам. Причем в зависимости от числа слоев в глубокой нейросети может сильно различаться точность результата — к примеру, от 80 до 99%.
Нейросети полностью решают задачу за человека, но нужно понимать сферу их применения. Например, в вопросах интернет‑безопасности они хорошо зарекомендовали себя там, где распознают речь либо работают с изображениями или видео. К примеру, нейросети применяются в Face ID на iPhone, когда изображение с камер позволяет разблокировать телефон и получить доступ к своим данным.
Возможны и уязвимости, связанные с нейросетями. В 2018 году разработчики из Google нашли возможность передавать нейросети зашумленные данные и заставить выдавать совсем не те результаты, которые от нее ожидают.
INFO
Подробнее о реализации этой атаки на нейросети читай в статье «Исходный кот. Как заставить нейронную сеть ошибиться».
ОСОБЕННОСТИ МАШИННОГО ОБУЧЕНИЯ В ИБ
Вот как в целом выглядит использование машинного обучения в работе.
- Загружаем, собираем и перерабатываем данные.
- Выделяем признаки.
- Тренируем несколько моделей, сравниваем эти модели и выбираем одну из лучших.
- Внедряем лучшую модель в систему.
- Подаем данные на модель и смотрим, что она выдает на выходе.
Можно подумать, что если в основе интернет‑безопасности лежит решение на базе машинного обучения, то алгоритм все делает сам: учится, выявляет аномалии, определяет взломщиков. Однако это неправда. У работы на основе машинного обучения есть два этапа: обучение и использование модели. Они между собой не связаны. То есть сначала мы обучаем модель, а когда начинаем использовать ее, модель уже не обучается.
Например, мы обучили сеть распознавать кошек и собак. Если этой сети показать моржа, она свалится в два состояния: либо кот, либо собака. Но морж — это ни то ни другое. То же может произойти и когда мы доверили сети следить за каким‑то аспектом безопасности.
Допустим, есть сведения о том, как действуют хакеры. Мы каким‑то образом превратили это в набор данных и разметили их в системе. Когда хакеры будут действовать в соответствии со схемой из нашего набора, классификатор вовремя опознает угрозу и вовремя предпримет какие‑то меры. Если же хакеры придумают новый метод взлома, которого нет в наборе данных, то на выходе результаты могут быть непредсказуемыми.
ПОДВЕДЕМ ИТОГИ
- Нет универсального алгоритма, который будет решать все задачи. Разные алгоритмы помогают решить разнообразные задачи для различных данных.
- Данные нужно постоянно обновлять. Нельзя натренировать алгоритм и надеяться на него. Например, до 2010 года наивный байесовский классификатор мог фильтровать спам, но потом его научились обходить. Теперь нельзя использовать этот алгоритм. Нужно искать новые решения.
- Нужно понимать разницу и выбирать сложность модели в зависимости от того, где она будет использоваться. Например, если нужна работа в режиме реального времени, модель можно выбрать полегче. В режиме офлайн время не ограничивается, можно считать, сколько угодно.
- Если набор данных неполный, некачественный, то никакой алгоритм не поможет.
Поэтому нужно постоянно мониторить ситуацию, собирать набор данных, размечать его и продолжать обучать классификатор. Только так система будет иметь минимальное количество изъянов.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei