Обнаружение вариантов вредоносных программ на основе чувствительных системных вызовов с использованием многослойных нейронных сетей
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Обнаружение вариантов вредоносных программ на основе чувствительных системных вызовов с использованием многослойных нейронных сетей

Никита Шахулов

Обнаружение вариантов вредоносных программ на основе чувствительных системных вызовов с использованием многослойных нейронных сетей






12+

Оглавление

Обнаружение вредоносных программ стало чувствительным к задачам, поскольку их угрозы распространяются от компьютерных систем до систем Интернета вещей. Современные варианты вредоносных программ, как правило, оснащены сложными упаковщиками, которые позволяют им обходить современные системы обнаружения, основанные на машинном обучении. Для обнаружения упакованных вариантов вредоносных программ можно использовать методы распаковки и динамический анализ вредоносных программ. Однако методы распаковки не всегда могут быть полезны, поскольку существуют некоторые упаковщики, такие как частные упаковщики, которые трудно распаковать. Хотя динамический анализ вредоносных программ может получить информацию о поведении исполняемых файлов, поведение упаковщиков при распаковке добавляет шумную информацию к реальному поведению исполняемых файлов, что плохо сказывается на точности. Чтобы преодолеть эти проблемы, в этой книге я предлагаю новый метод, который сначала извлекает серию системных вызовов, чувствительных к вредоносному поведению, затем использует анализ главных компонентов для извлечения функций этих чувствительных системных вызовов и, наконец, использует многоуровневые нейронные сети для классификации функций вариантов вредоносных программ и законных. Теоретический анализ и результаты экспериментов в реальной жизни показывают, что моя методика обнаружения упакованных вариантов вредоносных программ сопоставима с современными методами с точки зрения точности. мой подход позволяет достичь более 95,6% точности обнаружения и 0,048 с затрат времени на классификацию.

Введение

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

Поскольку анализ вредоносных программ включает в себя два вида способов: статический анализ и динамический анализ. Некоторые исследования, такие как (Сантос и соавт. 2011; Чезаре и соавт. 2014; Nataraj соавт. 2011; Чжан и соавт. 2016; Чжан и соавт. 2016; Ян и соавт. 2015; Раман и соавт. 2012), предлагаю использовать статический анализ, который извлекает объекты из двоичных файлов без фактического выполнения программ, таких как коды операций, контроль передачи графической и т. д. для обнаружения вариантов вредоносных программ. Однако, когда варианты вредоносного ПО уже упакованы, это предотвращает дальнейший анализ с помощью инструментов разборки, инструментов синтеза и других инструментов статического анализа.

Современные варианты вредоносных программ всегда оснащены сложными пакерами, такими как ASPack (2017), ASProtect (2017), UPX (2017), VMProtect (2017), ZProtect (2017) и т.д., Которые позволяют вариантам вредоносных программ обходить традиционные и современные системы обнаружения. Эти упаковщики включают два вида упаковщиков: упаковщики шифрования и упаковщики сжатия, которые работают, беря существующее приложение, упаковывая его, а затем оборачивая вокруг него утилиту распаковки. Утилита распаковки работает для распаковки внутреннего исполняемого файла в памяти и передает ему выполнение. Проблема заключается в том, что в упаковщике или коде распаковки нет ничего изначально вредоносного (Treadwell et al. 2009). При игнорировании упаковщиков трудно определить, является ли исполняемый файл вредоносным из-за шифрования или сжатия исполняемого файла, что не позволяет системам обнаружения получать оригинальные функции, особенно для статического анализа.

Такая ситуация вынуждает исследователей применять методы распаковки или динамического анализа вредоносных программ для обнаружения упакованных вариантов вредоносных программ. Однако все еще существуют некоторые проблемы. С одной стороны, некоторые исследователи предпочитают распаковывать упакованные программы, а затем обнаруживать распакованные. Но методы распаковки не всегда могут быть полезны, поскольку крекеры могут писать своим частным упаковщикам, которые трудно распаковать. С другой стороны, другие исследования, такие как (Чжан и др. 2016; Хуан и др. 2014; Сюй и др. 2016; Кумар и др. 2012; Конрад и др. 2011; Бай и др. 2014; Сантос и др. 2013), предпочитают использовать динамический анализ, который отслеживает взаимодействие между операционной системой и программами в изолированных средах или виртуальных машинах для сбора таких функций, как системные вызовы, трафик и т.д.. Хотя динамический анализ может получить поведение упакованного исполняемого файла при выполнении, поведение при выполнении не только включает исходное поведение, но также включает поведение упаковщиков исполняемого файла, которое запутывает исходное поведение. Существующие методы не учитывают запутанность, вызванную поведением упаковщиков.

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

