Эксперименты
В этом разделе я представляю несколько реальных экспериментов, демонстрирующих эффективность моего подхода. Ниже я сначала представлю установку эксперимента, набор данных и перекрестную проверку моего подхода. Затем я представлю несколько самых современных методов для сравнения. В последнем разделе я приведу дифференциальный анализ, анализ процесса конвергенции, оценку точности и оценку временных затрат моего подхода.
Настройка эксперимента, набор данных и проверка
Я реализую мой подход на одном компьютере. Версия процессора-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, который наблюдает за последовательностями упакованного или скрытого кода в вредоносном ПО, может быть самоидентифицирован, когда его выполнение во время выполнения проверяется по его статической модели кода. Однако эти методы распаковки не всегда могут быть полезны, так как не все упаковщики могут быть распакованы.
Ограничения
Поскольку мой подход основан на методе глубокого обучения, который может быть атакован противниками, это вызывает еще одну проблему безопасности. Хотя я разрабатываю процесс переподготовки и тестирования, чтобы избежать ядовитой атаки на данные со стороны взломщиков и сохранить производительность обнаружения (в разделе «Методология»), постоянная атака может отключить дальнейшее обновление моих нейронных сетей, вызванное переподготовкой с новыми обнаруженными образцами.
Выводы
В этой книге я предлагаю новый подход, который позволяет обнаруживать упакованные варианты вредоносных программ без распаковки. Для реализации моих подхода я предлагаю чувствительные к системным вызовам инициализированные многослойные нейронные сети на основе главных компонентов, которые могут хорошо работать с точки зрения точности и скорости классификации. Теоретический анализ и реальные экспериментальные результаты показывают, что моя технология обнаружения упакованных вариантов вредоносных программ сопоставима с самыми современными методами. В качестве будущей работы, помимо системных вызовов, я буду учитывать большее количество выполняемых действий, таких как подключения, операции пользователей и т.д., Чтобы усилить мои обнаружение. Кроме того, я сосредоточусь на защите своей системы обнаружения вредоносных программ от ядовитых атак на данные.