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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

224  Часть III  •  Продвинутый динамический анализ

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

 

 

 

 

всплывающее окно, показанное внизу на рис. 9.14. Чтобы сохранить изменения на диск, выберите пункт меню Save file (Сохранить файл) .

Обратите внимание на то, что на рис. 9.13 и 9.14 содержится один и тот же код, только вместо JNZ вставлены инструкции NOP. Эта процедура навсегда сохранит инструкции NOP в исполняемый файл на диске, благодаря чему вредонос будет принимать любой ключ. Данный подход может пригодиться в том случае, если вам нужно изменить вредоносный код на постоянной основе, чтобы его было легче анализировать­.

Анализ кода командной оболочки

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

1.Скопируйте код командной оболочки из hex-редактора в буфер обмена.

2.Выберите на карте памяти участок типа Priv (это приватная память, назначенная процессу — она отличается от исполняемых образов, которые разделяются между разными процессами и доступны только для чтения).

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

4.Щелкните правой кнопкой мыши на выделенном участке карты памяти и выберите пункт меню Set Access Full Access (Указать доступ Полный доступ), чтобы этот участок можно было читать, записывать и выполнять.

5.Вернитесь на панель с дампом памяти. Выделите участок, заполненный нулями (он должен быть достаточно большим, чтобы вместить весь код командной оболочки), щелкните на нем правой кнопкой мыши и выберите пункт меню

Binary Binary Paste (Двоичный код Вставить двоичный код). Так вы скопируете код командной оболочки на выделенный участок.

6.Назначьте регистру EIP отредактированный вами участок памяти. Для этого щелкните правой кнопкой мыши на инструкции на панели дизассемблера и выберите пункт меню New Origin Here (Новый источник).

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

Вспомогательные возможности

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

Ведение журнала. OllyDbg постоянно ведет журнал событий. Чтобы его открыть, выберите пункт меню View Log (Вид Журнал). Среди прочей информации в нем отражено, какие исполняемые модули были загружены, какие точки

 

 

 

 

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

 

 

Глава 9. OllyDbg  225

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

останова сработали. Журнал может помочь вам понять, какие шаги привели вас к тому или иному состоянию.

Окно отслеживания. В OllyDbg есть окно Watches (Отслеживание), которое позволяет следить за значением генерируемых вами выражений. Выражения в нем постоянно обновляются. Открыть его можно с помощью пункта меню View Watches (Вид Отслеживание). Чтобы указать в нем выражение, нажмите клавишу Пробел.

Справка. Пункт меню OllyDbg Help Contents (Помощь OllyDbg Содержание) предоставляет подробные инструкции по написанию выражений в разделе Evaluation of Expressions (Проверка выражений). Это будет полезно при необходимости отслеживать определенный участок данных или какую-то сложную функцию. Например, если вас интересует участок памяти EAX+ESP+4, вы можете ввести выражение [EAX+ESP+4].

Маркировка. Как и IDA Pro, OllyDbg позволяет маркировать ответвления и циклы. Метка представляет собой символьное имя, которое назначается определенному адресу отлаживаемой программы. Чтобы ее создать, перейдите на панель дизассемблера, щелкните правой кнопкой мыши на адресе и выберите пункт меню Label (Метка). На экране появится окно, в котором нужно будет ввести имя метки. В результате все ссылки на этот участок памяти будут использовать метку, а не адрес. На рис. 9.15 показан пример добавления метки password_loop. Обратите внимание на то, что ссылка по адресу 0x401141 изменилась в соответствии с новым именем.

Рис. 9.15. Задание метки в OllyDbg

Подключаемые модули

Для OllyDbg существуют стандартные и множество сторонних плагинов, доступных для загрузки. Довольно объемную библиотеку, предназначенную для анализа вредоносного кода, можно найти по адресу www.openrce.org/downloads/browse/OllyDbg_Plugins.

Эти плагины представляют собой динамические библиотеки, которые нужно поместить в корень установочного каталога OllyDbg. После этого они автоматически распознаются­ и добавляются в меню Plugins (Плагины).

ПРИМЕЧАНИЕ

Процесс написания подключаемых модулей для OllyDbg может показаться довольно утомительным. Если вы желаете расширить возможности OllyDbg, мы советуем делать это путем написания Python-скриптов (подробности ищите чуть ниже, в разделе «Отладка с использованием скриптов»).

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

226  Часть III  •  Продвинутый динамический анализ

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

OllyDump

 

 

 

 

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

 

 

 

 

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

На рис. 9.16 показано окно OllyDump. Перед созданием дампа вы можете вручную указать точку входа и сдвиги разделов, хотя мы советуем вам положиться в этом на OllyDbg.

Рис. 9.16. Окно плагина OllyDump

Hide Debugger

Плагин Hide Debugger предоставляет целый ряд методик для защиты OllyDbg от обнаружения. Многие аналитики безопасности постоянно используют этот плагин — на случай, если вредоносная программа попытается противостоять отладке.

Hide Debugger, в частности, защищает от проверок IsDebuggerPresent и FindWindow, приемов с необработанными исключениями и использования OuputDebugString в OllyDbg. Противоотладочные методики рассмотрены в главе 16.

Command Line

Плагин Command Line открывает доступ к OllyDbg из командной строки. По своим возможностям он похож на WinDbg, хотя мало кто пользуется этим в OllyDbg (отладчик WinDbg обсуждается в следующей главе).

 

 

 

 

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

 

 

Глава 9. OllyDbg  227

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Чтобы активизировать окно командной строки, выберите пункт меню Plugins Com­ mand Line Command Line (Плагины Command Line Командная строка). В табл. 9.3 приводится список распространенных команд. Остальные команды можно найти в справочном файле, который поставляется вместе с плагином Command Line.

Таблица 9.3. Команды плагина Command Line в OllyDbg

Команда

Назначение

 

 

BP выражение [,условие]

Создает программную точку останова

 

 

BC выражение

Удаляет точку останова

 

 

HW выражение

Создает аппаратную точку останова для выполнения

 

 

BPX метка

Создает точку останова для каждого вызова метки

 

 

STOP или PAUSE

Приостанавливает выполнение

 

 

RUN

Запускает программу

 

 

G [выражение]

Выполнение до адреса

 

 

S

Шаг со входом

 

 

SO

Шаг с обходом

 

 

D выражение

Создает дамп памяти

 

 

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

В примере на рис. 9.17 показан отрезок вредоносного кода с обфусцированными строками, который при этом импортирует функцию gethostbyname. Вы можете видеть, что в командной строке выполняется команда bp gethostbyname, которая создает точку останова в начале функции gethostbyname. После этого программа запускается и останавливается в заданном месте. Взглянув на параметры, вы можете увидеть доменное имя, адрес которого эта функция пытается получить (в данном случае это malwareanalysisbook.com).

Рис. 9.17. Использование командной строки для быстрого создания точек останова