Нейросети в практике специалиста по безопасности
ДЛЯ РЕШЕНИЯ ЗАДАЧ ЭВРИСТИЧЕСКОГО ДЕТЕКТИРОВАНИЯ ВРЕДОНОСНЫХ АТАК И НОВЫХ ТИПОВ ВРЕДОНОСНЫХ ПРОГРАММ В НЕКОТОРЫХ СОВРЕМЕННЫХ ПРИЛОЖЕНИЯХ ПРИМЕНЯЮТСЯ СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА (ИИ) НА ОСНОВЕ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ, ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ, ЭКСПЕРТНЫХ СИСТЕМ И СИСТЕМ НЕЧЕТКОЙ ЛОГИКИ. ЦЕЛЬЮ ДАННОЙ СТАТЬИ ЯВЛЯЕТСЯ КРАТКОЕ ОПИСАНИЕ НАИБОЛЕЕ ПОПУЛЯРНЫХ ТЕХНОЛОГИЙ, ПРИМЕНЯЕМЫХ ДЛЯ РЕШЕНИЯ ЗАДАЧ БЕЗОПАСНОСТИ. ПОМИМО БАЗОВОЙ ТЕОРИИ РАССМОТРИМ ПРОСТЕЙШИЕ ПРИМЕРЫ, ПОКАЗЫВАЮЩИЕ ДЕЙСТВИЕ ОПИСАННЫХ ТЕХНОЛОГИЙ НА ПРАКТИКЕ.
Системы, основанные на правилах
Рассмотрим одну из разновидностей подобных систем – систему с продукционными правилами. Продукционным называется правило вида «ЕСЛИ … ТО». Часть «ЕСЛИ» описывает условие применения правила, а часть «ТО» – последствия использования правила. В результате применения правила может возникнуть событие одного из двух типов:
- Получение нового знания;
- Выполнения некоторого действия для изменения окружающей среды.
Для работы подобной системы требуется:
- Рабочая память. Рабочая память применяется для хранения известных на текущий момент фактов, модификация рабочей памяти может производиться в процессе срабатывания правил;
- База знаний. База знаний – это группа правил, которые управляют фактами в рабочей памяти.
По подобной схеме построена эвристика в исследовании процессов AVZ. Перед началом анализа формируется рабочая память – в нее заносится набор фактов, описывающих процесс. Далее в процессе выполнения правил происходит формирование нового знания – простейший пример правила «ЕСЛИ [(процесс использует библиотеки для работы с сетью) и (количество обнаруженных сигнатур, типичных для отправки почты) > X] TO записать в рабочую память факт <возможно, работает с электронной почтой>». В данном случае выполнение правила приводит к формированию нового знания, которое, в свою очередь, может быть использовано другими правилами.
Достоинство экспертной системы очевидно – правила составляются и модифицируются человеком, поэтому система предсказуема, устойчива, и логику принятия решения можно легко объяснить, анализируя правила. С другой стороны, возможности экспертной системы ограничены этим самым набором правил, и чем сложнее задача, тем сложнее будут правила и тем больше их придется создавать – соответственно, потребуются значительные затраты времени.
Деревья решений
Дерево решений – это система, в которой правила представлены в иерархической древовидной структуре, где каждому объекту соответствует единственный узел, дающий решение. Правила имеют вид «ЕСЛИ … ТО …». Деревья удобны для решения ряда задач, в частности - задач классификации, т.е. отнесения объектов к одному из заранее известных классов. Несомненным плюсом является возможность автоматического построения дерева правил на основании обучающей выборки.
Рассмотрим простейший пример –на основании анализа трафика пользователя необходимо сформировать признак «нецелевое использование». Будем считать, что если интернет используется по назначению, то признак нецелевого использования равен нулю. Если есть подозрение, что пользователь применяет интернет для неслужебных задач, то признак равен 1 и администратору следует проанализировать трафик пользователя (подобная система, применяется в Смоленскэнерго, в анализаторе трафика, но она оперирует десятками параметров и на порядок сложнее). Обучающая таблица строится администратором по наиболее характерным примерам.
Фрагмент обучающей таблицы
IMG_CNT |
IMG_S |
AUD_CNT |
AUD_S |
VIDEO_CNT |
VIDEO_S |
R |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
5 |
20 |
0 |
0 |
0 |
0 |
0 |
170 |
160 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
3 |
3500 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
150000 |
1 |
50 |
15 |
0 |
0 |
0 |
0 |
0 |
60 |
120 |
0 |
0 |
1 |
700000 |
1 |
210 |
32 |
0 |
0 |
0 |
0 |
0 |
… |
… |
… |
… |
… |
… |
… |
Параметры IMG_CNT и IMG_S содержат количество загруженных за контрольный период времени картинок и средний размер картинки в килобайтах. Соответственно, AUD_CNT и AUD_S – количество и средний размер аудиофайлов, VIDEO_CNT и VIDEO_S – данные по видеофайлам. R – результат анализа.
Для построения дерева решений применим пакет Deductor Lite (пакет можно скачать с сайта http://www.basegroup.ru, ограничение бесплатной версии – выборка размером до 150 записей). Первым шагом является импорт данных в систему, который производится при помощи мастера импорта. В ходе импорта указываем, что поле R является выходным дискретным, а остальные поля – входными непрерывными.
Затем вызываем мастер обработки данных и в нем указываем методику обработки и анализа – в нашем случае «Дерево решений». Мастер задает ряд вопросов относительно оптимизации дерева (пакет позволяет задать правила нормализации, указать параметры минимизации количества правил). После задания этих параметров производится обучение, которое на современном компьютере занимает доли секунды. После обучения пакет отображает полученное дерево решений.
После построения дерева решений можно протестировать его работу – для этого в пакете предусмотрена функция «Что если». Она позволяет задавать тестовые значения входных параметров и изучать результаты их обработки. В качестве примера смоделируем ситуацию, в которой пользователь загрузил 30 картинок со средним размером 150 кб.
В данном случае система правильно классифицирует ситуацию - R=1, т.е. система подозревает, что пользователь применял интернет не по назначению. Естественно, что используемые в дереве решения-константы были определены на основании обучающей выборки и систему несложно переобучить под трафик конкретных пользователей. Дальнейшие тесты показывают, что система уверенно опознает ситуации загрузки музыки и видео и при этом не реагирует на параметры типового трафика. В реальной системе будет гораздо большее количество входов и потребуется большее количество обучающих примеров, но принцип от этого не изменится.
Несомненным достоинством дерева решений является то, что его очень легко реализовать на любом языке программирования. Кроме того, несложно построить универсальную систему, которая будет загружать описания дерева решений из базы данных. Описание занимает в базе небольшой объем (порядка 2-5 Кб для сложного дерева), что является еще одним плюсом с практической точки зрения.
Искусственные нейронные сети (ИНС)
Устройство ИНС
Искусственная нейронная сеть является упрощенной моделью мозга человека и представляет набор нейронов, соединенных между собой определенным образом. Нейронные сети позволяют решать различные практические задачи, в частности, связанные с классификацией образов, кластеризацией данных и аппроксимацией функций. Несомненными преимуществами нейронных сетей является то, что они могут автоматически приобретать знания в процессе обучения и обладают способностью к обобщению. Однако обучаемость одновременно является и недостатком – анализ обученной нейросети достаточно сложен, и, по сути, она является для пользователя «черным ящиком» с определенным количеством входов и выходов.
Основой сети является искусственный нейрон, являющийся математической моделью нейрона головного мозга. Рассмотрим для начала принцип работы биологического нейрона. По определению нейрон (от греч. neuron - волокно, нерв) – это клетка, способная вырабатывать нервные импульсы и передавать их другим клеткам. Нейрон состоит из тела (содержащего ядро), дендритов и аксона.
Дендриты являются сильно разветвленными отростками и выступают в роли приемников сигнала, а аксон нужен для передачи сигнала другим нейронам. Важно отметить, что у нейрона может быть несколько дендритов, но аксон только один. Места контактов между нейронами называют синапсами. Функционально синапсы можно разделить на возбудительные (отвечающие за возникновение возбуждения в другом нейроне) и тормозные (предотвращающие возбуждение). Более подробную информацию о функционировании нейронов можно найти на wikipedia.org (ключевые слова – «нейрон», «синапс», «дендрит», «аксон»).
Упрощенная математическая модель нейрона показана на рисунке.

Входные сигналы X1 … Xn умножаются на весовые коэффициенты w. Умножение на весовой коэффициент применяется для моделирования синапса – несложно заметить, что w=0 соответствует отсутствию соединения, W>0 – возбуждающая синоптическая связь, W<0 - тормозящая. После умножения на весовые коэффициенты входные сигналы суммируются и подаются на вход нелинейного преобразователя, реализующего функцию одного аргумента, которую называют функцией активации или передаточной функцией нейрона. Графики наиболее типовых функций активации показаны на рисунке.

Одой из самых распространенных функций активации является так называемая логистическая функция или сигмоид. На рисунке график «а» соответствует функции линейного скачка, «б» - линейного порога, «в» - логистической функции, «г» - гиперболического тангенса. Последние две функции активации называют сигмоидами (т.е. функциями с графиком S-образного вида). Таким образом, каждый нейрон характеризуется набором весовых коэффициентов W и функцией активации. Несложно подсчитать, что если у нейрона имеется 10 входов, то для хранения десяти весовых коэффициентов потребуется 80 байт. Если ИНС состоит из 50 таких нейронов, то для описания сети потребуется около 5 Кб памяти – это очень важный момент, делающий ИНС привлекательным инструментом для разработчиков антивирусов и антиспам-систем, для которых объем баз является одной из важнейших характеристик.
Классификация нейронных сетей
Существует несколько способов классификации ИНС. В частности, по топологии выделяют:
- Полносвязные сети (в которых каждый из нейронов передает свой выходной сигнал всем остальным нейронам, в том числе и самому себе).
- Многослойные сети. В них нейроны объединяются в слои (слоем является совокупность нейронов с едиными входными сигналами). В многослойной сети входом является вход нулевого слоя, а выходом – выход последнего слоя. Промежуточные слои (между входным и выходным слоем) принято называть скрытыми – многослойная нейросеть может содержать один или несколько скрытых слоев.
- Слабосвязанные сети.
По наличию обратных связей многослойные сети подразделяются на:
- Сети без обратных связей. Это ИНС, в которых сигналы передаются от слоя к слою по направлению от входа к выходу, причем если не оговорено обратное, то выходной сигнал слоя N подается на входы всех нейронов слоя N+1.
- Сети с обратными связями. Это сети, в которых сигнал от последующих слоев передается на предыдущие.
По функции активации нейронов ИНС можно разделить на гомогенные ИНС (т.е. ИНС, в которой у всех нейронов одинаковая функция активации) и гетерогенные, в которых применяются различные функции активации.
В большинстве сравнительно несложных практических примеров обычно применяются гомогенные многослойные нейросети с 1-2 скрытыми слоями. Для такой ИНС существует полезная формула, позволяющая оценить требуемый объем обучающей выборки N и количество нейронов L.
Обучение ИНС
Известно множество методик обучения ИНС, однако наиболее распространенным является алгоритм обратного распространения (более правильно его следует назвать «алгоритм обратного распространения ошибки»). Этот алгоритм применяется для обучения многослойных нейронных сетей и основан на поиске минимума функции ошибки с рассмотрением сигналов ошибки от выхода ИНС к ее входу. Метод обратного распространения относится к группе методов «обучения с учителем», т.е. он требует подготовки обучающей выборки, содержащей элементы, состоящие из вектора входных параметров и соответствующего ему вектора выходных параметров.
Алгоритм сводится к следующему:
- Синаптическим весам нейронов ИНС присваиваются некие небольшие начальные значения;
- Из обучающей выборки извлекается пара векторов X (значения входных сигналов), Y (соответствующее выходное значение). Данная пара векторов называется обучающей парой;
- Значения вектора X подается на вход ИНС и вычисляется выходное значение;
- Вычисляется ошибка, являющаяся разностью между требуемым значением Y и полученным, после чего корректируются весовые коэффициенты w нейронов сети для минимизации ошибки.
Шаги 2-4 повторяются до тех пор, пока для всех элементов обучающей выборки не будет достигнута заданная погрешность.
В процессе обучения ИНС можно столкнуться с рядом проблем, в частности:
- Невысокой скоростью обучения. Чем сложнее сеть, тем больше итераций потребуется для ее обучения;
- «Параличом ИНС». Он возникает, если в процессе обучения нейроны получают большие значения весовых коэффициентов, и, как следствие, функция активации получает на вход большие значения, и в случае сигмоида мы оказываемся на его пологом участке, в результате чего процесс обучения практически замирает;
- Переобучение и недообучение. Переобучение – это минимизация ошибки на обучающем множестве до такой степени, что нейросеть идеально распознает образцы обучающего множества, но теряет способность к обобщению.
Кроме перечисленных проблем следует упомянуть еще и проблему «несбалансированности выборки». Распространенной ошибкой при обучении НС является подготовка обучающей выборки, в которой доминируют примеры одного типа – например, ИНС должна детектировать действия хакера и при обучении применяется выборка, в которой на 50 примеров деятельности пользователя имеется 10 примеров деятельности хакера.
Пример решения задачи из области безопасности при помощи ИНС
Рассмотрим применение нейросети на небольшой практической задаче из области информационной безопасности.
Дано: база Oracle, в которой расположены данные ряда задач. При помощи нейросети необходимо детектировать доступ к данным со стороны некоего ПО, отличного от АРМ пользователя, или детектировать аномалии в работе пользователя. Решение задачи начнем с того, что определимся, какую информацию мы подадим на вход нейросети.
Итак, на вход нейросети будем подавать:
- Информацию об объеме загружаемых из базы данных за контрольный период V в килобайтах. Данное значение необходимо нормализовать, так как считываемый из базы объем заранее не известен и индивидуален для каждой задачи и для каждого пользователя. В качестве простейшей формы нормализации можно применить оценку трафика по десятибалльной шкале (0 - объем равен нулю, 4..5 – типовой объем, 10 – максимальный). В данном случае нормализация не производится, так как применяемый пакет и соответственно она будет производиться автоматически применяемым пакетом.
- Количество транзакций в минуту C.
- Количество операций модификации данных в минуту M. В этом примере АРМ использует «короткие транзакции», т.е. в рамках одной транзакции обычно бывает 1-2 операции модификации данных.
- Признаки обращения к словарю базы данных. Большинство клиентских АРМ к словарю не обращается, что отличает их от средств разработки и администрирования. Признаки будут дискретными (0 - нет обращений, 1 – есть), и их будет несколько – по одному на каждую из таблиц словаря базы. Будем отслеживать работу с объектами словаря SESSION_PRIVS, V$OPTION, ALL_TABLES, USER_TABLES, ALL_OBJECTS, USER_OBJECTS, USER_COL_COMMENTS, DBA_CONS_COLUMNS, ALL_COL_COMMENTS, DBA_USERS, ALL_USERS.
Следующим шагом будет подготовка обучающей выборки (см. таблицу).
Фрагмент обучающей выборки
|
V |
C |
M |
T1 |
T2 |
T3 |
T4 |
T5 |
T6 |
T7 |
T8 |
T9 |
T10 |
Hacker |
User |
Пользователь 1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 2 |
2 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 3 |
5 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 4 |
10 |
1 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 5 |
70 |
2 |
4 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 6 |
15 |
2 |
4 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Пользователь 7 |
20 |
2 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Злоумышленник 1 |
10 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
Злоумышленник 2 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
Злоумышленник 3 |
20 |
1 |
4 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Злоумышленник 4 |
700 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Следующим шагом является выбор топологии нейронной сети – в данном примере используем гомогенную многослойную ИНС без обратных связей, содержащую один скрытый слой из двух нейронов. Для обучения нейросети применим пакет Deductor Lite. Обучение происходит без проблем, условие завершения обучения – максимальная погрешность менее 0.01. После обучения нейросети остается ее протестировать.
Для начала подадим на все входы за исключением входа V = 30 нули (т.е. транзакций нет, данные не меняются, из базы считывается сравнительно небольшой объем информации). В результате получим, что Hacker=0.87, User=0.12 – т.е. нейросеть правильно классифицировала деятельность злоумышленника, причем в обучающей выборке такого примера не было. Реакция на работу пользователя также будет правильной, например, при V=30, С=3, M=4, T1=1 ответ нейросети будет Hacker=0.03, User=0.97 – т.е. деятельность пользователя так же корректно классифицирована. Однако более детальный анализ показывает, что не все ситуации нейросеть классифицирует корректно – например, если в последнем примере добавить сигналы T4…T10=1 (что нехарактерно для АРМ), то параметр Hacker будет меньше 0.2. Одной из причин является малый размер обучающей выборки. По приведенным выше формулам для обучения данной ИНС требуется от 64 до 300 элементов обучающей выборки, а в нашем случае их было всего 30. Кроме того, в обучающей выборке имеются пробелы – в ней нет ни одного похожего примера. Для устранения данной проблемы требуется уточнить и дополнить обучающую выборку и ввести в нее примеры, в которых деятельность «злоумышленника» похожа на работу АРМ.
Заключение
В данной статье мы рассмотрели основные моменты, связанные с применением нейронных сетей и систем, основанных на правилах для решения задач информационной безопасности. Анализ приведенных примеров показывает, что ничего сложно в описанных технологиях нет и их можно с успехом применять для решения различных задач. Наиболее интересными с практической точки зрения являются задачи детектирования деятельности злоумышленника или выявления различных аномалий в работе пользователя. В частности, рассмотренные примеры выбраны не случайно – подобные подходы с успехом применяются автором для анализа интернет-трафика и аудита базы данных.
Полезная литература и ссылки
- http://www.basegroup.ru – Сайт лаборатории BaseGroup. Содержит массу информации по ИИ, а также ряд бесплатных программ. Помимо описанного в статье Deductor Lite, с сайта можно скачать Neural Network Wizard (http://www.basegroup.ru/download/nnw.htm), содержащий реализацию многослойной нейронной сети с обучением методом обратного распространения ошибки с исходными тестами и демонстрационными примерами.
- Программирование искусственного интеллекта в приложениях. М. Тим Джонс. Данная книга интересна тем, что в ней приведено решение ряда практических задач и рассмотрены исходные тексты, демонстрирующие описанные алгоритмы.
- Нечеткие модели и сети. В. В. Борисов, В. В. Круглов, А. С. Федулов
- Нечеткая логика и искусственные нейронные сети. В.В. Круглов, М.И. Дли, Р.Ю. Голунов
Keywords: zPOSTz zSECURITYz z10073z
Для Авторов: edit delete
Автор: Олег Зайцев Дата: 27.03.2009 12:50:30©
|