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

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

Bokiv (Bokiv@yandex.ru)

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


[уроки анатомии]

Что теперь? Теперь приступаем к исследованию. Перед нами, как ты видишь, голый вирус. Если не веришь, то запусти PEiD. Надо отметить, что до этого мы занимались крэкингом, то есть распаковывали файл, снимали защиту. Сейчас же перейдем к реверс-иженерингу. Реверс – далеко не крэкинг. Это более фундаментальное понятие, которое заключается в (да простят меня боги за тавтологию) понимании работы программы, исходя из дизассемблерного листинга. Углубляться в это дело мы сейчас не будем, так как нас интересуют только некоторое моменты: как существует вирус, что он делает и где живет в системе. Конечно, есть множество антиотладочных ухищрений, но в этом случае все не так просто. Прежде всего в таблице импорта содержатся функции работы с сетью. Сперва идут функции работы с файлами — вот их-то мы и рассмотрим для начала. Давай поставим бряки на CreateFile и CopyFile. Запускаем! Видим перед собой очень хорошую строку:

00407BA4 FF15 24114100 CALL DWORD PTR DS:[<&kernel32.CopyFileA>>; kernel32.CopyFileA

Если посмотрим в стек, то можем увидеть новое имя файла: NewFileName = "C:\WINDOWS\system32\wfdmgr.exe". Теперь понятно: вирус проверяет, где он находится, и если он не в системной директории, то копирует себя в нее. Далее следует запуск вышеуказанного файла и завершение исходного процесса. Для дальнейшего продолжения исследования следует обмануть вирус. Можно скопировать его, куда он просит, а можно просто-напросто обойти функцию проверки — это как тебе будет угодно. Я лично скопировал. Так, едем дальше - DeleteFile. Что же он удаляет? Нашел или подсказать? Первой же функцией он удаляет C:\WINDOWS\system32\msnmsgr.exe, затем копирует себя в эту папку и открывает сокетное соединение. Кроме этого, червяк гадит в реестре. О, вижу ты уже совсем вошел в раж и поставил бряки на RegOpenKey. Замечательно, так ему, гаду, и надо!

00403F90 51 PUSH ECX

00403F91 68 19000200 PUSH 20019

00403F96 6A 00 PUSH 0

00403F98 52 PUSH EDX

00403F99 68 01000080 PUSH 80000001

00403F9E FF15 08104100 CALL DWORD PTR DS:[<&advapi32.RegOpenKey>; advapi32.RegOpenKeyExA

Угу, функция есть, смотрим стек:

00E7FE44 80000001 |hKey = HKEY_CURRENT_USER

00E7FE48 00E7FE60 |Subkey = "Software\Microsoft\WAB\WAB4\Wab File Name"

00E7FE4C 00000000 |Reserved = 0

00E7FE50 00020019 |Access = KEY_READ

00E7FE54 00E7FE58 \pHandle = 00E7FE58

Следует ли объяснять, что происходит в этот момент? Червь ищет WAB-файлы. Это же файлы адресных книг аутглюка! Да-да, червь грабит все мыльники и рассылает себя по ним. Дальше уже просто: все делаем аналогично, так что писать тут про остальные функции я не буду. Однако мы пропустили работу червя с сетью… Извини, но в эту статью уже не поместится полный анализ. Думаю, дома ты с легкостью теперь сможешь и сам это проанализировать. Каркас действий мы с тобой разработали. Итак, мы сделали простейший анализ за 15 минут, не правда ли здорово? Еще 15-20 минут таким темпом — и вирус у нас полностью обезврежен. Может быть, пора сделать свою антивирусную лабораторию?

Назад на стр. 089-060-3  Содержание  Вперед на стр. 089-060-5