В последнее время существует несколько связанных работ по анализу на основе системных вызовов. Некоторые из них предпочитают использовать n-грамм для представления временных последовательных взаимосвязей системных вызовов и используют классификаторы для классификации вредоносных исполняемых файлов и законных, таких как (Конрад и др. 2011; Канзанезе и др. 2015) и т. Д.

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

Поскольку системные вызовы вариантов вредоносных программ, принадлежащих к одним и тем же семействам, имеют схожие дистрибутивы, и существует значительная разница в дистрибутивах между вредоносными и безвредными (Jang et al. 2015), некоторые системные вызовы чаще используются в вариантах вредоносных программ. Я предлагаю извлечь серию чувствительных системных вызовов, встроить их частоты в вектор и применить метод глубокого обучения для решения этих проблем. Некоторые недавние исследования также использовал глубокое обучение для обнаружения уязвимостей или вредоносных программ, которые обеспечивают более высокую точность, например (Li et al. 2018; Kolosnjaji et al. 2016) и т. д. Сначала я извлекаю серию системных вызовов, которые более чувствительны к вредоносному поведению, основанному на теории информационной энтропии. Я называю эти системные вызовы чувствительными системными вызовами, которые уменьшают степень запутанности. Затем я встраиваю системные вызовы в вектор, используя частоту встречаемости. Чувствительные системные вызовы позже будут отправлены в нейронную сеть для обучения или классификации. Далее я предпочитаю использовать многослойные нейронные сети для обучения модели. Наконец, я использую модель для обнаружения и классификации вариантов вредоносных программ.

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

Взносы

Основные материалы этой книги обобщены следующим образом.

1. Чтобы уменьшить запутанность, вызванную упаковщиками, я извлекаю серию системных вызовов из распакованных экземпляров, которые более чувствительны к вредоносному поведению, путем обучения с получением информации, которая пропускает знания о распаковке.
2. Для обнаружения с разреженным представлением чувствительных системных вызовов я предлагаю мою многослойную нейронную сеть, инициализированные основным компонентом, в качестве эффективного и действенного классификатора для классификации упакованных вредоносных вариантов и упакованных законных.
3. Результаты экспериментов показывают, что мой подход обеспечивает 95,6% точности обнаружения и 0,048 с затрат времени на классификацию. Более того, результаты оценки показывают, что мой подход обеспечивает очень низкую частоту ложноположительных результатов, что означает, что он редко ошибается при обнаружении упакованных доброкачественных экземпляров.

Бумажные организации

Остальная часть этой книги организована следующим образом. В разделе «Методология» представлена моя методика обнаружения упакованных вариантов вредоносных программ. Раздел «Эксперименты» показывает результаты экспериментов, а раздел «Сопутствующие работы» знакомит с сопутствующими работами. Раздел «Ограничения» и раздел «Выводы» показывают ограничение и заключение.

Методология

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

Мой подход включает в себя следующие две фазы: фазу обучения и фазу обнаружения. Рабочий процесс моего подхода показан на рис.1, на этапе обучения я отслеживаю системные взаимодействия исполняемых файлов в песочнице Cuckoo (Malwr 2018) для получения системных вызовов. Каждый профиль исполняемых файлов, который я получил из песочницы Cuckoo, содержит несколько полей: отметка времени, системный вызов, базовый адрес, имя файла, время выполнения и т. д. Я рассматриваю только системные вызовы, поскольку они могут предоставить нам достаточно информации для описания характеристик поведения вредоносных программ при одновременном снижении шума и избыточности. Затем, основываясь на получении информации (Peng et al. 2005), селектор используется для извлечения конфиденциальных системных вызовов, которые выбирают серию высокочастотных системных вызовов в вредоносных исполняемых файлах и отказываются от других системных вызовов, которые обычно используются в любом месте. Селектор выводит вектор, организованный этими чувствительными системными вызовами. Наконец, мой основной компонент инициализировал многослойные нейронные сети, которые обучают эти чувствительные системные вызовы и получают параметры, которые будут использоваться для классификации на этапе обнаружения. На этапе обнаружения мои нейронные сети оснащены этими параметрами для классификации упакованных вариантов вредоносных программ и упакованных преимуществ.

