Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Майкл_Сикорски,_Эндрю_Хониг_Вскрытие_покажет!_Практический_анализ.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
17.17 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 16. Антиотладка  395

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Чтобы обойти эту ловушку, не перешагивайте через инструкцию icebp.

Уязвимости отладчиков

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

Уязвимости в PE-заголовке

Первая методика подразумевает изменение PE-заголовка в двоичном исполняемом файле, в результате чего при его загрузке в OllyDbg происходит сбой. Это выражается в ошибке вида Bad or Unknown 32-bit Executable File(«Поврежденный или неизвестный 32-битный исполняемый файл»), хотя за пределами отладчика программа обычно работает нормально.

Данная проблема вызвана тем фактом, что OllyDbg слишком строго следует спецификации PE-заголовка от компании Microsoft. PE-заголовок обычно содержит структуру, известную как IMAGE_OPTIONAL_HEADER. Ее подмножество представлено на рис. 16.5.

Рис. 16.5. Уязвимость на основе IMAGE_OPTIONAL_HEADER и NumberOfRvaAndSizes

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

396  Часть V  •  Противодействие обратному проектированию

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Несколько последних элементов этой структуры представляют особый интерес. Поле NumberOfRvaAndSizes определяет количество записей в массиве DataDirectory, который идет далее. Массив DataDirectory содержит сведения о местоположении других важных элементов исполняемого файла; это не просто массив структур IMAGE_ DATA_DIRECTORY в конце опциональной структуры заголовка. Каждая структура IMAGE_ DATA_DIRECTORY определяет размер и относительный виртуальный адрес каталога.

Размер массива равен IMAGE_NUMBEROF_DIRECTORY_ENTRIES — то есть 0x10. В Windows загрузчик игнорирует любое значение NumberOfRvaAndSizes, превышающее 0x10, поскольку оно просто не влезет в массив DataDirectory. OllyDbg следует стандарту и всегда использует NumberOfRvaAndSizes. В итоге, если сделать массив больше чем 0x10 (например, 0x99), OllyDbg покажет пользователю всплывающее окно, после чего завершит программу.

Для противодействия этому приему проще всего вручную изменить PE-заголовок с помощью hex-редактора или PE Explorer и присвоить полю NumberOfRvaAndSizes значение 0x10. Конечно, вы также можете использовать отладчик, который не подвержен этой уязвимости, например WinDbg или OllyDbg 2.0.

Еще один метод, связанный с заголовками разделов, вызывает во время загрузки в OllyDbg (WinDbg или OllyDbg 2.0 устойчивы к этой атаке) сбой вида File contains too much data (Файл содержит слишком много данных). В разделах представлено содержимое файла, включая код, данные, ресурсы и другую информацию. Каждый раздел имеет заголовок в виде структуры IMAGE_SECTION_HEADER, отрезок которой показан на рис. 16.6.

Рис. 16.6. Структура IMAGE_SECTION_HEADER

Здесь нас интересуют элементы VirtualSize и SizeOfRawData. Согласно специ­ фикации формата Windows PE поле VirtualSize должно содержать общий размер раздела на момент его загрузки в память, а поле SizeOfRawData — размер данных на диске. Для отражения данных раздела на память загрузчик Windows использует наименьшее из этих двух значений. Если SizeOfRawData больше VirtualSize, в память копируются только данные VirtualSize, а все остальное игнорируется. OllyDbg использует только SizeOfRawData, поэтому, если присвоить данному полю нечто вроде 0x77777777, в отладчике произойдет сбой.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 16. Антиотладка  397

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Чтобы уберечься от этого приема, проще всего вручную отредактировать PEзаголовок с помощью hex-редактора, чтобы поля SizeOfRawData и VirtualSize имели похожие значения (имейте в виду, что согласно спецификации они должны быть кратными значению FileAlignment из структуры IMAGE_OPTIONAL_HEADER). Для этого отлично подойдет программа PE Explorer, потому что ее нельзя обмануть за счет большого размера SizeofRawData.

