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

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

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

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

Представление изображений файлов

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

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

Введение в классификацию секций

Раздельная классификация — это новый метод, который я представляю для классификации двоичных файлов, таких как файлы ELF и PE32. Идея основана на предположении, что не каждый раздел в файле должен быть вредоносным, чтобы файл считался вредоносным.

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

В примере заражения невредоносного бинарного файла вредоносным кодом до заражения все разделы будут безопасными. Однако после заражения файл будет вредоносным, но вредоносным будет только новый раздел.

Идея классификации разделов состоит в том, чтобы анализировать разделы по отдельности, а не файл в целом.

Сверточная нейронная сеть

Классификатор, использованный в исследовании, — это сверточная нейронная сеть, вдохновленная форматом VGG-16, но созданная для изображений 32x32.

Создание базовой линии — классификация файлов

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

Подход довольно прост: возьмите два набора размеченных данных, преобразуйте их в изображения и обучите CNN. С ограниченным набором данных удалось достичь максимальной точности 94,19%. Результаты согласуются со 100 рандомизированными тестами.

Раздел Классификация

Классификация разделов в основном аналогична классификации файлов с той разницей, что файлы должны быть разделены на отдельные разделы.

Во время обучения CNN будет находить отношения между тем, что она определяет как вредоносный раздел, не учитывая, из какого файла/контекста взят этот раздел.

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

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

Хотя бы одна оценка

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

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

Оценка большинства голосов

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

Результаты от этого были лучше, чем как по крайней мере один, так и по классификации файлов, достигая неизменно высоких результатов с максимальным значением 98,06%.

Результаты

Большинство голосов последовательно выполняет классификатор файлов, игнорируя несколько случаев. Причина этого в том, что преобразование одного файла, который будет изображением 32x32, в ~5 изображений 32x32, увеличивает данные, сохраняя при этом одинаковую временную сложность классификатора.

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