Вы когда-нибудь задумывались, какова судьба вируса, пойманного антивирусными компаниями? О том, что с ним происходит еще до добавления подписей в базу данных? Точнее, о вирусном анализе.
Может показаться, что самостоятельно делать анализ на вирусы сложно, ненужно и опасно, но на самом деле это совершенно не так.
Дополнительные навыки никогда не помешают, и иногда перед началом работы полезно посмотреть, что из себя представляет скачанный из Интернета исполняемый файл.
Для начала подойдут любые знания ассемблера, отладчик с дизассемблером и виртуальная машина на ваш выбор.
Можно, конечно, поискать образцы вируса для анализа самостоятельно в Интернете, но мы сначала пойдем другим путем.
Огромную коллекцию готовых к анализу вирусов можно найти на сайте.
Первым вирусом, который попался мне на глаза, был Trojan-Downloader.Win32.Zanoza.ab. Сейчас мы займемся его детальным анализом.
Кстати, хорошие описания вирусов можно найти на сайте securelist.com. Первое, что бросается в глаза, это размер файла – всего 1901 байт. Вы можете подумать, что из-за небольшого размера весь функционал вируса будет хорошо виден, но не будем торопиться.
Убедимся в любом шестнадцатеричном редакторе, что файл является исполняемым файлом Windows (согласно сигнатурам MZ и PE), и загрузим его в любой отладчик-дизассемблер.
Вырисовывается нерадостная картина:
Мало того, что все разделы и заголовки свалены в кучу, так еще и файл явно чем-то запакован.
Дальше можно пойти двумя путями.
Первый — вручную отследить программу до тех пор, пока не будет обнаружена точка входа, а затем сделать дамп (не рекомендуется новичку).
Второй, более простой — попытаться определить упаковщик программы и распаковать ее автоматически.
Пойдем вторым путем.
Загрузите программу в PIED:
Нам повезло, PIED был успешно обнаружен упаковщиком FSG. Скачайте любой автоматический распаковщик FSG и успешно удалите один уровень защиты (например, Unfsg2.0):
Снова загрузим программу в отладчик-дизассемблер.
Мы увидим еще один уровень защиты:
Да, то, что выяснилось, было полной ерундой.
Однако мы можем быть уверены, что находимся на правильном пути.
Это совершенно обычный исполняемый код, только немного запутанный.
Причём он плохо зафуфсирован: посмотрите, код просто разбавлен командами nop, которые ничего не делают и push reg и pop reg, которые ничего не значат. Прокрутим программу немного вниз и увидим основной цикл расшифровки:
Проследим программу до этого места:
И попадаем к уже полностью расшифрованному программному коду (не забудьте обновить окно отладчика для корректного отображения команд):
Теперь давайте снимем полученный дамп любым доступным вам инструментом.
Наконец, мы обнаружили некоторые функциональные возможности вируса:
Вот тут-то и начинается настоящий анализ.
Прежде всего, при запуске вирус вызывает процедуру, расположенную по адресу 0x401128. Как вы могли догадаться, эта функция создает пакетный файл под названием «c.bat» со следующим содержимым:
Вперед, продолжать.
После создания 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:
И находим PID нужного нам процесса (в принципе, можно было бы узнать PID и в отладчике, ну да ладно).
Преобразовав 1356 из 10 в шестнадцатеричную систему, получим 0x54C. Далее запускаем LordPE и пытаемся снять дамп процесса:
Видим, что у нас недостаточно прав на это действие из-за того, что процесс уже отлаживается другой программой.
Т.
к.
мы работаем в среде виртуальной машины, мы можем просто продолжить выполнение основной программы и затем легко снять нужный нам дамп.
Внимание!!! Этот шаг вы делаете на свой страх и риск!!! У меня все прошло успешно, и я получил зараженный файл svhost.exe, готовый для анализа:
Мы снова видим цикл расшифровки:
XOR БАЙТ PTR DS:[EBX-5],0хB1
ИНК ЕВХ
ПЕТЛЯ КОРОТКАЯ 0х100251D
Если эту программу запустить, она вылетит с ошибкой, так как запись в участок кода запрещена.
Давайте немного подумаем: поскольку дамп был снят с процесса во время его работы, цикл расшифровки уже завершен.
И теперь при запуске программа будет пытаться зашифровать себя.
Нам это не нужно, поэтому для дальнейшего анализа запишем весь цикл расшифровки.
Мы прошли долгий путь к этому моменту, не так ли? Проследим дальше на виртуальной машине:
Мы видим цикл, расположенный по адресам 0x10255C-0x1002587. Его цель — определить адреса функций, жизненно важных для работы кода WinAPI. Само сравнение имен происходит в этом месте:
После определения необходимых адресов функций WinAPI мы сталкиваемся с еще одним уровнем защиты.
Зараженная программа вызывает функцию VirtualAlloc для выделения дополнительной области памяти, в которую копируется еще один слой вредоносного кода, управление которому передается с помощью команды JMP EAX:
Наконец-то нам открылась функциональность самого вируса.
Вредоносный код загружает стандартную динамическую библиотеку urlmon.dll для использования функции URLDownlodToFile, после чего используется для непосредственной загрузки файлов chkdsk*.
exe. Вот момент загрузки файла:
Вот где выполняется загруженный файл:
И вот окончание процесса:
Также отметим интересные ссылки для дальнейшего анализа:
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&
Пора подвести итог: анализируемая программа без ведома пользователя скачивает из Интернета файлы неизвестного содержания и запускает их на исполнение.
Вот, собственно, и все, на что способна эта вредоносная программа, поэтому ее можно отнести к категории троянов-загрузчиков.
Как видите, анализ вредоносного ПО оказался не таким уж и сложным, хотя мы столкнулись с довольно большим количеством уровней защиты.
Удачи в анализе на вирус! Теги: #вирус #Антивирусная защита #обратное проектирование #Ассемблер #анализ вирусов
-
Яндекс Запустил Облако
19 Oct, 24 -
Освещение Для Вещей
19 Oct, 24 -
Hitachi Больше Не Будет Производить Пк
19 Oct, 24