РАЗРАБОТКА ЯДРА ДЛЯ ПОСТРОЕНИЯ АВТОМАТИЗИРОВАННЫХ РАСПАКОВЩИКОВ НАВЕСНЫХ ЗАЩИТ ФАЙЛОВ PE-ФОРМАТА - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

РАЗРАБОТКА ЯДРА ДЛЯ ПОСТРОЕНИЯ АВТОМАТИЗИРОВАННЫХ РАСПАКОВЩИКОВ НАВЕСНЫХ ЗАЩИТ ФАЙЛОВ PE-ФОРМАТА

Валеев Д.Р. 1
1Пермский государственный национальный исследовательский университет, механико-математический факультет, кафедра математического обеспечения вычислительных систем, 1 курс магистратуры
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

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

Для нейтрализации защит, разработанных авторами самостоятельно, требуется участие исследователя, который изучит и вручную модифицирует защитные механизмы так, чтобы они не представляли неудобств при исследовании кода. Для средств защит, разработанных специалистами по безопасности, требуется бо̀льшая квалификация исследователя, но нейтрализовав защиту однажды – можно реализовать автоматический распаковщик. Такая возможность заранее известна, и авторы пытаются противостоять автоматическим распаковщикам применением различных приёмов, в их число входят: антитрассировочные приёмы, приёмы обнаружения отладки, приёмы усложнения снятия дампа запущенного приложения, искажение таблицы импорта, повреждение структуры PE файла.

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

Работа посвящена созданию ядра для реализации на его основе автоматизированных распаковщиков навесных защит, которое не будет обнаруживаться современными антиотладочными средствами. Актуальность работы обусловлена широким распространением техники защиты вредоносного кода с помощью автоматизированных навесных защит, которые применяют различные антиотладочные методы для борьбы с исследованием их кода.

Цель работы – отладочное ядро не подверженное обнаружению большинством современных антиотладочных методов. Работа разделена на 4 этапа: анализ популярных средств антиотладки, основанный на обзорных работах Ferrie P. [1-10], и современных отладочных средств, реализация отладочного ядра, которое не будет подвержено обнаружению проанализированными методами антиотладки, реализацию механизмов для восстановления служебных структур файла после распаковки, анализ успешности полученного ядра отладки на предмет его обнаружения проанализированными методами антиотладки.

Обзор существующих решений для отладки

Все доступные из существующих на сегодняшний день продукты не могут полностью удовлетворить потребности специалиста, занимающегося распаковкой навесных защит. Критерии сравнения основаны на основных операциях, которые требуются для распаковки навесных защит и на удобстве использования ядра для распаковки. Рассмотрим критерии подробнее:

  1. Встраиваемость – подразумевает возможность использования ядра отладки в составе других продуктов как их составная часть.

  2. GUI – наличие графического интерфейса пользователя для управления ядром распаковки.

  3. Снятие дампа – наличие встроенных в ядро средств для снятия дампа запущенного процесса.

  4. Восстановление служебных структур – наличие встроенных в ядро средств для восстановления служебных структур файла [11], [12] после распаковки: директории импорта, экспорта, ресурсов, TLS [13].

  5. Невидимость для антиотладки – неподверженность ядра отладки детекции наиболее популярными средствами антиотладки.

Из сравнения (таблица 1) видно, что одно из самых развитых и функциональных ядер для построения автоматизированных распаковщиков подвержено обнаружению со стороны навесных защит.

Бо́льшая часть современного вредоносного кода защищена навесными защитами, которые осложняют их исследование вирусными аналитиками. У вирусных аналитиков и независимых исследователей есть потребность в автоматизации распаковки защищённых приложений. Стандартные средства ОС Windows для построения автоматизированных распаковщиков подвержены лёгкому обнаружению и нейтрализации со стороны защит. Требуется отладочное ядро, способное оставаться незамеченным для большинства распространённых приёмов обнаружения отладки.

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

Для выработки способа отладки, не подверженного обнаружению со стороны популярных методов антиотладки, были проанализированы и категоризированы популярные методы обнаружения и препятствия отладке. Из анализа стало ясно, что большинство методов направлены на борьбу с отладкой, использующей стандартные средства, предоставляемые ОС Windows и процессорами с x86 архитектурой.

