Любой софт, предназначенный специально для нанесения ущерба системе, похож на паразита – так или иначе, он повреждает родительскую ОС. Каждый год производятся тысячи образцов новых вредоносных программ, из которых антивирусами обнаруживаются меньше половины. Вот некоторые из традиционных методов, используемых для распознавания вредоносных программ:
- Обнаружение в песочнице. Подозрительное ПО работает в виртуальной среде, где отслеживаются его действия. На основе наблюдений антивирус выясняет, является ли программное обеспечение вредоносным. Но этот метод можно обойти, если программа настолько огромна, что не может быть обработана в виртуальной среде или когда опасный файл сохранен в обфусцированном виде.
- Обнаружение на основе сигнатур. Антивирусная компания создает сигнатуру для вредоносных программ и обновляет её в своей БД. Антивирус сравнивает сигнатуру сканируемого ПО с сигнатурами в базе. Проблема в том, что невозможно создать подписи для каждого вновь созданного образца.
Поэтому в наши дни специалисты по кибербезопасности среди различных методов обнаружения вредоносных компонентов стали применять методы компьютерного зрения и глубокого обучения. Подробно идея анализа изображений для вредоносного ПО была описана в научной публикации 2011 г. Malware Images: Visualization and Automatic Classification. Идея заключается в следующем. Бинарный файл считывается в виде 8-битного вектора целых чисел, а затем укладывается в двумерный массив. Такой массив удобно представить как изображение в оттенках серого с диапазоном [0,255]
(0
– чёрный, 255
– белый).
На рисунке ниже показан пример изображения для распространенного трояна Dontovo A, который загружает и запускает произвольные файлы. Интересно отметить, что во многих случаях, как на рисунке, различные разделы (двоичные фрагменты) вредоносного ПО демонстрируют различные текстуры.
Блок .text
содержит исполняемый код, в блоке .data
находится как неинициализированный код, так и инициализированный данные, в разделе .rsrc
хранятся ресурсы модуля, например, иконки приложения.
Виртуальные вирусы так же, как реальные, имеют склонность к мутации – возникают целые семейства вирусов. Сравнение показывает, что программы внутри одного семейства имеют схожую структуру. Это позволяет выявлять новые примеры вредоносных программ из уже известной группы и даже обобщать результаты на еще неизвестные семейства.
В дальнейшем метод был модифицирован и позволил обнаружить и другие семейства. Ниже представлено изображение, взято из диссертации 2017 г. Malware Classification Using Image Representation.
На изображении приведены «снимки» вредоносных программ различных семейств, полученные с использованием близкого подхода, в котором используется цветовое отображение.
Примеры обработки данных
Таким образом, для ускорения процесса обнаружения вредоносного программного обеспечения можно использовать такое простое преобразование бинарного кода в изображение и сличение с известными примерами. Этот процесс вполне можно доверить алгоритмам компьютерного зрения. Как классическим подходам, так и развившимся в последние годы неройсетевым решениям.
Например, в упомянутой выше статье "Malware Images: Visualization and Automatic Classification" для вычисления текстурных признаков используется вейвлет-декомпозиция изображения с использованием фильтра Габора, а также метод k-ближайших соседей с Евклидовым расстоянием. Фильтр Габора – это линейный фильтр, анализирующий частотное содержание изображения в определенном направлении в области анализа. Он используется для обнаружения краев, анализа текстур и извлечения объектов. Авторы использовали базу данных с 9.5 тыс. вредоносными программ из 25 семейств, и получили 98% точности обнаружения.
В упомянутой диссертации 2017 г. Malware Classification Using Image Representation сравнивались две модели: модель CNN с двумя слоями свертки и двумя плотными слоями (точность 95%) и модель Resnet18 (точность 98%).
В работе 2016 г. Convolution Neural Networks for Malware Classification авторы обучали три модели свёрточных нейросетей с различной, довольно сложной архитектурой. Наилучшие результаты дала модель CNN 2C 1D, состоящая из входного слоя 32x32 пикселя, сверточными слоями с 64 и 128 фильтрующими картами размером 3x3, двумя max-pooling-слоями, плотно связанным слоем из 512 нейронов и выходного слоя из 9 нейронов. Точность определения составила 99.8 %.
Заключение
В наши дни злоумышленники используют автоматизированный подход к атакам, и антивирусам трудно защищать системы устаревшими методами, когда код вируса может переписываться «на лету». Методы компьютерного зрения могут оказать существенную помощь в обнаружении вредоносных программ, обнаруживая характерные образы и паттерны.
Комментарии