Содержание к диссертации
Введение
Глава 1. Идентификация процессов по поведению 14
1.1. Введение 14
1.2. Частотные и статистические методы анализа поведения процессов 19
1.3. Использование конечных автоматов для идентификации процессов 25
1.4. Методы классификации процессов 27
1.5. Использование интеллектуальных алгоритмов для идентификации процессов 29
1.6. Информационно-теоретические меры анализа поведения процессов 34
1.7. Использование искусственных иммунных системы для анализа поведения процессов 36
1.8. Недостатки методик обнаружения анализа поведения процессов 38
1.9. Выводы 39
Глава 2. Динамическая идентификация процессов 40
2.1. Структура программного комплекса динамической идентификации процессов 40
2.2. Динамический образ процесса 42
2.3. Формирование динамического образа процесса 45
2.4. Модули сбора информации и регистрации событий 52
2.5. Анализ поведения процессов 56
2.6. Обучение нейросетей и анализаторов 65
2.7. Модуль анализа 70
2.8. Мультиагентная система 74
2.9. Результаты и выводы 76
Глава 3. Динамический монитор и аудит процессов, политика ограниченного использования программ 77
3.1. Динамический монитор процессов и система аудита 77
3.2. Политика ограниченного использования программ Windows 78
3.3. Программный комплекс 80
3.4. Определение эффективного размера контейнера 84
3.5. Исследование эффективности анализатора 89
3.6. Результаты и выводы 97
Заключение 98
Список литературы
- Использование конечных автоматов для идентификации процессов
- Недостатки методик обнаружения анализа поведения процессов
- Модули сбора информации и регистрации событий
- Определение эффективного размера контейнера
Использование конечных автоматов для идентификации процессов
Задача идентификации процессов по их поведению схожа с задачами обнаружения аномального поведения и классификации процессов, так как основной целью применяемых методов является распознавание.
Современные системы анализа поведения процессов, происходящих в системе, делятся на две группы: системы, детектирующие процессы на соответствие сигнатурам определенных субъектов [14,15,48,51,78], и системы, детектирующие аномальное поведение определенного субъекта. В первом случае система имеет некую базу данных, состоящую из сигнатур, позволяющих опознать инородный процесс, если таковой появится в системе. Во втором случае система абстрагируется от составляющих процесс компонентов и пытается распознать наличие поведения, не свойственного для среды в целом. Как упоминалось выше, существуют и системы, объединяющие два данных подхода в различных пропорциях. Одним из примеров служит гибридная искусственная иммунная система [8]. Алгоритм сочетает в себе достоинства как сигнатурного анализа внутренней составляющей субъекта, так и анализ потока событий, связанных с данным процессом. Также существует система IDES [98], которая также объединяет оба подхода. Успешные попытки создания гибридных методик описаны в [106].
Вне сомнений, что сигнатурный анализ имеет преимущество над анализом аномального поведения: сигнатурный анализ более прост. К тому же, данный подход обеспечивает более низкие значения частот ошибок первого и второго рода. Однако, известно, что сигнатурный анализ нуждается в системе обновления и пополнения баз данных сигнатур в том или ином виде. Это является серьезным недостатком данного подхода: без обновления эффективность системы будет падать, и, следовательно, будет расти частота ошибок первого и второго рода.
Система распознавания аномального поведения способна отлавливать качественно новые вредоносные процессы, даже если не встречала их прежде. Вместо проверки на соответствие сигнатурам система распознавания аномального поведения чаще всего использует некие классификаторы и правила, позволяющие детектировать вторжение. Зачастую правила и классификаторы практически не нуждаются в обновлении — обновление необходимо лишь тогда, когда меняется понятие «нормального» поведения в среде. С другой стороны, такие системы, как правило, не способны определить тип атаки или атакующего процесса — система способна ответить лишь на вопрос, нормально ли поведение процесса или нет. Также при таком подходе наблюдается высокое значение частоты ошибок второго рода, когда нормальный процесс принимается за процесс с аномальным поведением. В таком случае «хороший» процесс «слегка» нарушает установленные правила и, как результат, оказывается «плохим».
Из этого всего можно сделать вывод, что основной проблемой в системах распознавания вредоносного программного обеспечения по сигнатурам является необходимость обновления базы данных сигнатур. В то время как основной проблемой систем обнаружения аномального поведения является изначальная установка параметров правил или критериев, используемых для классификации субъектов, и снижение частоты ложных срабатываний.
Изначально формирование правил и систем классификации осуществлялось с помощью человеческого ресурса — экспертами [57]. Но из-за стремительного роста объема анализируемых данных это стало слишком затратным по времени. С учетом того, что анализ требует серьезных интеллектуальных затрат, от этого метода пришлось быстро отказаться. Более того, такое формирование правил и систем классификации становилось сильно зависимым от обнаруженных специфических свойств тех или иных вредоносных субъектов. Для решения данной проблемы к решению задачи привлекались методы искусственного интеллекта (ИИ). В идеале, искусственный интеллект позволял бы системе идентифицировать такие процессы, с которыми система ранее не встречалась. Данное свойство сде лало методы искусственного интеллекта приоритетными для использования в задаче обнаружения вторжений. Но даже в таком случае оставалась центральной проблема определения модели поведения атакующего субъекта. Основными направлениями при изучении эффективности использования ис кусственного интеллекта для решения поставленной задачи являются машинное обучение и интеллектуальный анализ данных (data mining) [41,67,97,99,109,113,123,125]. Для детектирования новых атак используются раз личные алгоритмы, такие как интеллектуальный анализ данных с использованием статистических методов [7,23,37,41,71] или методов классификации [43,45,58,74,77,93,95,99,107,110,117,126,127,128], а также метод опорных векто ров [54,76,86,101,124]. Использовались и нейронные сети [42,55,56,61,65,82,96,109,121], обучающиеся как с учителем [9,36,53,62,100,102,118], так и без учителя [35,46,47,79,83,94]. Как известно, методы обучения с учителем используют набор пар паттернов «входные данные — ожидаемый ответ» для корректировки значений нейронов в нейронных сетях. Существуют и методы обучения без учителя, которые, в отличие от методов обучения с учителем, пытаются опознать аномальное поведение на основе полученных в прошлом знаний. Однако в работе [87] показано, что методы обучения без учителя дают результаты в среднем хуже, нежели методы обучения с учителем, если тестовые данные не содержат неизвестных атак. Среди разработанных подходов также стоит отметить подходы, основанные на функции расстояния аномального поведения от нормального поведения [33], а также комплексные подходы [10].
Эскином и другими исследователями [59,103] было предложено использовать методы обучения без учителя с еще не классифицированными данными. Данное предложение основывалось на мысли, что число нормальных процессов существенно больше, чем число аномальных, и аномальные процессы обладают рядом показателей, выпадающих из общего числа.
Форрест и ее коллегами было предложено построение программных профилей с помощью краткосрочных наборов системных вызовов, осуществляемых конкретным процессом [63]. Основной идеей являлось то, что последовательность системных вызовов в момент вторжения или атаки серьезно отличается от последовательностей вызовов нормальных процессов. Во время наблюдения за процессом формировалось представление о его поведении, и детектировалось аномальное поведение, если наблюдались серьезные различия. В качестве паттернов использовались lookahead-пары — последовательности данных, указывающие, какой системный вызов следует за текущим. Длины таких цепочек варьировались. С помощью данного метода исследователями был получен приемлемый результат. Однако, в последующей работе [73] было установлено, что использование кадров жизни процесса, имеющих равную длину, дает более точное разделение нежели использование lookahead-пар [63].
Труд Форрест и ее единомышленников был дополнен Ли в работе по созданию программы, осуществляющей аудит системных вызовов, названной RIPPER ом (Repeated Incremental Pruning to Produce Error Reduction) [92]. Так как правила, сформированные RIPPER ом, могли быть ошибочными, использовался специальный алгоритм пост-обработки для установки факта вторжения. Этот алгоритм основывался на идее временной локализации и позволял отличать ложные предположения от реальных вторжений, в случае которых поведение атакующего субъекта выходило за рамки «нормального». Результаты, полученные Ли, позволили убедиться в том, что для идентификации субъекта (процесса) возможно использование списка системных вызовов, независимо от алгоритма, применяемого для их анализа.
Недостатки методик обнаружения анализа поведения процессов
Также был выдвинут ряд гипотез, которые позиционировались как проблематика при анализе поведения процессов, осуществляющих системные вызовы. Первым из таких предположений было то, что потоки событий независимы и неизменны. Однако, если даже последовательности завершенной программы могли быть неизменными, то подпоследовательности — уже нет [73]. Программы часто имеют различные распределения частот в начале, середине и конце своего жизненного цикла. Также реально последовательности не являются полностью независимыми. Вторая проблема заключалась в том, что считать нормальным, а что аномальным поведением.
Исследователями из SRI был использован альтернативный подход в системе «Emerald» [80]. Вместо использования статистического распределения последовательностей вызовов для классификации поведения исследуемого процесса, они сравнивали краткосрочное (shorterm) поведение и долгосрочное (longerm). В таком случае не требовалось никакого предварительного знания о том, что считать нормальным поведением, а что — аномальным. В процессе сбора данных данные о долгосрочном поведении постоянно обновлялись. Однако, метод сильно зависел от момента обучения системы, в результате открывалась «лазейка» для такого обучения, чтобы объективно аномальное поведение считалось нормальным, а нормальное — аномальным.
В NIDES использовался статистический подход [37] (позже эволюционировал в Emerald [80]) для сравнения так называемого shorterm (текущего, краткосрочного) поведения субъекта с исторически сложившимся longerm (ожидаемым, долгосрочным) поведением. В контексте безопасности компьютерной среды субъектом является процесс или приложение. При сравнении поведения проверяется статистическое соответствие shorterm и longerm поведений, таким образом, shorterm поведение, отличающееся от longerm поведения, будет помечено как аномальное. В общем, shorterm поведение — нечто отличное от longerm пове 21 дения, поскольку оно обычно отражает специфическую активность процесса, в то время как longerm поведение имеет более равномерное распределение активностей. Понятно, что в таком случае необходимо учитывать эти отклонения. Для этого NIDES хранит количество отклонений, которое было замечено за процессом ранее. В дополнение к этому система подает сигнал о наличии в среде подозрительного процесса только в том случае, когда shorterm поведение серьезно отличается от longerm поведения, основываясь на количестве отклонений в прошлом.
Такой подход не требует предварительных знаний о процессе. Он просто сравнивает текущее поведение с ожидаемым поведением, что сильно снижает эффективность метода сокрытия и преобразования кода вредоносных процессов.
В качестве меры представляются аспекты поведения субъекта — для процесса это такие аспекты, как доступ к файлам, сетевая активность, использование ресурсов процессора и другие. Для каждой такой меры конструируется вероятностное распределение для текущего и ожидаемого поведения. Например, для меры «доступ к файлу» longerm распределение содержало бы набор файлов, к которым когда-либо обращался процесс, а shorterm поведение содержало было файлы, к которым недавно осуществлялся доступ. Меры классифицируются на четыре группы, каждая из которых используется для своих специфических целей: 1. Интенсивность действия (activity intensity). Определяет, типичен ли уровень активности для данного процесса. 2. Распределение записей аудита (audit record distribution). Определяет, типичны ли виды деятельности для данного процесса. 3. Категорические (categorical). Определяет, типичны ли действия для данного процесса внутри определенного вида деятельности. 4. Непрерывные (continuous). Также определяет, типичны ли действия для данного процесса внутри определенного вида деятельности. Разница между longerm поведением и shorterm поведением определяется с помощью критерия «хи-квадрат», в котором longerm поведение играет роль эмпирического вероятностного распределения, а shorterm — роль теоретического. Результатом является численное значение Q. Большие значения Q свидетельствуют о том, что поведение является аномальным, в то время как нулевое значение говорит о полном соответствие поведения ожидаемому.
При расчете Q ссылаются на категории, определенные для каждой меры, при этом желательно, чтобы категории, которые редко встречаются или не встречаются вовсе, были объединены в одно целое — категорию «редкое». В NIDES определен параметр, который определяет, как много категорий можно объединить вместе — параметр устанавливает верхний лимит.
Для каждой записи активности статистический компонент NIDES генерирует вектор из значений Q. При этом, большие значения Q говорят о наличии аномального поведения, но существует проблема определения того, что считать большим значением. Каждый раз, когда появляется новая запись, генерируется и новое значение Q. Система следит за этими значениями во время формирования профайла процесса. Таким образом, большие значения Q определяются в процессе формирования ожидаемого поведения.
Эмпирическое (longerm) распределение Q категоризировано по интервалам значений — каждый из таких интервалов называется ячейкой (bin). Вероятность больших отклонений вычисляется при получении значений Q. Эта вероятность обозначается S и определяет преобразование, являющееся правой половиной нормального распределения за исключением того, что высота вероятностного распределения удвоена. Для отображения из вероятности больших отклонений распределения Q в значения полунормального распределения необходима только таблица нормальных распределений.
При получении очередной записи становится возможным генерация соответствующего вектора значений S. Высокие значения соответствуют необычным относительно обычного количества несоответствия между longerm и shorterm поведениями. Малые значения — наоборот. Значения S комбинируются для получения T2 статистики — суммарного арбитражного значения об атипичности по всем мерам (1).
Модули сбора информации и регистрации событий
Для построения системы ограничения использования программ необходимо разработать и реализовать надежную систему идентификации процессов по его действиям, совершаемым в системе. В дальнейшем совокупность признаков процесса, позволяющая однозначно его классифицировать, будем называть образом процесса. Все задачи классификации можно условно разделить на два вида: задача классификации статического образа и задача классификации динамического образа. Основным критерием, лежащим в основе данного разделения, является сложность получения набора признаков. В случае со статическим образом существует возможность получить все признаки сразу. Характерным примером классификации по статическому образу служит задача распознавания символов. В случае с динамическим образом возникает дополнительная задача — необходимость классификации по частичному набору признаков. Задача идентификации процесса по его поведению является задачей распознавания динамического образа.
При распознавании процессов по их поведению задача выглядит следующим образом. Пусть задан некий набор классов процессов. Необходимо классифицировать каждый процесс на основе его поведения. При этом абсолютно игнорируется внутреннее устройство самого процесса. Таким образом, процесс полностью отождествляется с совокупностью всех его возможных действий.
С точки зрения динамической классификации, любой процесс может быть рассмотрен как «черный ящик». Предполагается фиксация сигнала «на входе» и «на выходе», при этом игнорируются действия, происходящие «внутри». Основная идея динамической классификации состоит в том, что каждый процесс может выполнять только те действия, которые в него заложены. Это позволяет полагать, что можно построить алгоритм идентификации процессов с помощью формирования динамического образа процесса. Необходимо представить поведение процесса в виде последовательности событий, связанных с ним, то есть таких событий, которые были порождены им непосредственно. После этого необходимо анализировать подпоследовательности полной последовательности событий. Задачи как выявления характерных признаков, так и классификации образа по набору признаков традиционно решаются с помощью методов искусственного интеллекта.
Процесс однозначно инициализируется исполняемым файлом, а, следовательно, процесс имеет определенный набор инструкций и не может выполнить ни одно действие, которое изначально в нем не заложено. Очевидно, что любая нефункциональная вставка (цепочки NOP) никак не повлияет на функциональные возможности процесса, в отличие от хэш-значения исполняемого файла. Данный подход позволяет полностью игнорировать любое изменение исполняемого файла, которое не несет за собой изменение поведения. Таким образом, динамический образ процесса устойчив к таким классам вредоносного программного обеспечения, как полиморфные вирусы. Более того, данный подход может позволить отслеживать функциональные изменения в коде невредоносных процессов, изменившихся под воздействием вредоносных.
Пусть Е (events) - множество всех возможных событий, которые могут произойти в компьютерной среде, в которой функционирует N процессов, а Ег -множество событий, которые могут произойти при активности /-го процесса. Большинство процессов не выполняет сразу всех действий, которые запрограммированы для каждого из них, при этом многие действия схожи для многих процессов. Процесс может достаточно продолжительное время генерировать события только из некоторого подмножества Ег. Если в компьютерной системе существует процесс, для которого Е .с Ei, то7-ый процесс будет определен как /-ый.
В качестве признаков, используемых для формирования динамического образа процесса, были использованы стандартные события (events) операционной системы Windows. Механизм событий используется операционными системами семейства Windows для обеспечения возможности вызова системных сервисов прикладными процессами. Таким образом, будем формировать образ процесса по его взаимодействию с операционной системой.
Второе условие позволяет расщепить поток всех событий на подпотоки. Каждый из таких подпотоков однозначно ассоциирован с конкретным процессом. Стоит отметить, что в системе допускается наличие множества одинаковых процессов, но, тем не менее, для каждой копии используется отдельный подпоток. Каждый подпоток представляет собой последовательность событий (типов событий), которую можно считать поведением для процесса, связанного с данным подпото-ком.
Рассмотрим процесс формирования динамического образа процесса на основе событий, регистрируемых в системе. Для преобразования непрерывного потока событий в поток цельных наборов данных, подлежащих анализу, была использована простейшая реализация: разбиение потока на «контейнеры» событий по n событий в каждом. Данное разбиение необходимо для формирования входного вектора, используемого для идентификации процесса. Для хранения потока событий отдельного процесса будем использовать структуру, называемую далее хранилищем событий. С каждым процессом ассоциировано свое хранилище.
Пусть есть некий поток событий, генерируемых всеми процессами, активными в компьютерной системе. Будем считать, что существует возможность получения сигнала о появлении очередного события или системного вызова. Тогда построим следующий алгоритм обработки входящего потока событий (рисунок 2).
Определение эффективного размера контейнера
Так как каждый анализатор связан с одним конкретным классом процессов, то для формирования общего представления была построена система, состоящая из множества анализаторов.
Такая система обладает рядом важных свойств. Ограниченность области видимости — ни у одного из анализаторов нет информации ни об одном другом динамическом образе. Автономность — анализаторы обучаются и функционируют независимо друг от друга. Децентрализация — не существует анализатора, управляющего всей системой. Таким образом, систему взаимодействия множества анализаторов можно считать многоагентной системой (мультиагентной системой). Построенная система исключает взаимодействие агентов для взаимного обучения. Система не обладает роевым интеллектом.
Для обучения каждого нового агента используется информация операционной системы с указанием идентификаторов «своих» процессов (может быть запущено несколько копий). Все остальные процессы автоматически считаются «чужими». В конкретный момент времени возможно обучение любого числа агентов. Существуют глобальные значения PositiveExpected и NegativeExpected, значения которых определяют, насколько близок агент к завершению обучения. Также для каждого созданного агента заводятся два счетчика: PositiveLearned и Negative-Learned. Начальные значения счетчиков равны нулю.
Администратор системы может запускать любое число агентов. При активизации очередного агента, администратору необходимо указать стратегию поведения для достижения «желтой» и «красной» границ. Если администратор «запрещает» процесс, то при достижении одной из границ опознанный процесс автоматически завершается.
При регистрации очередного контейнера для каждого активного агента выполняются следующие операции:
1. Предложены алгоритмы сбора информации о поведении процесса в виде потока событий в операционной системе, позволяющие решать задачу формирования динамического образа процесса. Разработаны алгоритмы обработки потока событий и обработки потока контейнеров событий. Описана реализация обработчика событий, который позволяет собирать информацию о поведении процессов в реальном времени.
2. Для распознавания множества процессов предлагается использование набора анализаторов на основе нейронных сетей, каждый из которых способен распознать один класс процесса. Описана реализация алгоритма использования набора нейронных сетей и алгоритма согласования их результатов. Разработаны алгоритмы обучения набора нейронных сетей для реальных процессов.
3. Разработаны алгоритмы использования цепочки анализаторов для идентификации процесса. Описано построение мультиагентной системы на основе набора обученных анализаторов.
4. Разработан программный комплекс динамической идентификации процессов. Глава 3. Динамический монитор и аудит процессов, политика ограниченного использования программ
Динамический монитор процессов был разработан как средство для мониторинга процессов и является примером применения динамической идентификации процессов. Компонент запрашивает информацию у модуля регистрации событий, и формирует из нее набор записей следующего вида {name, PID, BID, activity): агентов. Агент, который распознал поведение процесса с наибольшим значением res—P1 , записывает в BID свое имя. . использованные значения (registry values). Информация хранится в коллекции типа HashSet, что исключает сильное увеличение множества в результате дублирования записей. Для еще большего сокращения финального множества записей для реестра используется предобработка строк. В данной предобработке во всех записях, GUID ы (уникальные идентификаторы Windows) заменяются на строку «{GUID}».
Сведения о такого рода активностях полезны при отложенном анализе поведения процессов в системе.
В отличие от стандартного диспетчера задач Windows, динамический монитор процессов отображает процессы согласно их активности, что позволяет видеть процессы, способные «скрываться» от диспетчера задач: это клавиатурные шпионы, трояны, черви и т. п. Например, Ardamax Keylogger невидим таким диспетчерам задач, как Process Explorer и Windows Task Manager, однако при первой сетевой/реестровой/файловой активности в динамическом мониторе процессов появится запись, сообщающая о наличии действий процесса с неустановленным именем.
Стоит отметить, что методика применима для организации политики безопасности как «по черному списку», так и «по белому списку». В первом случае используются запрещающие агенты: соответствующий агент посылает сигнал завершения при обнаружении целевого процесса. Во втором случае агенты являются разрешающими: в системе по умолчанию запрещены все процессы, которые не распознаются ни одним агентом. Такая методика применима при организации замкнутых программных сред. В дальнейшем описывается реализация и тестирования для первого случая — организация политики безопасности «по черному списку».