Извлечение конфиденциальных системных вызовов на основе получения информации

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

Определение 1

Конфиденциальные системные вызовы-это часть системных вызовов, которые очень часто действуют в распакованных вредоносных исполняемых файлах, в то время как не в распакованных законных.

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

В этой книге я использую информацию, которая широко использовалась для выбора функций. Пусть Y-обучающие наборы данных, где y1-набор вредоносных данных, а y2-набор безопасных данных. Пусть S — набор общих системных вызовов, где si-i системный вызов в S. Пусть X-набор чувствительных системных вызовов, извлеченных из S, где xj-j-й чувствительный системный вызов в X. Для извлечения конфиденциальных системных вызовов я использую коэффициент (ы) прироста информациив качестве веса для каждого системного вызова в соответствии с эквалайзером. (1), где p (si) — вероятность для каждого si, p (y1) — вероятность вариантов вредоносных программ, p (si|y1) — вероятность для каждого siin y1, а t-постоянное значение. Выигрыш (si) больше, когда sii более релевантны вредоносным исполняемым файлам.

Пусть FK может быть в K- й исполняемый файл в Y, то вычислить вероятность р (хДжК) для каждого Xи J в FК, где N (ФК) — это общее количество всех чувствительных системных вызовов в ЖК и Н (ХДжк) — общее число ИксДжей в ФК, по формуле. (2).

P (xj|fk) в качестве входных данных будет отправляться в мои основные компоненты, инициализированные многослойными нейронными сетями, для обнаружения вредоносных исполняемых файлов.

Основной компонент инициализировал многослойные нейронные сети для обнаружения вредоносных программ

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

В качестве эффективного классификатора нейронные сети широко используются для классификации во многих областях, таких как распознавание изображений, обработка естественного языка и т. д. В этой книге я использую нейронные сети для классификации вредоносных и законных исполняемых файлов. Многослойные нейронные сети (Фернандес Кабальеро и др.,2003; Эсмаили и др.,2015; Салай Сельвам и др.,2011; Сальседо Парра и др.,2014) как один из методов глубокого обучения обеспечивает более быструю скорость сходимости и более высокую точность по сравнению с однослойными нейронными сетями, но также имеет некоторые недостатки, такие как исчезновение градиента, чрезмерная подгонка и т. д. Чтобы преодолеть эти недостатки и еще больше повысить скорость сходимости и точность, я предлагаю моюи многослойные нейронные сети, инициализированные основным компонентом.

Архитектура моей нейронных сетей представлена на рис. 2, который имеет несколько слоев, один входной слой (чувствительный вектор вероятности системного вызова), слой инициализированных объектов основного компонента, четыре слоя скрытых единиц измерения (рассмотрим компромисс между точностью и затратами времени, я выбираю четыре слоя скрытых единиц измерения для повышения точности при сохранении затрат времени на обучение и обнаружение) и один выходной слой. Во время прямого прохождения нейронные сети сначала используют ортогональное преобразование для преобразования набора входных данных в набор функций линейно некоррелированных переменных, называемых основными компонентами (PCA 2017). Эти основные компоненты позволяют быстро объединить мои нейронные сети. Каждый основной компонент инициализированной функции полностью соединяет блоки в следующем скрытом слое, и каждый блок в скрытом слое полностью соединяет следующий слой. Выводом является вектор, состоящий из 1 и 0, который отдельно представляет собой метку вредоносного или доброкачественного. Во время обратного распространения нейронные сети используют метод градиентного спуска (Gradient descent 2017) для распространения дисперсии с выходного слоя на слои объектов, инициализированные основным компонентом, и обновления весовых матриц соединений между двумя слоями.

Сначала я присваиваю весовым матрицам набор случайных значений и вычисляем среднюю вероятность S-го среднего системного вызова в обучающих наборах данных. Для каждого исполняемого файла вставьте его p (xj|fk) в качестве входных данных в нейронные сети. В слое объектов, инициализированных основным компонентом, сети сначала вычисляют вектор дисперсии Svar (fk) в соответствии с уравнением. (3). Затем сети вычисляют матрицу ковариации и собственные векторы. Пусть cvmat-ковариационная матрица в соответствии с уравнением. (4), где nтренировок-это количество обучающих выборок.

