К вопросу обнаружения вредоносных программ, использующих технологию CUDA
Автор: Мостовой Яков Анатольевич, Рахмаев Дамир Маликович
Журнал: Инфокоммуникационные технологии @ikt-psuti
Рубрика: Технологии компьютерных систем и сетей
Статья в выпуске: 3 т.11, 2013 года.
Бесплатный доступ
Рассматривается задача обнаружения вредоносных программ (ВП), использующих графические процессоры компании NVIDIA и технологию CUDA. Для решения задачи обнаружения подобных ВП в файлах применен сигнатурный метод. Спроектировано и разработано программное средство, реализующее данный метод обнаружения ВП. Продемонстрировано его использование применительно к ВП, использующим графические процессоры в своей работе.
Графические процессоры, безопасность, вредоносные программы, сигнатурный метод обнаружения
Короткий адрес: https://sciup.org/140191640
IDR: 140191640
Текст научной статьи К вопросу обнаружения вредоносных программ, использующих технологию CUDA
В настоящее время все большую популярность набирает использование широко распространенных на пользовательских системах графических процессоров (GPU) для решения неграфических задач. Их использование позволяет в некоторых случаях существенно увеличить производитель- ность вычислительной системы. Одним из популярных подходов к программированию GPU для таких задач является использование технологии CUDA (Compute Unified Device Architecture) – архитектуры параллельных вычислений от компании NVIDIA, которая позволяет реализовать многопоточные вычисления общего назначения на графических процессорах ее производства [1].
На сегодняшний день продажи графических процессоров с поддержкой CUDA достигли 128 миллионов. Тысячи разработчиков программного обеспечения, ученых и исследователей широко используют CUDA в различных областях, включая обработку видео, астрофизику, вычислительную биологию и химию, моделирование динамики жидкостей, электромагнитных взаимодействий, восстановление изображений, полученных путем компьютерной томографии, сейсмический анализ, трассировку луча и многое другое [2]. Графические процессоры добавляются в систему посредством установки графический платы (ви- деокарты) или специализированной платы для параллельных вычислений в слот PCI Express. На современной графической плате располагается собственная быстрая память объемом 1-2 Гб. На специализированных графических платах объем памяти составляет 5-8 Гб. Таким образом, в современных компьютерных системах GPU является не только графическим процессором, но также и универсальным процессором для параллельных вычислений общего назначения, работающим с любыми приложениями.
Учитывая большой потенциал вычислений общего назначения на графических процессорах, естественно ожидать, что авторы вредоносных программ попытаются использовать мощные возможности современных GPU к своей выгоде [3]. Два ключевых фактора, которые влияют на жизненный цикл и результативность сложных ВП, – это способность обходить существующую антивирусную защиту и трудозатраты, требуемые аналитику вредоносных программ для анализа и раскрытия их функциональности, что зачастую является необходимым условием для реализации соответствующих механизмов обнаружения и сдерживания. Упаковка и полиморфизм – это одни из наиболее используемых техник для уклонения от обнаружения сканерами антивирусов [4]. Запутывание кода и антиотладочные приемы обычно используются, чтобы затруднить реверс-инжиниринг и анализ вредоносного кода [5].
До сих пор эти техники уклонения от обнаружения и антиотладки использовали особенности наиболее распространенных сред исполнения кода. Следовательно, механизмы защиты и анализа вредоносных программ, а также знания и опыт исследователей в области безопасности сфокусированы на IA-32, архитектуре с наиболее распространенным набором инструкций (ISA). Появившаяся возможность исполнять код общего назначения на GPU открывает совершенно новое окно возможностей для разработчиков ВП, чтобы значительно осложнить работу существующим средствам защиты.
В [6] было показано, что вычисления общего назначения на графических процессорах позволяют авторам вредоносных программ использовать преимущества GPU, установленных в современных персональных компьютерах, и увеличить стойкость их ВП против существующих систем защиты. Техники защиты кода, представленные в [6] – распаковка с использование GPU и полиморфизм во время выполнения, не только демонстрируют осуществимость создания ВП с поддержкой GPU, но также показывают большой потенциал вычислений общего назначения на GPU в повышении живучести и функциональности ВП.
Мы говорим об этом, чтобы вслед за [6] подчеркнуть, что лучшее понимание наступательных возможностей атакующих может привести исследователей к созданию более эффективных и стойких систем защиты. Задачей данной статьи является представить один из методов решения описанной выше проблемы анализа и обнаружения исполняемых файлов ВП, использующих GPU сигнатурным методом. С целью демонстрации эффективности метода представляется проект и реализация программного средства, которое, используя сигнатурный метод, эффективно решает задачу обнаружения вредоносных программ, использующих GPU.
Сигнатурный метод обнаружения файлов ВП, использующих GPU
Рассматриваются вредоносные программы, использующие GPU, которые могут копировать себя в каждый исполняемый файл, который они заражают. Этот тип ВП размножает идентичные побайтовые копии себя раз за разом. Они могут быть детектированы поиском определенной строки байтов, называемой сигнатурой ВП, которая была ранее извлечена из тела ВП.
Сигнатура ВП – это последовательность байтов, которая может быть найдена в коде ВП, но не может встретиться где-либо еще. Извлечение сигнатуры ВП представляет собой сложную работу. Аналитики вредоносных программ должны внимательно проанализировать тело ВП, чтобы извлечь ее сигнатуру. Когда появляются новые ВП, аналитик должен проанализировать инфицированный файл и обнаружить паттерн, или сигнатуру, этой вредоносной программы.
После обнаружения сигнатуры различных ВП сохраняются в базу данных сигнатур антивирусной программы. Эта база данных с сигнатурами распространяется среди пользователей вместе с антивирусной программой. Антивирусная программа использует эти сигнатуры, чтобы просканировать уязвимую область компьютера (сюда включаются файлы, загрузочная запись, файлы документов с макросами и т.д.), чтобы обнаружить присутствие какой-либо из известных сигнатур. Если обнаруживается какая-либо из сигнатур ВП, то целевая программа считается зараженной, в противном случае незараженной.
Хотя обнаружение сигнатур – это простой и надежный метод, он имеет ограничения, которые заключаются в том, что он может обнаруживать известные ВП, чьи сигнатуры уже извлечены и включены в базу данных сигнатур антивирусной программы. Он не может обнаруживать вариации известных ВП, даже несмотря на то, что различия между сигнатурами могут быть очень невелики.

