Анализ Вируса На Примере — Изучаем Trojan-Downloader.win32.Zanoza.ab

Вы когда-нибудь задумывались, какова судьба вируса, пойманного антивирусными компаниями? О том, что с ним происходит еще до добавления подписей в базу данных? Точнее, о вирусном анализе.

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

Дополнительные навыки никогда не помешают, и иногда перед началом работы полезно посмотреть, что из себя представляет скачанный из Интернета исполняемый файл.

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

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

Огромную коллекцию готовых к анализу вирусов можно найти на сайте.

vx.netlux.org .

Первым вирусом, который попался мне на глаза, был Trojan-Downloader.Win32.Zanoza.ab. Сейчас мы займемся его детальным анализом.

Кстати, хорошие описания вирусов можно найти на сайте securelist.com. Первое, что бросается в глаза, это размер файла – всего 1901 байт. Вы можете подумать, что из-за небольшого размера весь функционал вируса будет хорошо виден, но не будем торопиться.

Убедимся в любом шестнадцатеричном редакторе, что файл является исполняемым файлом Windows (согласно сигнатурам MZ и PE), и загрузим его в любой отладчик-дизассемблер.

Вырисовывается нерадостная картина:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Мало того, что все разделы и заголовки свалены в кучу, так еще и файл явно чем-то запакован.

Дальше можно пойти двумя путями.

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

Второй, более простой — попытаться определить упаковщик программы и распаковать ее автоматически.

Пойдем вторым путем.

Загрузите программу в PIED:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Нам повезло, PIED был успешно обнаружен упаковщиком FSG. Скачайте любой автоматический распаковщик FSG и успешно удалите один уровень защиты (например, Unfsg2.0):

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Снова загрузим программу в отладчик-дизассемблер.

Мы увидим еще один уровень защиты:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Да, то, что выяснилось, было полной ерундой.

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

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

Причём он плохо зафуфсирован: посмотрите, код просто разбавлен командами nop, которые ничего не делают и push reg и pop reg, которые ничего не значат. Прокрутим программу немного вниз и увидим основной цикл расшифровки:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Проследим программу до этого места:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

И попадаем к уже полностью расшифрованному программному коду (не забудьте обновить окно отладчика для корректного отображения команд):

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Теперь давайте снимем полученный дамп любым доступным вам инструментом.

Наконец, мы обнаружили некоторые функциональные возможности вируса:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Вот тут-то и начинается настоящий анализ.

Прежде всего, при запуске вирус вызывает процедуру, расположенную по адресу 0x401128. Как вы могли догадаться, эта функция создает пакетный файл под названием «c.bat» со следующим содержимым:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Вперед, продолжать.

После создания bat-файла программа запускает его на исполнение.

Начинает крутиться бесконечный цикл попыток удалить файлы chkdsk*.

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

Мы увидим на экране множество сменяющих друг друга консольных окон.

Теперь самое интересное.

Вирус порождает дочерний процесс svсhost.exe в приостановленном состоянии и записывает в него 764-байтовый код, начинающийся со смещения 0x401180. Очевидно, исполняемый файл svсhost.exe был выбран для обхода некоторых не очень умных фаерволов и антивирусов, а также для того, чтобы пользователь случайно не завершил запущенный вирусный процесс.

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

Как он определил правильный адрес? Вирус просто загружал образ svhost.exe в свое адресное пространство с помощью функции LoadLibraryEx. И после этого я легко определил нужный адрес по стандартным смещениям исполняемого файла Windows (данный участок кода находится по адресам 0x4010A6 — 0x4010AC).

Итак, инъекция завершена и остаётся этому исполняемому файлу передать эстафету зависшему процессу sсvhost.exe. Возникает вопрос: как исследовать зараженный процесс? Можно, конечно, вручную выбрать необходимый код и затем проанализировать его отдельно, но при этом его функциональность и производительность могут сильно пострадать.

Я не стал долго думать и решил запустить все это на виртуальной машине и сбросить svсhost.exe во время его работы.

Итак, трассируем основную программу перед вызовом ResumeThread, открываем ProcessExplorer:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