Пусть ui (m +1) — это i единица в (m +1) — м скрытом слое, я вычисляю ui (m +1) в соответствии с уравнением. (8), где wj, i (m +1) — матрица веса между j единицей в m скрытом слое и i единицей в (m +1) — м скрытом слое.

Пусть eigenV-собственные векторы столбцов в соответствии с cvmat, где eigenVi-i собственный вектор в собственном порядке по собственному значению ai от максимума до минимума в соответствии с уравнением. (5).

|cvmat−a⋅E|=0|cvmat−a⋅E|=0

Я организовал верхние собственные векторы t (векторы столбцов, t равно 50 в качестве моего номера размера инициализированной функции основного компонента), чтобы сгенерировать новую собственную матрицу и вычислить инициализированные функции главного компонента pcj в соответствии с уравнением. (6). Эти функции являются входными данными для следующих скрытых слоев, которые увеличивают контраст среднего распределения между упакованными вредоносными исполняемыми файлами и упакованными законными исполняемыми файлами.


pcj=Svar (fk) j⋅eigenM


Пусть ui (1) является i- й единицей в первом скрытом слое, я вычислил ui (1) в соответствии с уравнением. (7), где wj, i (1) — матрица весов между j инициализированным слоем основного компонента и i единицей в следующем скрытом слое.

Пусть ui (m +1) — это i единица в (m +1) — м скрытом слое, я вычислил ui (m +1) в соответствии с уравнением. (8), где wj, i (m +1) — матрица веса между j единицей в m скрытом слое и i единицей в (m +1) — м скрытом слое.

Пусть hi-i- я единица в выходном слое, я вычислил hi в соответствии с уравнением. (9), где wj, i (n) — матрица веса между j единицей в n-м (последнем) скрытом слое и i единицей в выходном слое.

Чтобы приблизиться к цели, нейронные сети тренируют входные данные и корректируют весовые матрицы путем обратного распространения с помощью метода градиентного спуска (Gradient descent 2017). Функция потерь, которую я использую в моей методе, — это квадратная функция потерь E (x) в соответствии с уравнением. (10), где H (x), который включает в себя набор hi, является результатом работы нейронных сетей, а V-реальное значение.

Я обновляю матрицу весов wj, i (n +1) между последним скрытым слоем ui (n) и выходным слоем hi в соответствии с уравнением (11), где vi-реальное значение метки исполняемого файла в обучающем наборе, а a-значение const.


wj, i (n+1) =wj, i (n+1) +α⋅uj (n) ⋅hi (1−hi) (vi−hi)


Пусть wj, i (n) — матрица веса между (n-1) — м скрытым слоем искрытым слоем u i (n) в соответствии с уравнениями. (12 и 13), где var. (n) -разница между (n-1) — м скрытым слоем и n скрытым слоем.


Пусть wj, i (m +1) — весовая матрица между m скрытым слоем и (m +1) — м скрытым слоем в соответствии с уравнениями. (14 и 15), где var. (m +1) — разница между m скрытым слоем и (m +1) — м скрытым слоем.


Пусть wj, i (1) — весовая матрица между слоем инициализированных объектов основного компонента и первым скрытым слоем в соответствии с уравнениями. (16 и 17), где var. (1) — разница между инициализированным слоем основного компонента и первым скрытым слоем.


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

Эксперименты

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

Настройка эксперимента, набор данных и проверка

Я реализую мой подход на одном компьютере. Версия процессора-i5–6500 @ 3,20 ГГц, оперативная память-16,0 ГБ, операционная система-Windows 7. Мой подход разработан языком программирования Java с Jre 1.6.

Чтобы подтвердить мой подход, я использую два разных набора данных для тестирования моей методологии обнаружения вариантов вредоносных программ: один предназначен для обучения, другой-для обнаружения. Набор обучающих данных включает 3167 распакованных исполняемых файлов вредоносных программ и 2894 распакованных неопасных исполняемых файлов. Набор данных обнаружения включает 2083 упакованных варианта вредоносных программ и 1986 упакованных доброкачественных экземпляров. Я использую несколько упаковщиков для упаковки вариантов вредоносных программ и доброкачественных экземпляров, таких как ASPack, ASProtect, UPX, VMProtect, Armadillo, ZProtect и т. д.

