Обнаружение вариантов вредоносных программ на основе чувствительных системных вызовов с использованием многослойных нейронных сетей
Никита Шахулов
Обнаружение вредоносных программ стало чувствительным к задачам, поскольку их угрозы распространяются от компьютерных систем до систем Интернета вещей. Современные варианты вредоносных программ, как правило, оснащены сложными упаковщиками, которые позволяют им обходить современные системы обнаружения, основанные на машинном обучении.
Обнаружение вариантов вредоносных программ на основе чувствительных системных вызовов с использованием многослойных нейронных сетей
Никита Шахулов
© Никита Шахулов, 2021
ISBN 978-5-0055-5330-0
Создано в интеллектуальной издательской системе Ridero
Обнаружение вредоносных программ стало чувствительным к задачам, поскольку их угрозы распространяются от компьютерных систем до систем Интернета вещей. Современные варианты вредоносных программ, как правило, оснащены сложными упаковщиками, которые позволяют им обходить современные системы обнаружения, основанные на машинном обучении. Для обнаружения упакованных вариантов вредоносных программ можно использовать методы распаковки и динамический анализ вредоносных программ. Однако методы распаковки не всегда могут быть полезны, поскольку существуют некоторые упаковщики, такие как частные упаковщики, которые трудно распаковать. Хотя динамический анализ вредоносных программ может получить информацию о поведении исполняемых файлов, поведение упаковщиков при распаковке добавляет шумную информацию к реальному поведению исполняемых файлов, что плохо сказывается на точности. Чтобы преодолеть эти проблемы, в этой книге я предлагаю новый метод, который сначала извлекает серию системных вызовов, чувствительных к вредоносному поведению, затем использует анализ главных компонентов для извлечения функций этих чувствительных системных вызовов и, наконец, использует многоуровневые нейронные сети для классификации функций вариантов вредоносных программ и законных. Теоретический анализ и результаты экспериментов в реальной жизни показывают, что моя методика обнаружения упакованных вариантов вредоносных программ сопоставима с современными методами с точки зрения точности. мой подход позволяет достичь более 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 с затрат времени на классификацию. Более того, результаты оценки показывают, что мой подход обеспечивает очень низкую частоту ложноположительных результатов, что означает, что он редко ошибается при обнаружении упакованных доброкачественных экземпляров.