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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

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

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Bookmarks

 

 

 

 

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

 

 

 

 

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

Чтобы добавить закладку, щелкните правой кнопкой мыши на панели дизассемблера и выберите пункт меню Bookmark Insert Bookmark (Bookmark Вставить закладку). Для просмотра закладок используйте пункт меню Bookmarks Bookmarks (Bookmark Закладки), после чего щелкните на нужной вам закладке, чтобы перей­ ти к соответствующему адресу.

Отладка с использованием скриптов

Поскольку плагины к OllyDbg представляют собой скомпилированные библиотеки, создавать или изменять их обычно довольно сложно. Поэтому для расширения возможностей мы используем отладчик ImmDbg, который поддерживает Pythonскрипты и обладает простым API.

Python API в ImmDbg включает в себя множество вспомогательных средств и функций. Например, вы можете интегрировать свои скрипты в отладчик в виде машинного кода, чтобы иметь возможность создавать собственные таблицы, графики и всевозможные пользовательские интерфейсы. Среди распространенных причин написания скриптов при анализе вредоносных программ можно выделить преодоление защиты от отладки, перехват встроенных функций и ведение журнала аргументов. Многие такие скрипты можно найти в Интернете.

Наиболее популярный вид Python-скриптов, которые пишут для ImmDbg, называется PyCommand. Такие скрипты хранятся в каталоге PyCommand\ внутри установочного каталога ImmDbg. Написав скрипт, вы должны скопировать его в этот каталог, чтобы его можно было запустить. Эти команды на языке Python можно выполнять на командной панели, указывая перед ними символ !. Чтобы получить список доступных команд, введите !list.

PyCommand имеет следующую структуру.

Для импорта модулей языка Python можно использовать набор соответствующих инструкций (как и в любом другом Python-скрипте). Функции ImmDbg доступны в модулях immlib и immutils.

Функция main считывает аргументы командной строки (которые передаются в виде списка).

Код скрипта реализует действия PyCommand.

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

В листинге 9.3 показан пример простого скрипта, реализованного в виде PyCom­ mand. Этот скрипт позволяет запретить вредоносной программе удалять файлы из системы.

 

 

 

 

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

 

 

 

 

Листинг 9.3. Скрипт PyCommand для нейтрализации DeleteFile

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 9. OllyDbg  229

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

import immlib

def Patch_DeleteFileA(imm):

delfileAddress = imm.getAddress("kernel32.DeleteFileA") if (delfileAddress <= 0):

imm.log("No DeleteFile to patch") return

imm.log("Patching DeleteFileA")

patch = imm.assemble("XOR EAX, EAX \n Ret 4") imm.writeMemory(delfileAddress, patch)

def main(args):

imm = immlib.Debugger() Patch_DeleteFileA(imm)

return "DeleteFileA is patched..."

Вредоносное ПО часто использует операцию DeleteFile для удаления файлов из системы, не давая вам шанса скопировать их в другое место. Если запустить этот скрипт с помощью команды !scriptname, он модифицирует функцию DeleteFileA так, чтобы она ничего не делала. Метод main вызывает функцию Patch_DeleteFileA , которая возвращает адрес DeleteFileA; для этого используется вызов getAddress из ImmDbg API. Получив этот адрес, мы можем заменить функцию удаления собственным кодом. В данном случае мы переопределяем ее так, как указано на шаге . Этот код присваивает 0 регистру EAX и возвращается из вызова DeleteFileA. Данное изменение приведет к тому, что операция DeleteFile будет всегда завершаться неудачно, не давая вредоносной программе удалять файлы из системы.

Чтобы узнать больше о написании Python-скриптов, ознакомьтесь с примерами PyCommand, которые приводятся на справочной странице ImmDbg. Более глубоко эта тема раскрыта в книге Джастина Сейца Gray Hat Python (No Starch Press, 2009).

Итоги главы

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

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

230  Часть 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

 

 

 

 

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

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

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

Проанализируйте вредоносную программу под названием Lab09-01.exe, используя OllyDbg и IDA Pro, и ответьте на следующие вопросы. Мы уже изучали этот вредонос в лабораторных работах в главе 3, применяя базовые методики статического и динамического анализа.

Вопросы

1.Как заставить эту программу установиться?

2.Какие аргументы командной строки она принимает? Каковы требования к паролю?

3.Как с помощью OllyDbg модифицировать исполняемый файл, чтобы он не требовал предоставления пароля в командной строке?

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

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

6.Есть ли для этого вредоноса какие-либо полезные сетевые сигнатуры?

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

Проанализируйте с помощью OllyDbg зараженный файл Lab09-02.exe и ответьте на следующие вопросы.

Вопросы

1.Какие строки можно обнаружить в двоичном файле статическими методами?

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

3.Как заставить этот образец выполнить свой вредоносный код?

4.Что происходит по адресу 0x00401133?

5.Какие аргументы передаются ответвлению 0x00401089?

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

 

 

 

 

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  231

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

8.Какую роль играет вызов CreateProcessA по адресу 0x0040106E?

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

Проанализируйте зараженный файл Lab09-03.exe, используя OllyDbg и IDA Pro. Этот вредонос загружает три библиотеки (DLL1.dll, DLL2.dll и DLL3.dll), скомпилированные так, чтобы запрашивать один и тот же участок памяти. В связи с этим при просмотре их кода в OllyDbg и IDA Pro вы можете увидеть разные адреса. Эта лабораторная работа поможет вам попрактиковаться в поиске корректных адресов в IDA Pro при просмотре кода в OllyDbg.

Вопросы

1.Какие библиотеки импортирует Lab09-03.exe?

2.Какой базовый адрес запрашивают DLL1.dll, DLL2.dll и DLL3.dll?

3.Какой базовый адрес назначается библиотекам DLL1.dll, DLL2.dll и DLL3.dll при отладке файла Lab09-03.exe в OllyDbg?

4.Что делает функция импорта, которую Lab09-03.exe вызывает из DLL1.dll?

5.Назовите имя файла, в который производится запись, когда вызывает

Lab09-03.exe WriteFile.

6.Lab09-03.exe создает задачу с помощью вызова NetScheduleJobAdd; откуда берутся данные для его второго аргумента?

7.Во время выполнения или отладки программы вы увидите, что она выводит три загадочных фрагмента данных, которые относятся к каждой из трех загруженных DLL. Что они означают?

8.Как открыть файл DLL2.dll в IDA Pro, чтобы его загрузочный адрес со-

впадал с тем, который используется в OllyDbg?