В этой статье речь пойдет о черве Palevo — именно он ответственен за создание известного ботнета Mariposa. Напомню, что одного из хозяев этого ботнета удалось поймать испанской полиции в начале 2010 года. Сам червь обладает весьма обыденным функционалом: распространение с помощью autorun.inf через съемные носители, установка в автозагрузку, закачка файлов, показ рекламы и прочее.

Итак, я взял один из последних и самых свежих вариантов Palevo и приступил к его последовательному разбору. Для начала — общие характеристики.

Файл представляет собой PE’шник размером в 166 Кб, в котором присутствуют ресурсы. В ресурсах содержатся иконки, которые очень похожи на иконки папок, отображаемых Explorer’ом. Безусловно, это сделано для того, чтобы сбить с толку неопытного пользователя, который не сможет отличить настоящую папку от исполняемого файла. Также в ресурсах содержатся два String Table, в которых находятся фэйковые строки.

Все эти ухищрения используются создателями малвари для того, чтобы файл стал выглядеть более «обычно». Ресурсы я дергал с помощью Resource Hacker’а. Названия четырех секций стандартны: .text, .rdata, .data и .rsrc, а вот название пятой, по-видимому, было сгенерировано случайным образом — Gjgpycll. Причем в заголовке она идет второй, а не последней.

Так что же интересного мне удалось найти при помощи визуального просмотра в Hiew? Почти весь файл зашифрован, однако у меня получилось идентифицировать закриптованный PE-заголовок «вшитого» файла. Он обведен на скриншоте красным овалом. Помимо этого, несколько экранов занимают случайным образом сгенерированные предложения. В этих предложениях есть и точки, и запятые, и рандомные слова. Каждое из слов начинается с большой буквы.

В ходе дальнейшего исследования выяснилось, что все эти строки бесполезны и добавлены в файл лишь для создания энтропии.
Более ничего интересного в ходе осмотра файла в Hiew я не обнаружил. Таким образом, после предварительного анализа удалось выяснить, что файл сильно косит под нормальный и, по сути, является дроппером, так как содержит зашифрованный PE-заголовок.

Отлаживаем!

Следующий этап — непосредственный разбор под отладчиком. В качестве последнего я использовал IDA, применяя по необходимости декомпилятор Hex-Rays. Сразу же после начала анализа я, не слишком удивившись, обнаружил несколько бессмысленных вызовов API-функций. Например, GetCommandLineW возвращает результат в EAX. А в коде, который представлен на иллюстрации вслед за абзацем, видно, что после вызова API’шки регистр EAX заполняется произвольным значением. А затем идет реализация одного из методов антиэмуляции.

Вот как это работает. Вызывается функция OpenProcess, которая, как и любая другая функция, использует стек для хранения своих локальных переменных. После ее исполнения происходит обращение к использованному стеку, расположенному выше текущего ESP, при помощи инструкции MOV ecx, [esp-1Ch]. В системе Windows XP по адресу (ESP — 0x1C), в данном контексте, располагается дворд 0xFFFFFFFF. Далее этот дворд используется в арифметической операции для вычисления адреса дальнейшего перехода при помощи RETN.

Такие техники я обнаружил сразу в нескольких местах во время разбора этого экземпляра Palevo. Первым фрагментом кода, несущим полезную нагрузку в файле, оказался небольшой цикл, который расшифровывал другой участок кода. Цикл невероятно простой:

add d, [eax] * 4 [000424C3A], 06B9700BA
inc eax
cmp eax, 00000013D
jl 000401110

Вся расшифровка заключена в одном ADD’е. Потом с помощью VirtualAlloc’а выделяется дополнительная память, куда копируется только что расшифрованный участок кода. Туда же передается и последующее управление. Часть дальнейшего функционала до боли знакома. Это получение адреса kernel32.dll в памяти с помощью PEB’а и получение адресов экспортируемых функций по их хэшам. А далее, как и ожидалось, происходит выделение еще одного участка памяти, копирование туда зашифрованного PE’шника, который я увидел в самом начале с помощью Hiew, и его расшифровка. Однако здесь применяется уже более сложный алгоритм, нежели просто ADD.