Мои экземпляры вредоносных программ загружены с веб-сайта VxHeavens (2017), который включает в себя 5 больших семейств вредоносных программ, таких как Бэкдор, Червь, Троянская капельница, Троянский банкир и Вирус, как показано в таблице 1. Эти вредоносные программы уже были помечены их семьями и вариантами названий на веб-сайте. В случае безобидных случаев я собрал их с моего персональных компьютеров.


Чтобы оценить эффективность моего подхода, я использую k-кратную перекрестную проверку в моих экспериментах. Таким образом, для каждой группы экспериментов набор обучающих данных был разделен на 10 групп. Для каждой группы я случайным образом выбираю 2000 распакованных исполняемых файлов вредоносных программ и 2000 безопасных исполняемых файлов для обучения, а оставшиеся 2083 упакованных варианта вредоносных программ и 1986 упакованных безопасных экземпляров используются для классификации и обнаружения. Критерии, которые я использов для оценки, включают точность классификации, истинную положительную частоту (TPR), ложноположительную частоту (FPR), точность, отзыв, итерации обучения, затраты времени на обнаружение.

Дифференциальный анализ распределения системных вызовов между вредоносными и вредоносными программами

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

Сравнение распределения системного вызова между распакованным вредоносным ПО и распакованным безопасным

Для моих извлеченных чувствительных системных вызовов я использую расхождение Kullback-Leibler (KLD), чтобы измерить разницу в распределении чувствительных вызовов между упакованным вредоносным/безопасным и распакованным вредоносным/безопасным, согласно (расхождение Kullback-Leibler 2018). Разница между упакованными и распакованными вариантами вредоносных программ составляет 0,4277, а разница между упакованными и распакованными вариантами составляет 0,3032. Это настолько мало, чтобы означать, что мои чувствительные системные вызовы уменьшают шум исходного системного вызова, создаваемый упаковщиками. Чтобы интуитивно показать разницу распределений, я представляю гистограммы средних распределений чувствительных системных вызовов между упакованными исполняемыми файлами и распакованными, как показано на рис. 4. В этой книге я выбираю несколько системных вызовов в качестве чувствительных системных вызовов, таких как LdrGetProcedureAddress, RegOpenKeyExW, RegQueryValueExW, RegCloseKey, findfileexw, NtDelayExecution, RegOpenKeyExA, RegQueryValueExA, RegEnumValueW, getcursorpo и т. Д.

Сравнение среднего распределения чувствительных системных вызовов между упакованными исполняемыми файлами и распакованными

Я дополнительно улучшаю эту функцию, извлекая инициализированные функции основного компонента. Эти функции не только увеличивают средний контраст распространения между распакованными вредоносными исполняемыми файлами и распакованными законными исполняемыми файлами, но также увеличивают средний контраст распространения между упакованными вредоносными исполняемыми файлами и упакованными законными исполняемыми файлами, как показано на рис. 5, сравнивая с рис. 4. Контраст достаточно велик, чтобы отличить вредоносное ПО от вредоносного, что демонстрирует, что моя функция инициализации основного компонента является эффективной и оптимальной для классификации.

Сравнение среднего распределения инициализированных функций основного компонента между упакованными исполняемыми файлами и распакованными

Анализ процесса конвергенции различных слоев моих нейронных сетей

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

Поскольку многослойные нейронные сети всегда имеют недостатки, такие как исчезновение градиента, чрезмерная подгонка и т.д., Которые плохо влияют на скорость сходимости, я преодолеваю эти недостатки и дополнительно повышаем скорость сходимости и точность, Чтобы продемонстрировать эффективность моего подхода, я сравниваю свой подход с другими методами в процессе сходимости, как показано на рис. 6 и рис. 7. На рис. 6, на нем показан процесс конвергенции моих нейронных сетей с 1 скрытым слоем по сравнению с обычными нейронными сетями с 1 скрытым слоем и рис. 7 показывает процесс конвергенции моих нейронных сетей с 4 скрытыми слоями по сравнению с обычными нейронными сетями с 4 скрытыми слоями. Из результатов эксперимента я легко могу узнать, что независимо от того, с 1 скрытым слоем или 4 скрытыми слоями, мой подход может значительно сократить разрыв между точностью обучения и точностью обнаружения, что означает, что мой подход может снизить чрезмерную подгонку. Кроме того, мои нейронные сети могут быстро сходиться.