Уязвимость на основе OutputDebugString

Вредоносные программы часто пытаются использовать уязвимости в OllyDbg версии 1.1, связанные со строками форматирования. Для этого они передают функции OutputDebugString аргумент %s, что приводит к сбою в OllyDbg. Остерегайтесь подозрительных вызовов наподобие OutputDebugString ("%s%s%s%s%s%s%s%s%s%s%s%s%s%s"). Если выполнить этот код, ваш отладчик принудительно завершится.

Итоги главы

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

Большинство методик антиотладки можно распознать с помощью здравого смысла, неспешно отлаживая процесс. Например, ваше внимание может привлечь код, который преждевременно завершает работу внутри условного перехода. Самые популярные приемы основаны на доступе к структуре fs:[30h], вызовах Windows API или выполнении сверки времени.

Конечно, как и в случае с анализом безопасности, лучший способ научиться противостоять антиотладочным методикам — постоянно разбирать и изучать код вредоносного ПО. Не забывайте: злоумышленники всегда ищут новые пути борьбы с отладчиками, чтобы не дать вам расслабиться.

Лабораторные работы

Лабораторная работа 16.1

Проанализируйте с помощью отладчика зараженный файл Lab16-01.exe. Он содержит тот же код, что и Lab09-01.exe, но с добавлением антиотладочных приемов.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

398  Часть V  •  Противодействие обратному проектированию

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Вопросы

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

1.Какие методики антиотладки применяет этот вредонос?

2.Что произойдет, если каждая методика достигнет своей цели?

3.Как обойти данные методики?

4.Как вручную изменить структуру, которая проверяется во время выполнения?

5.Какой плагин к OllyDbg защитит вас от методов антиотладки, использу­ емых в этом файле?

Лабораторная работа 16.2

Проанализируйте с помощью отладчика зараженный файл Lab16-02.exe. Целью данной работы является подбор правильного пароля. Эта программа не применяет вредоносное содержимое.

Вопросы

1.Что произойдет, если запустить файл Lab16-02.exe из командной строки?

2.Что произойдет, если запустить файл Lab16-02.exe и попытаться подобрать к нему параметр командной строки?

3.Какой пароль у командной строки?

4.Загрузите файл Lab16-02.exe в IDA Pro. В каком месте функции main содержится операция strncmp?

5.Что произойдет, если загрузить этот вредоносный файл в OllyDbg с параметрами по умолчанию?

6.Что уникального в структуре PE-заголовка этого файла?

7.Где находится функция обратного вызова? (Подсказка: нажмите сочетание клавиш Ctrl+E в IDA Pro.)

8.С помощью каких антиотладочных приемов программа немедленно завершает свою работу в отладчике? Как избежать этой проверки?

9.Какой пароль командной строки можно увидеть в отладчике после отключения антиотладки?

10. Сработает ли в командной строке пароль, найденный в отладчике?

11. Какой из методов антиотладки отвечает за разницу между паролем, найденным в отладчике, и тем, который передается в командной строке? Как бы вы нивелировали эту разницу?

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 16. Антиотладка  399

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Лабораторная работа 16.3

Проанализируйте с помощью отладчика зараженный файл Lab16-03.exe. Эта вредоносная программа похожа на Lab09-02.exe, но содержит определенные изменения, в том числе и добавление антиотладочных методик. Если возникнут сложности, обратитесь к лабораторной работе 9.2.

Вопросы

1.Какие строки вы можете найти с помощью статического анализа двоичного файла?

2.Что произойдет, если запустить этот файл?

3.Как нужно переименовать этот экземпляр, чтобы он работал нормально?

4.Какие методы антиотладки использует этот вредонос?

5.Какие ответные действия предпринимаются каждым из методов при обнаружении отладчика?

6.Что является залогом успеха антиотладочных приемов в этом вредоносе?

7.Какое доменное имя использует этот вредонос?