В этой статье будет рассмотрен метод обучения глубокой нейронной сети для автоматической генерации сигнатур вирусов, с целью дальнейшего предотвращения заражения информационных систем. Метод использует сеть глубоких убеждений, реализованную с глубоким стеком шумопонижающих автокодеровщиков, генерирующих инвариантное поведение вредоносного ПО. В отличие от обычных методов подписи, которые не могут обнаружить большинство новых вариантов, существующих вредоносных программ, подписи, сгенерированные по методу глубокого обучения, позволяют получить точную классификацию новых вариантов вирусов. Благодаря использованию набора данных, содержащего сотни вариантов для нескольких основных семейств вирусов, с помощью данного метода можно достичь почти 98 % точности в классификации вирусных сигнатур (характерных признаков вирусов).
Ключевые слова: глубокая нейронная сеть, сигнатура вируса, песочница, вредоносное ПО, сетевой трафик
Введение
Несмотря на почти экспоненциальный рост числа новых вирусов (например, по данным Panda Security в 2016 году в день появлялось почти 160 000 вредоносных программ), методы защиты от этих угроз остались неизменными. Большинство антивирусов обнаруживают вредоносное ПО, анализируют его и вручную создают специальную подпись, которую выпускают, как обновление. Ручной анализ, как правило, занимает много времени. Вредоносное ПО остается незамеченным и продолжает заражать новые компьютеры. Так же при обнаружении вирусов вносятся лишь минимальные изменения в код, так что новый вариант вируса практически невозможно обнаружить быстро.
Для автоматизации поиска вредоносного ПО было предложено несколько методов генерации сигнатур, такие как подписи на основе конкретных уязвимостей, полезная нагрузка, приманки и т. д. Основной недостаток этих методов в том, что они нацелены на конкретные аспекты вредоносного ПО, что позволяет разработчикам вирусов создавать новые варианты, изменяя малые части кода.
В этой статье будет представлен новый метод подписи, который не зависит от конкретных аспектов вирусов и тем самым инвариантен ко многим модификациям вирусного кода. Метод опирается на обучение глубокой сети убеждений или, по-другому, глубокой неконтролируемой нейронной сети, которая инвариантна в представление общего поведения вредоносного ПО.
В следующем разделе будут рассмотрены несколько предыдущих подходов для автоматической генерации сигнатур. В разделе 3 будет описан метод глубокого обучения. В четвертой главе будут представлены заключительные замечания.
Обзор подходов автоматической генерации сигнатур
Очень сложно успешно генерировать подписи, которые могут использоваться для предотвращения новых атак. Обычные методы без автоматизации неэффективны против вредоносных программ. Поэтому было предложено несколько подходов для улучшения процесса генерации подписи. Кратко рассмотрим несколько из них.
В основном все эти методы строятся на анализе трафика [1] (при условии, что трафик существенно не меняется для каждого варианта вредоносного ПО). Подпись фиксирует источник и соединение, предпринятое извне сети (входящие соединение). Внешний источник считается вредоносным, если он сделала более чем определенное количество попыток подключиться к IP-адресу сети. Подпись выбирает наиболее часто повторяющуюся последовательность байтов из трафика этого источника и использует ее в качестве своей подписи. Однако вредоносная программа может уклоняться от обнаружения, изменяя свою наиболее часто используемую последовательность байтов.
Аналогичный подход для генерации подписи на основе сетевого трафика представляют ячеистые сенсорные сети, которые используют наибольшие общие подстроки для генерации сигнатур и измерения сходства в пакетных нагрузках. Датчик контролирует поток информации в сети и пытается обнаружить вредоносные атаки с использованием аномалий. Пакеты, связанные с атаками и нулевым днем (вирусы, для которых еще не разработаны защитные механизмы) отличаются от обычного сетевого трафика. [3]
Другой метод Amd генерирует семантические коды и указывает условия для совпадения между шаблонами и проверяемыми программами. Полиграф генерирует подписи, которые в свою очередь используют подстрочные подписи, для расширения возможностей обнаружения вредоносных программ.
Большинство вирусов представляют из себя многомодульные программы, содержащие большое число подмодулей и поэтому статистического анализа недостаточно для их точной классификации. Авто-знак [3] генерирует список подписей для вредоносного ПО путем разделения его исполняемого файла на сегменты равного размера. Для каждого сегмента создается подпись. Список подписей в следствии оценивается. Этот метод более устойчив к небольшим изменениям, но вредоносное ПО может уклоняться от этого метода путем шифрования исполняемого файла. Таким образом оно уклоняется от любого метода, который сравнивает исполняемые файлы и подпись.
Предлагаемый метод генерации подписей
В этом разделе представлен новый подход к поколению подписей. Главный вопрос, на который мы попытаемся ответить: возможно ли сгенерировать подпись для программы, чье поведение является инвариантным к малым масштабам изменений.
В 2014 году студенты из университета штата Пенсильвания провели эксперимент, который заключался в следующем.
С помощью глубоких автокодеровщиков было обработано больше 10000 рандомных изображений, взятых из Интернета. Для каждого из них был создан короткий двоичный код. На основе сравнения этих кодов было выяснено, что, например, изображения слонов имеют одинаковые участки кода.
Предлагаемый метод состоит из следующих этапов:
- Неконтролируемый этап обучения. На этом этапе учитывается набор вредоносных программ;
- , Запуск каждой программы в песочнице для генерации текстового файла, содержащего поведение программы.
- Анализ текстового файла песочницы и преобразование его в двоичную битовую строку
- Передача строк в нейронную сеть.
- Многоуровневое обучение глубокой сети убеждений с использованием глубоких шумопонижающих автокодеров. Обучение полностью неконтролируемо, и сеть не знает метки каждого образца.
Сеть имеет восемь уровней, каждый из которых содержит 30 нейронов. Таким образом, полученная в результате глубокая сеть в основном генерирует подпись, содержащую 30 чисел с плавающей запятой для каждого программа запускается в песочнице. Песочница — это особая среда, которая позволяет вести журнал поведения программ (например, вызов функций API, их параметры и файлы созданные или удаленные). [5] Результаты сохраняются в файле (обычно текстовом). На рисунке 1 представлен фрагмент журнала, записанный в виде песочницы.
Рис. 1. Фрагмент журнала, записанный в виде песочницы
Мы используем большой набор данных, содержащий несколько основных категорий вредоносных программ и нескольких сотен вариантов подписей для каждой программы. Обученная сеть генерирует подпись для каждого образца вредоносного ПО. Качество и способность представления этих генерируемых подписей изучается путем запуска на них нескольких контролируемых методов классификации. Результаты показывают, что глубокая нейронная сеть достигает 98 % точности классификации при проверке данных, что свидетельствует о высокой степени обучаемости сети.
Самый простой способ преобразования созданной песочницы из текстового файла в строку фиксированного размера — использовать один из общих методов обработки естественного языка. Простейший из этих методов — однограммовая (1-граммовая) экстракция или извлечение. Например, учитывая набор данных для образцов текста, сначала в тексте находится 5000 наиболее частых слова (эти слова будет содержать словарь), а затем для каждого тестового примера проверяется, какие из этих 5000 слов присутствуют в строке. Таким образом, каждый образец текста представлен как бит-строка размером в 5000. В отличие от текста на языке файла, файлы песочницы содержат разнообразную информацию и требуют несколько этапов предварительной обработки для извлечения полезного содержимого (например, строка после тега
Вывод
В этой статье были рассмотрены прошлые подходы к генерации сигнатур для вредоносных программ и предложен новый метод, основанный на глубоких сетях убеждений. Существующие подходы к генерации сигнатур вредоносных программ используют специфические аспекты вредоносного ПО (например, определенную нормальность сетевого трафика или подстроку в программе); таким образом, новые варианты вредоносного ПО легко уклоняются от обнаружения, изменяя небольшие части их кода.
Предложенный новый подход вдохновлен недавним успехом в обучении глубоких нейронных сетей, которые реализуют инвариантные представления. Сначала вредоносное ПО запускается в песочнице, а затем файл журнала песочница конвертируется в длинную двоичную битовую строку. Эта битовая строка подается в глубокую 8-слойную нейронную сеть, которая производит 30 значений в своем выходном уровне. Эти значения используются в качестве сигнатуры программы. Экспериментальные результаты показывают, что сигнатуры, созданные глубокими нейронными сетями, очень удобны для обнаружения вредоносных программ. Эти подписи могут либо использоваться в полностью неконтролируемой структуре, либо использоваться для контролируемой классификации вредоносных программ.
Литература:
- Горбань А. Н. Обучение нейронных сетей. — М.: СССР-США-СП.: Параграф, 1990. — 160 с.
- Хайкин С. Нейронные сети: полный курс 2-е изд. — М.: Вильямс, 2006. — 1104 с.
- Ясницкий Л. Н. Введение в искусственный интеллект. — М.: Академия, 2005. — 176 с.
- Еремин Д. М., Гарцеев И. Б. Искусственные нейронные сети в интеллектуальных системах управления. — М.: МИРЭА, 2004. — 75 с.
- Терехов В. А., Ефимов Д. В., Тюкин И. Ю. Нейросетевые системы управления. — М.: Высшая школа, 2002. — 184 с.