Процесс конвергенции сравнение моих нейронных сетей с обычными нейронными сетями с 1 скрытым слоем


Сравнение процесса конвергенции между моих нейронными сетями и обычными нейронными сетями с 4 скрытыми слоями

Для нейронных сетей, поскольку многослойность может еще больше повысить скорость сходимости за счет сравнения с одним скрытым слоем, я также сравниваю различные слои и демонстрируем, что многослойность может еще больше повысить скорость сходимости моих нейронных сетей. Результаты эксперимента, как показано на рис. 8, демонстрируют, что 4 скрытых слоя моих сетей могут значительно повысить скорость сходимости по сравнению с 1 скрытым слоем.

Сравнение процесса конвергенции между моих нейронными сетями с 1 скрытым слоем и 4 скрытыми слоями

Когда я добавляю в свои сети больше скрытых слоев (более 4 слоев), точность обнаружения увеличивается медленнее, в то время как затраты времени на обнаружение быстро растут. Поэтому, учитывая соотношение между точностью и затратами времени, я выбираю 4 скрытых слоя в качестве наилучших слоев своих подхода для повышения точности обнаружения при сохранении затрат времени на обучение и обнаружение.

Современные подходы для сравнения

Чтобы продемонстрировать, что мой подход эффективен и действенен, я сравниваю свой подход с другими современными методами, такими как (Конрад и др. 2011; Канцанезе и др. 2015). Конрад Рик и др. (2011) предложил встраивать системные вызовы в вектор и применять методы кластеризации и классификации для обнаружения вредоносных программ. Раймонд Канцанезе и др. (2015) предложил использовать вектор n-граммовых частот системных вызовов и несколько классификаторов, таких как Машина опорных векторов, Логистическая регрессия и т. Д. для обнаружения вредоносных программ.

Оценка точности

Я демонстрирую, что мой подход является высокоточным, сравнивая его с другими современными методами, описанными в этом подразделе. Результаты точности представлены на рис. 9. Это показывает, что мои нейронные сети с 4 скрытыми слоями могут достигать более высокой точности, чем другие методы. Кривые рабочей характеристики приемника (ROC) (2018) на рис. 10 показывает, что мой подход отлично работает как с истинно положительной, так и с ложноположительной скоростью. Как полезный факт, поскольку пользователи-клиенты больше беспокоятся о частоте ложных срабатываний, частота ложных срабатываний моего подхода составляет почти 0%, в то время как истинная положительная частота составляет более 90%, что означает, что он не допустит ошибки при обнаружении упакованных преимуществ.

Кривая ROC нескольких методов

После обнаружения упакованных вариантов вредоносных программ я также дополнительно классифицирую их семейства, используя мои нейронные сети с чувствительными системными вызовами. Я классифицирую их по их семьям в следующем. Нейронные сети, которые я использовал для классификации семейств вредоносных программ, аналогичны нейронным сетям, которые я использовал для обнаружения вредоносных программ. Я меняю только выходной слой в архитектуре своих нейронных сетей для обнаружения вредоносных программ. Выходной слой представляет собой единый вектор, состоящий из 1 и 0, который отдельно представляет метку каждого семейства вредоносных программ. В соответствии с предварительно помеченными семейными метками вредоносных образцов я обучаю модель в своих сетях и используем ее для классификации вредоносных исполняемых файлов по их семействам после обнаружения вредоносных программ. Как показано на рис. 11, результаты показывают, что мой подход достигает средней точности классификации 85,68%, а показатели точности большинства семейств составляют более 84%, что означает, что мой подход может не только точно обнаруживать упакованные вредоносные исполняемые файлы, но также может классифицировать большинство из них по их семействам.

Анализ временных затрат

Как показано в таблице 3, из сравнений обучающих итераций, мои нейронные сети с 4 скрытыми слоями выполняют меньше итераций из-за более высокой скорости сходимости, чем другие слои. Хотя метод Конрада Рика и др. не нуждается в фазе обучения, их методы требуют больших затрат времени на обнаружение, что более чувствительно к пользователям-клиентам. По сравнению с подходом Раймонда Канцанезе и др., мой подход конкурентоспособен с точки зрения итераций обучения и затрат времени на обнаружение из-за более высокой скорости сходимости и меньших функциональных возможностей моего подхода.