В конечном итоге этот код с помощью нехитрой техники запускает расшифрованный файл в адресном пространстве исходного процесса. Что интересно, в коде, отвечающем за все эти операции, я обнаружил строку Morphex PE32 Loader. Вполне возможно, что это какой–то купленный автоматизированный загрузчик зашифрованных PE-модулей. Для удобства я сдампил часть адресного пространства, в котором располагается расшифрованный модуль, и сохранил его на диск как отдельный файл. В дальнейшем я буду называть этот файл дропом, чтобы отличать его от оригинального Palevo.

После двадцати минут исследования оказалось, что дроп крайне примитивен. Написан он на MSVC8 без каких–либо ухищрений типа обфускации или антиэмуляции. Оно и понятно: этот файл должен располагаться только в памяти, а не на диске. Основной его функционал — расшифровать код и проинжектить его в explorer.exe. Hex-rays хватило около полутора экранов, чтобы поместить там весь функционал дропа. Если описывать его действия более подробно, то вначале он расшифровывает шеллкод, затем ищет окно с классом Progman и, в случае успеха, получает ID процесса, которому принадлежит это окно.

Далее дроп открывает сам процесс, выделяет в нем память с помощью VirtualAllocEx, записывает туда шелл-код посредством WriteProcessMemory и запускает удаленный поток с помощью CreateRemoteThread. Напомню, что окна с классом Progman принадлежат Windows Explorer. Итак, мы пришли к тому, что весь полезный функционал располагается в шелл-коде, который внедряется в процесс explorer.exe. Что же в действительности он делает? Вначале — совсем общие вещи, а именно: прописывает автозагрузку по ключу HKLMSOFTWAREMicrosoftWindows NTCurrentVersion WinlogonTaskBar и копирует оригинальный файл в папку пользователя.

Любопытно, что зловредный поток через небольшие интервалы времени проверяет содержимое ключа TaskBar и, если что–то не в порядке, восстанавливает его. Также я нашел распространение через autorun.inf. Интересно, что строка, которая будет выдаваться пользователю при нажатии правой кнопкой мыши по съемному устройству, написана на испанском языке. Вот и весь autorun.inf целиком:

shellexecute=vikipiki ajlaus.exe
action=Open folderаto view files usingаWindowsаExplore
USEAUTOPLAY=1
open=vikipiki ajlaus.exe
icon=shell32.dll,4
shell\Install\command=vikipiki ajlaus.exe
shell\open\command=vikipiki ajlaus.exe
shell\explore\command=vikipiki ajlaus.exe
Shell\open\command=vikipiki ajlaus.exe
shellexecute=vikipiki ajlaus.exe

Кроме того, было выявлено, что червь пытается подключиться к одному из нескольких серверов по следующим адресам:

******.ananikolic.su
****.pickeklosarske.ru
*****.pornicarke.com
*****.losmibracala.org
92.**.90.237

После этого он ожидает команд от центра управления. Вот некоторые строки, которые используются в качестве ответов командному центру:

DONE!
FAIL!
Drive infected: %c
USBS stopped, %d infected
USBS not running
USBS already running
USBS started
Advertising: %s
Adware2 stopped, %d URLs displayed
Adware already running
Adware not running
Adware2 running: %d browsers, %d URLs
Error=%d, GLE=%d
Already downloaded id=%d
Downloading %s to %s
Done, %s

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

Вначале прогоняется большой цикл для их расшифровки, после чего эту память становится возможным спокойно дампить и подробно рассматривать в Hiew и/или IDA.

Заключение

Как видишь, этот червь оказался совсем не страшным. Конечно, его разработчики применили кое-какие трюки для усложнения анализа — несколько антиэмуляционных техник, фэйковые вызовы API’шек и инжект в память другого процесса. Но разве они способны нас напугать :)?

Да, кстати, чтобы остаться в системе, малварь прописывается в автозагрузку в реестре и непрерывно мониторит соответствующий ключ из созданного потока в процессе explorer.exe. Распространение через autorun.inf — уже прошлый век. Учитывая, что Palevo может скачивать файлы и показывать рекламу по команде, разработчики, скорее всего, используют его для распространения других «заказов». А это могут быть как рекламные программы, так и зловреды, крадущие персональные данные.

Оставить мнение

Check Also

Я у мамы инженер! Как перестать бояться паяльника и начать творить

Ты наверняка встречал в интернете потрясающие проекты вроде оркестра из дисководов, макета…