Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Сам себе антивирус

Bokiv (Bokiv@yandex.ru)

Хакер, номер #089, стр. 089-060-1


Распаковка и анализ сетевого червя Win32.Mytob.D

Нынче мода пошла такая: написал чувак вируса или червяка на HLL, и давай его паковать и защищать чем-нибудь навесным. Вирусмейкер надеятся тем самым для аверов анализ вредоносного кода затруднить, да и жизнь простым смертным реверсерам подпортить, чтобы не поняли они, что плод злого гения делает, куда пишется и т.п. Нас такими дешевыми уловками не проведешь, мы протекторы в раз снимем!

[паразит]

Взять, к примеру, довольно популярного зверя Mytob.D. Попадет к тебе такой, и что ты будешь делать? На аверов молиться? Это не наши методы, Шура! Его надо своими средствами вскрыть, исследовать и нафиг из системы удалить. Однако пассивным дизассемблированием тут не обойдешься. Ida Pro тебе не выплюнет ничего членораздельного в ответ на скормленного ей червяка. В данном случае такая шняга произойдет потому, что вирус долго и усердно паковали и защищали. Благо, мы знаем, как в таких случаях поступать: грузим PEiD. Порывшись в своей базе сигнатур замечательная тулза выдаст нам верхний слой защиты - yoda's Protector 1.3 -> Ashkbiz Danehkar. Этот протектор, по правде говоря, просто обожают разработчики разного рода нечести. Вот, посмотри, что о нем пишут:

- поддержка большинства форматов PE-файлов;

- маленький размер дистрибутива;

- быстрота работы;

- полиморфное шифрование;

- проверка CRC-суммы;

- переадресация API-функций;

- удаление заголовков PE;

- антиотладчик;

И со всем этим предстоит разобраться. Но это еще не все. Если внимательно посмотреть на название секций (UPX0, UPX1, UPX2, yC), можно сделать один не самый утешительный вывод. Под йодой живет UPX. Ок, нет проблем, и его порвем. Вспоминаем основы снятие защит и принимаемся за работу.

1.Нахождение оригинальной точки входа (OEP).

2.Снятие дампа программы.

3.Восстановление таблицы импорта.

[нахождение оригинальной точки входа]

Первое, что нам необходимо - это найти ЕР упакованного червя, а затем уже ОЕР самого червя. Надеюсь, у тебя уже стоит замечательный ОllyDbg. Запускаем и открываем в нем червя. Стоп! Чуть не забыл. Советую проводить все опыты на виртуальной машине, так как активный анализ (то есть с запуском) вирусного кода - штука достаточно опасная. Итак, отладчик попросит проанализировать файл - нажимаем "нет". Курсор отладчика стоит здесь на EP:

0041B060 PUSH EBP

0041B061 MOV EBP, ESP

0041B063 PUSH EBX

0041B064 PUSH ESI

0041B065 PUSH EDI

0041B066 PUSHAD

Почти все распаковщики перед своей работой сохраняют все значения регистров в стеке командой PUSHAD, а после работы восстанавливают их командой POPAD. То есть нужно найти ниже команду POPAD и поставить на ней брейкпоинт. Если мы начнем трассировку программы или просто запустимся по F9, то сработает исключение, в результате которого отладчик или выдаст ошибку, или просто закроется. Причина кроется в распаковщике: он получает информацию о том, что программа отлаживается в данный момент. Ключом является функция Windows под названием IsDebuggerPresent, благодаря чему нас и обнаруживает распаковщик. Данная функция возвращает единицу, если отладчик обнаружен, и ноль — если нет. Вбиваем в командной строке Оли bp IsDebuggerPresent и нажимаем Enter. Если у тебя командная строка не активирована - нажимай Alt+F1. Остается запустить программу и надеяться на то, что бряк заработает. Как ни странно, он сработал, и мы оказываемся здесь.

Содержание  Вперед на стр. 089-060-2
необходимо! Бар ресторан живая музыка. Спешите | продажа. Ипотека иркутск. ипотечный кредит внешторгбанк. Выгодно