И находим PID нужного нам процесса (в принципе, можно было бы узнать PID и в отладчике, ну да ладно).

Преобразовав 1356 из 10 в шестнадцатеричную систему, получим 0x54C. Далее запускаем LordPE и пытаемся снять дамп процесса:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Видим, что у нас недостаточно прав на это действие из-за того, что процесс уже отлаживается другой программой.

Т.

к.

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

Внимание!!! Этот шаг вы делаете на свой страх и риск!!! У меня все прошло успешно, и я получил зараженный файл svhost.exe, готовый для анализа:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Мы снова видим цикл расшифровки: XOR БАЙТ PTR DS:[EBX-5],0хB1 ИНК ЕВХ ПЕТЛЯ КОРОТКАЯ 0х100251D Если эту программу запустить, она вылетит с ошибкой, так как запись в участок кода запрещена.

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

И теперь при запуске программа будет пытаться зашифровать себя.

Нам это не нужно, поэтому для дальнейшего анализа запишем весь цикл расшифровки.

Мы прошли долгий путь к этому моменту, не так ли? Проследим дальше на виртуальной машине:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Мы видим цикл, расположенный по адресам 0x10255C-0x1002587. Его цель — определить адреса функций, жизненно важных для работы кода WinAPI. Само сравнение имен происходит в этом месте:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

После определения необходимых адресов функций WinAPI мы сталкиваемся с еще одним уровнем защиты.

Зараженная программа вызывает функцию VirtualAlloc для выделения дополнительной области памяти, в которую копируется еще один слой вредоносного кода, управление которому передается с помощью команды JMP EAX:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Наконец-то нам открылась функциональность самого вируса.

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

exe. Вот момент загрузки файла:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Вот где выполняется загруженный файл:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

И вот окончание процесса:

Анализ вируса на примере — изучаем Trojan-Downloader.Win32.Zanoza.ab

Также отметим интересные ссылки для дальнейшего анализа: 00270204 68 74 74 70 3A 2F 2F 77 77 77 2E 79 76 6F 6E 2D www.yvon- 00270214 70 75 62 6C 69 63 69 64 61 64 2E 63 6F 6D 2F 69 publicidad.com/i 00270224 6D 61 67 65 73 2F 69 6D 61 67 65 73 2E 70 68 70 mages/images.php 00270234 3F 77 3D 31 26 65 3D 32 00 68 74 74 70 3A 2F 2F Эw=1&e=2.http:// 00270244 77 77 77 2E 79 76 6F 6E 2D 70 75 62 6C 69 63 69 www.yvon-publici 00270254 64 61 64 2E 63 6F 6D 2F 69 6D 61 67 65 73 2F 69 Dad.com/images/i 00270264 6D 61 67 65 73 2E 70 68 70 3F 77 3D 32 26 65 3D mages.phpЭw=2&e= 00270274 32 00 68 74 74 70 3A 2F 2F 77 77 77 2E 79 76 6F 2. http://www.yvo 00270284 6E 2D 70 75 62 6C 69 63 69 64 61 64 2E 63 6F 6D n-publicidad.com 00270294 2F 69 6D 61 67 65 73 2F 69 6D 61 67 65 73 2E 70 /images/images.p 002702A4 68 70 3F 77 3D 33 26 65 3D 32 00 68 74 74 70 3A hpЭw=3&e=2.http: 002702B4 2F 2F 77 77 77 2E 79 76 6F 6E 2D 70 75 62 6C 69 //www.yvon-publi 002702C4 63 69 64 61 64 2E 63 6F 6D 2F 69 6D 61 67 65 73 cidad.com/images 002702D4 2F 69 6D 61 67 65 73 2E 70 68 70 3F 77 3D 34 26 /images.phpЭw=4& Пора подвести итог: анализируемая программа без ведома пользователя скачивает из Интернета файлы неизвестного содержания и запускает их на исполнение.

Вот, собственно, и все, на что способна эта вредоносная программа, поэтому ее можно отнести к категории троянов-загрузчиков.

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

Удачи в анализе на вирус! Теги: #вирус #Антивирусная защита #обратное проектирование #Ассемблер #анализ вирусов

Вместе с данным постом часто просматривают: