Антиотладочные трюки

автор | 21 Декабрь, 2008
рубрики Статьи Комментарии к записи Антиотладочные трюки отключены

0207831001163171471

Главная цель этой работы состоит в том, чтобы показать методы защиты от исследования, используемые упаковщиками/протекторами, а также обсудить методы и доступные инструменты, которые могут использоваться, чтобы обойти или снять это защиты. Эта информация позволит исследователям, особенно, malware-аналитикам идентифицировать эти методы используемые в упакованном вредоносном программном коде, и затем обойти их и приступить к обычному анализу. Представленная информация может также использоваться разработчиками, которые планируют усилить защиту в их программном обеспечении и запретить реверсерам анализировать их защищенный код. Хотя, конечно, квалифицированного, знающего и решительно настроенного реверсера вряд ли что-то остановит.

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

Упаковщики (термин, используемый в этой работе и для упаковщиков и для протекторов), создаются, чтобы защитить исполняемые файлы от анализа. Они используются законно коммерческими приложениями, чтобы предотвратить раскрытие кода, его изменение и пиратство. К сожалению, malware-программы также используют упаковщики по тем же самым причинам, но в злонамеренных целях.

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

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

• Части кода защиты должны быть изменены, чтобы получить возможность сделать нормальный
дамп процесса и должным образом восстановить таблицу импорта;

• Полный анализ защитного кода, чтобы встроить распаковку в антивирусные программы.

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

Антиотладочные приемы могут быть самого различного вида, в зависимости от того, для
противостояния какому методу распаковки они предназначены. Распаковка может быть основана на
дампе памяти, отладчике, эмуляторе, буферизации кода, или W-X перехвате.

— Дампер памяти делает дамп (выгружает содержимое памяти) текущего процесса без разбора
кода в нем.

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

— Эмулятор, в этой работе под эмулятором подразумевается программная среда выполнения,
обычно используемая anti-malware программами. Они помещают и запускают файл в собственном
пространстве и наблюдают за специфическими действиями, выполняемыми программой.

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

— Перехватчик W-X (Write-eXecute) предназначен для работы со страницами памяти, чтобы
наблюдать за последовательностью записи-исполнения. Как правило, исполняемая область имеет
атрибуты чтения и выполнения, а все остальные только чтения. Коду позволяют выполняться
свободно. Перехватчик обрабатывает исключения, которые вызваны, записью в область с атрибутами read-only, или выполнением страниц, которые не имеют атрибута executable страниц. Если аппаратные средства позволяют это, read-only страница будет заменена страницей с разрешением на запись, и запись продолжится. Иначе, пошаговое исключение используется, чтобы позволить записи завершиться, после чего страница будет восстановлена к ее исходному состоянию. В любом случае содержимое страницы будет сохранено в списке. В случае исключений, вызванных выполнением невыполнимых или несуществующих страниц, адрес страницы сравнивается со вхождениями в этом списке. Соответствие указывает на выполнение недавно записанного кода, и является расположением точки входа.

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

Автор надеется, что читатель найдет этот материал полезным и пригодным к использованию.
Счастливой распаковки!

Автор: Sturgeon

Полная статья в PDF

Оценить эту тему:
1 звезда2 звезды3 звезды4 звезды5 звезд (3 голосов, средний: 3,67 из 5)
Loading...Loading...
Популярность: 3 461 просмотров
Теги:
Вы можете следить за любыми ответами на эту запись через RSS 2.0 feed. Комментарии в настоящее время закрыты.