Рис. 1. Последовательность этапов сигнатурного метода
Исполняемый код распаковщика ВП для GPU как сигнатура ВП
Авторы [6] привели серьезные доводы об опасном потенциале использования GPU во вредоносных программах, но не учли того факта, что сам исполняемый код распаковщика ВП для GPU может послужить сигнатурой, которая будет выявлена и использована аналитиком вредоносных программ. С точки зрения аналитика вредоносных программ, двоичный файл ВП, использующей GPU, содержит код, предназначенный для запуска на различных процессорах, как показано на рис. 2.
Во время своего исполнения вредоносная программа загружает зависимый от устройства код на GPU, выделяет область памяти, доступную и для CPU, и для GPU, инициализирует разделяемыми данными и планирует исполнение GPU кода. В зависимости от проекта поток управления может переключаться туда и обратно между CPU и GPU или параллельно выполняться на обоих процессорах.
Однако до момента запуска исполняемый файл вредоносной программы – самый обычный файл, и его можно просканировать на предмет наличия сигнатур ВП. Если исполняемый код процедуры распаковки вредоносной программы на GPU возможно обнаружить, то вирусному аналитику нет необходимости знать, что и каким именно образом делает процедура распаковки, работающая на графическом процессоре. Не нужно производить пошаговое выполнение и динамическое дизассемблирование GPU кода, не нужны виртуальные машины и эмуляторы GPU, достаточно просто знать, что процедура распаковки есть, и выделить из нее сигнатуру.
Таким образом, без использования сложных приемов и необходимости трудоемкой отладки GPU-кода проблема обнаружения вредоносных программ, использующих GPU, может быть решена путем обнаружения сигнатуры GPU-распаковщика.
Реализация сигнатурного метода сканирования файлов ВП, использующих GPU
Был спроектирован и реализован прототип файлового антивирусного сканера, реализующий сигнатурный метод обнаружения (см. рис. 3).
Код для CPU (Подготовка и запуск кода для GPU, прием результатов, исполнение распакованного тела ВП)
Код для GPU (Распаковка тела ВП на графическом процессоре)

