Недавно наши специалисты обнаружили новую вредоносную программу, которая была добавлена в антивирусные базы как Win32/Napolar. Мы обратили на нее внимание в середине августа из-за интересных методов антиотладки и внедрения кода. Бот используется злоумышленниками в нескольких целях: проведение DoS-атак, организация SOCKS прокси-сервера, кража данных с зараженных систем. Как и прочие троянские программы, Win32/Napolar умеет внедрять свой код в браузеры с целью получения данных из веб-форм.
Мы наблюдали активность Napolar с конца июля. С тех пор были зафиксированы тысячи случаев заражения, многие из которых в Южной Америке. На такие страны как Перу, Эквадор и Колумбия приходится наибольшее число заражений. Больше информации о географии распространения можно найти на virusradar.
Нам не удалось стать свидетелями кампании по распространению этого вредоносного кода, но косвенные доказательства указывают на использование для этой цели социальной сети Facebook. Поскольку Napolar имеет возможности по краже учетных данных аккаунтов Facebook, операторы ботнета могут повторно использовать эти данные для отправки сообщений контактам скомпрометированного пользователя. Ниже представлен список имен файлов, которые злоумышленники использовали в кампаниях по распространению Napolar:
- Photo_032.JPG_www.facebook.com.exe
- Photo_032.JPG_www.facebook.com.exe
- Photo_014-WWW.FACEBOOK.COM.exe
Для маскировки подлинного расширения файла и запутывания пользователей, были использованы двойные расширения имен (например, *.JPG.EXE, *.TXT.EXE. Наши коллеги из AVAST в своем анализе подтвердили эти векторы заражения.
Трюки антиотладки
Первое на что мы обратили внимание было отсутствие адреса точки входа в PE-заголовке.
В таком файле функции, которые будут исполнены ОС при его запуске, располагаются в Thread Local Storage (TLS). Дроппер имеет две зарегистрированные TLS функции. Первая из них не выполняет никаких функций. Вторая отвечает за расшифровку кода с использованием алгоритма RC4 и ключа 0xDEADBEEF. Этот расшифрованный код регистрируется в качестве третьей TLS функции перед тем как предыдущая функция возвратит управление ОС.
Третья TLS функция расшифровывает остальную часть кода перед его исполнением. Вредоносный код использует следующие трюки для усложнения своего анализа:
- Все адреса импортируемых функций в таблице импорта заполняются в процессе исполнения с использованием хэшей названий этих функций.
- Взаимодействие дроппера с ОС, в основном, выполняется путем прямого вызова недокументированных функций ntdll вместо использования стандартных API.
Для передачи управления на функцию расшифровки, Win32/Napolar ищет в памяти опкод 0x55 (соответствует инструкции push ebp, предполагаемое начало функции). В случае, если эта инструкция будет заменена опкодом 0xCC (т. е. на нее будет поставлен отладочный брейкпоинт) расшифровка кода не будет работать, поскольку функция не будет вызвана. Такой механизм антиотладки позволяет обнаруживать отладчик в процессе работы дроппера и предпринять нужные действия.
С целью усложнения динамического анализа, Win32/Napolar создает дочерний процесс на основе своего образа с возможностью его отладки.
Такая практика усложнения динамического анализа упоминалась в материале «Analysis of a self-debugging Sirefef cryptor». Но в случае с Napolar возможность отладки вредоносным кодом самого себя реализуется в его основном теле, а не в упаковщике.
Как только отлаживаемый процесс запущен, троянская программа начнет исполнение цикла обработки отладочных событий, возвращаемых функцией WaitForDebugEvent. Псевдокод этого цикла показан ниже на скриншоте.
Первым событием, которое будет обработано этим кодом, является CREATE_PROCESS_DEBUG_EVENT. Уведомление о нем приходит когда отлаживаемый процесс был запущен. В этом случае родительский (основной) процесс будет анализировать заголовок файла образа запущенного процесса на присутствие стандартных маркеров MZ и PE для получения смещения и размера кода с независимым расположением (position-independent code). Затем будет выделен блок памяти в отлаживаемом процессе, куда будет выполняться внедрение кода. Таким образом через подобную операцию будет создано две копии одного и того же кода в этом процессе.
Следующим событием, которое будет обработано в цикле, является EXCEPTION_DEBUG_EVENT. Код обработки этого события перезапишет первую TLS функцию таким образом, чтобы она перенаправила выполнение кода на начало исполняемого файла через использование push/ret инструкций. Затем происходит расшифровка основного тела Napolar и его последующее исполнение (в контексте дочернего процесса). В дальнейшем, код из дочернего процесса отвечает практически за все основные операции, т. е. внедрение кода в процессы, запуск дочерних процессов и перехват различных функций для скрытия своего присутствия в системе и перехвата необходимой информации.
Последним этапом в цикле является получение события EXIT_PROCESS_DEBUG_EVENT. При этом родительский код останавливает отладку вызовом DebugActiveProcessStop и завершает свой собственный процесс с использованием NtTerminateProcess.
Одной из главных возможностей Win32/Napolar является его способность похищать информацию из форм веб-страниц, которые отображаются в браузере. Троянская программа содержит специальный код по обнаружению security-продукта Trusteer, который дополняет браузер пользователя специальными функциями защиты. Если при перечислении запущенных в системе процессов будет найден процесс, который содержит в своем имени «trusteer», то он будет принудительно завершен.
Сетевое взаимодействие
Для взаимодействия с командным C&C-сервером, Win32/Napolar использует протокол HTTP. Первое отправленное ботом на сервер сообщение содержит следующую информацию:
- Версию бота
- Имя пользователя от текущей учетной записи
- Имя компьютера
- Идентификатор бота (Bot ID)
- Версию ОС
- Тип системы (x32/x64).
Затем сервер отвечает заданиями боту, которые он должен выполнить. Эти команды шифруются с использованием RC4, при этом Bot ID используется в качестве ключа для шифрования. Бот поддерживает множество команд:
- Кража информации
- SOCKS прокси
- DoS-атака
- Загрузка дополнительных модулей
- Исполнение модулей
- Обновление бота.
Каждая команда имеет свой уникальный идентификатор, хранящийся в виде одного байта, за которым следуют параметры команды. Следующий скриншот показывает часть трафика, который использовался при взаимодействии между ботом и управляющим сервером.
На следующем рисунке показана расшифровка этой команды с помощью соответствующего ключа. Первый байт «0xC» представляет из себя код команды «sleep» для бота. Параметр – это строка «600», означающая количество секунд, на которое бот должен заснуть.
Мы видели, по крайней мере, семь различных C&C-серверов, используемых Win32/Napolar. Большинство из них оставались онлайн только несколько дней. После этого оператор переместил их в новую сеть. Подобное поведение может объясняться тем, что бот активно используется «в дикой природе», т. е. имеет большое количество установок на компьютеры пользователей. Ниже приведен список доменов обнаруженных C&C-серверов:
- dabakhost.be
- terra-araucania.cl
- xyz25.com
- yandafia.com
- elzbthfntr.com
- alfadente.com.br
В конфигурационных файлах вредоносной программы были обнаружены ссылки на TOR. Возможно эту функцию злоумышленники задействуют позднее для использования преимуществ этой анонимной сети при сетевом взаимодействии.
Авторы Win32/Napolar, судя по всему, очень заинтересованы в продаже своего «продукта». Веб-сайт, рекламирующий бота, выглядит весьма креативным и содержит информацию для потенциальных заказчиков. На нем может быть найден полный код взаимодействия бота с C&C-сервером и PHP-скрипт, работающий с базой SQL. Кроме этого сайт содержит различные примеры плагинов, которые могут быть использованы операторами вредоносного кода. Сами плагины должны быть написаны на Delphi.
Сайт содержит информацию об изменениях, которые были сделаны в разных версиях троянской программы (changelog). Исходя из этих данных, первое изменение было сделано 14-го июля, что соответствует нашим предположениям, поскольку первые образцы бота мы наблюдали в начале августа. Дата регистрации доменов для этих семплов также соответствует началу августа.
Автор: esetnod32