Предлагаемое решение

Был предложен механизм собственной системы отладки (рис. 1), независящий от средств операционной системы. Основа ядра отладки – драйвер, который перехватывает прерывания, необходимые для реализации пошагового выполнения. Так же была реализована возможность использования альтернативных инструкций для реализации точек останова, на которые защиты не проверяют свой код и код API функций перед их вызовом. Перехват и обработка чтения счётчика реального времени процессора была реализована для сокрытия обнаружения отладки по замедлению выполнения кода.

Рисунок . Предложенная архитектура ядра для построения распаковщиков

В анализе приняли участие несколько популярных упаковщиков и защит (таблица 2). Результаты анализа подтверждают правильность выбора архитектуры отладочного ядра: ни один антиотладочный приём, применяемый в рассмотренных защитах, не обнаружил отладку.

Таблица . Тестирование результирующей системы

 

teLock

peSpin

AsProtect

Themida

Armadillo

Obsidium

PcGuard

OllyDbg

-

-

-

-

-

-

-

IdaPro

-

-

-

-

-

-

-

WinDBG

-

-

-

-

-

-

-

TitanEngine

-

+

-

-

-

-

+

Разрабатываемое ядро

+

+

+

+

+

+

+

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

Заключение

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

В будущем планируется реализовать механизмы снятия дампа памяти без использования средств Windows, которые могут быть модифицированы защитой для борьбы с распаковкой. Перенос ядра отладки из режима ядра в аппаратно поддерживаемую виртуальную машину, которые поддерживают современные процессоры от Intel и AMD. На основе реализованного ядра построить распаковщик для системы автоматической защиты Armadillo, использующей множество уникальных технологий борьбы с распаковкой и отладкой в частности.

Научный руководитель: к.т.н., доцент кафедры МОВС, С.С. Котов.

Библиографический список

  1. Ferrie P. Anti-unpacker tricks – part one. Virus Bulletin, December 2008, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2008/200812.pdf] [Проверено: 18.06.2012].

  2. Ferrie P. Anti-unpacker tricks – part two. Virus Bulletin, February 2009, p.4. [Электронный ресурс] [Режим доступа: http://pferrie.tripod.com/papers/unpackers.pdf] [Проверено: 18.06.2012].

  3. Ferrie P. Anti-unpacker tricks – part three. Virus Bulletin, February 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200902.pdf] [Проверено: 18.06.2012].

  4. Ferrie P. Anti-unpacker tricks – part five. Virus Bulletin, April 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200904.pdf] [Проверено: 18.06.2012].

  5. Ferrie P. Anti-unpacker tricks – part six. Virus Bulletin, May 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200905.pdf] [Проверено: 18.06.2012].

  6. Ferrie P. Anti-unpacker tricks – part eight. Virus Bulletin, May 2010, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2010/201005.pdf ] [Проверено: 18.06.2012].

  7. Ferrie P. Anti-unpacker tricks – part four. Virus Bulletin, March 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200903.pdf] [Проверено: 18.06.2012].

  8. Ferrie P. Anti-unpacker tricks – part nine. Virus Bulletin, June 2010, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2010/201006.pdf] [Проверено: 18.06.2012].

  9. Ferrie P. Anti-unpacker tricks – part seven. Virus Bulletin, June 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200906.pdf] [Проверено: 18.06.2012].

  10. Ferrie P. Anti-unpacker tricks – part two. Virus Bulletin, January 2009, p.4. [Электронный ресурс] [Режим доступа: http://www.virusbtn.com/pdf/magazine/2009/200901.pdf] [Проверено: 18.06.2012].

  11. Wisdom H. Формат исполняемых файлов PortableExecutables (PE) [Электронный ресурс] [Режим доступа: https://exelab.ru/art/?action=view&id=146] [Проверено: 18.06.2012].

  12. Prisoner B. TLS изнутри [Электронный ресурс] [Режим доступа: https://www.wasm.ru/article.php?article=tls] [Проверено: 18.06.2012].

  13. Гумеров М. Загрузчик PE-файлов [Электронный ресурс] [Режим доступа: http://www.rsdn.ru/article/baseserv/peloader.xml] [Проверено: 18.06.2012].

Просмотров работы: 1411