Таблица 3 Сравнение итераций обучения и затрат времени на обнаружение

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

Сопутствующие работы
Вредоносное ПО сегодня является распространенной проблемой в распределенных компьютерных и сетевых системах. Было предложено множество подходов для обнаружения вредоносных программ с помощью машинного обучения. Некоторые из них предпочитают использовать статический анализ, остальные предпочитают использовать динамический анализ. Однако, сталкиваясь с различными упаковщиками, эти методы не всегда работают хорошо. В этом разделе я рассмотрю некоторые из них ниже. Статический анализ
I. Сантос и др. (2011) предложил метод интеллектуального анализа данных для определения релевантности каждого кода операции и оценки частоты каждой последовательности кодов операций, а затем использовал евклидово пространство (Евклидово пространство, (2017) для измерения расстояния между экземплярами программного обеспечения. S. Cesare и др. (2014) предложил метод, который выполняет поиск сходства наборов графиков потока управления. L. Натарадж и др. (2011) предложил метод визуализации и классификации двоичных файлов вредоносных программ в виде изображений в сером масштабе. J. Чжан и др. (2016; Чжан и др. 2016) предложил преобразовать коды операций в 2-D матрицу и использовал метод обработки изображений для распознавания исполняемых файлов вредоносных программ. W. Янг и др. (2015) предложил подход статического анализа, который извлекает контексты поведения, чувствительного к безопасности, чтобы помочь анализу приложений в различении вредоносного и доброкачественного поведения. Однако ряд авторов вредоносных программ используют методы упаковки для сжатия и шифрования вредоносных кодов, из-за которых эти подходы не могут работать, если упаковщики не могут быть идентифицированы или распакованы. Динамический анализ
Р. Конрад и др. (2011) предложил автоматически идентифицировать новые классы вредоносных программ с аналогичными последовательными системными вызовами и назначать неизвестные вредоносные программы этим обнаруженным классам. H. Bai и др. (2014) предложил идентифицировать варианты вредоносных программ с помощью машины векторов поддержки с вредоносным поведением, которое запускается с их результирующими результатами. C. Кумар и др. (2012) проверяют, соответствует ли зависимость системного вызова цели той же зависимости от подписанного вредоносного ПО. H. Чжан и др. (2016) предложил обнаружить основные инициирующие связи количества сетевых событий, которые обнаружили вредоносную активность на хосте. J. Хуан и др. (2014) проанализировали компонент пользовательского интерфейса, связанный с функцией верхнего уровня, и обнаружили несоответствие между ними для обнаружения скрытого поведения. L. Xu и др. (2016) реализовал представление на основе графиков для системных вызовов, затем использовал ядра графиков для вычисления парного сходства и передачи этих показателей сходства в машину опорных векторов для классификации. I. Сантос и др. (2013) предложил гибридный детектор вариантов вредоносных программ под названием OPEM, который использует набор функций, полученных как в результате статического, так и динамического анализа вредоносного кода. Однако эти упомянутые подходы не учитывают поведение упаковщиков, которое запутывает исходное поведение исполняемых файлов. Упакованный анализ
Работа Г. Суареса-Тангила и др. (2016) предлагает проанализировать поведенческие различия между исходным приложением и некоторыми автоматически переупакованными версиями, однако, когда новый вариант был упакован неизвестным инструментом, их подход больше не может работать, потому что он еще не проанализировал различия. Работа З. Шеху и др. (2016) предлагает для вычисления исполнения отпечатков пальцев приложение затемненный, и сравнить его с имеющейся базой отпечатков пальцев известных вредоносных программ, чтобы обнаружить возможные матчи, это матчи можно легко спутать с помощью разнообразных упаковщиков и benigns. Ж. Кальве соавт. с работой (2012) предложена методика определения функций шифрования, К. Куган соавт. с работой (2009) предлагает для определения точки перехода в коде, где выполнение переходов от распаковщика код для распаковки кодекса, П. Королевский соавт. с работой (2006) предлагает инструмент под названием PolyUnpacker, который наблюдает за последовательностями упакованного или скрытого кода в вредоносном ПО, может быть самоидентифицирован, когда его выполнение во время выполнения проверяется по его статической модели кода. Однако эти методы распаковки не всегда могут быть полезны, так как не все упаковщики могут быть распакованы.

Ограничения

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

Выводы

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