Рис. 3. Результат работы антивирусного сканера, способного обнаруживать ВП, использующие GPU
Тело ВП
Рис. 2. Двоичный файл ВП, использующей GPU
Полученный прототип демонстрирует применимость сигнатурного метода обнаружения к ВП, использующим GPU. При некоторых доработках он может быть использован для поиска подобных вредоносных программ в рабочих системах. Также он может стать частью более сложной системы обнаружения существующих и будущих угроз со стороны ВП.
Недостатки сигнатурного метода обнаружения ВП и дальнейшие исследования
Как упоминалось выше, сигнатурный метод анализа имеет и свои недостатки. Один их худших из них – это задержка по времени между созданием ВП и его обнаружением. Так как сигнатурный метод требует выполнения процесса выявления сигнатуры, распространения базы сигнатур среди пользователей и постоянного обновление этой базы, новые ВП, еще не включенное в базу, могут успеть распространиться и нанести значительный ущерб. Чем выше задержка, тем более вероятно возникновение эпидемий вредоносных программ.
Этот недостаток преодолевается использованием техник автоматического выделения сигнатур, добавлением сигнатур пользователями антивирусов, регулярного автоматического обновления баз с сигнатурами ВП через Internet. Однако в любом случае задержка до появления сигнатур ВП в базах будет существовать. И чем сложнее вредоносная программа, тем больше времени понадобится аналитикам ВП на выявление сигнатуры.
В [6] показано, что использование графических процессоров и наиболее распространенной технологии их программирования CUDA может серьезно усложнить и замедлить анализ ВП. К тому же авторы вредоносных программ могут попытаться применить и уже известные техники, и возможности GPU с целью построения полностью полиморфных образцов ВП. Такие ВП не могут быть обнаружено сигнатурными методами, так как постоянных сигнатур не имеют. Изучение подобных вредоносных программ, разработка методов их анализа и обнаружения будет предметом дальнейших исследований. Лучшее понимание наступательных возможностей ВП, использующих GPU, может привести исследователей к созданию более эффективных и стойких систем защиты.
Заключение
Показано, что сигнатурный метод обнаружения ВП может быть применен в решении проблемы анализа и обнаружения файлов вредоносных программ, использующих GPU. К этим ВП метод применяется путем использования в качестве сигнатуры GPU-кода распаковщика тела ВП. Применение сигнатурного метода в этом случае позволяет избежать необходимости решать трудоемкие и сложные проблемы, связанные с анализом GPU-кода, а именно: производить пошаговое выполнение и динамическое дизассемблирование GPU-кода, разрабатывать и использовать виртуальные машины и эмуляторы GPU.
Эффективность метода продемонстрирована на примере программного средства, реализующего сигнатурный метод, которое решает задачу обнаружения ВП, использующих GPU. Рассмотрены недостатки сигнатурного метода, намечен ход дальнейших исследований. Полученные результаты могут быть использованы для разработки комплексной системы защиты от ВП, использующих GPU.
Список литературы К вопросу обнаружения вредоносных программ, использующих технологию CUDA
- Сандерс Дж., Кэндрот Э. Технология CUDA в примерах. Введение в программирование графических процессоров. Пер. с англ. М.: ДМК Пресс, 2011. -232 с.
- Что такое CUDA//http://www.nvidia.ru//object/what_is_cuda_new_ru.html
- Reynaud D. GPU Powered Malware. // Ruxcon 2008 // http://2008.ruxcon.org.au/files/2008/ reynaud_slides.pdf
- Szor P. The Art of Computer Virus Research and Defense. Addison-Wesley Professional, 2005. -744 p.
- Ferrie P. Anti-Unpacker Tricks. // 2nd International CARO Workshop, 2008 // http://pferrie. tripod.com/papers/unpackers.pdf
- Vasiliadis G., Polychronakis M., Ioannidis S. GPU-Assisted Malware.//5th International Conference on Malicious and Unwanted Software (MALWARE), 2010. -P. 1-6.