Сам себе антивирус 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 минут таким темпом — и вирус у нас полностью обезврежен. Может быть, пора сделать свою антивирусную лабораторию? |