В начале этого года мы получили на анализ вредоносное Java приложение, которое оказалось мультиплатформенным ботом, работающим на платформах Windows, Mac Os, Linux. Данный бот полностью написан на Java. Злоумышленники используют уязвимость CVE-2013-2465 для заражения пользователей этим вредоносным ПО.
Инициализация и расшифровка строк
Для того чтобы усложнить анализ и детектирование вредоносной программы, ее разработчики использовали обфускатор Zelix Klassmaster. Помимо обфускации байткода, Zelix шифрует строковые константы. Для каждого класса Zelix генерирует разные ключи, следовательно, чтобы расшифровать все строки в приложении, надо исследовать все классы и найти ключи для расшифровки.
Инициализация и расшифровка строк происходит в коде статического инициализатора (<clinit>).
Инициализация шифрованных строк
Алгоритм следующий: берется текущий индекс зашифрованного символа в строке, к нему применяется операция получения остатка от деления на 5, в зависимости от результата выбирается текущий ключ. Далее к зашифрованному символу применяется побитовая операция сложения по модулю 2 с выбранным ключом и получается расшифрованный символ.
Для конкрентного случая алгоритм расшифровки будет выглядит так:
Реализация алгоритма расшифровки на языке Python
Запуск
При запуске бот копирует себя в домашнюю директорию пользователя и прописывается в автозагрузку. В зависимости от платформы, на которой был запущен бот, выбирается следующий тип добавления в автозагрузку:
- Для Windows – HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
- Mac OS – используется стандартный для Mac OS сервис launchd
- Для Linux — /etc/init.d/
Зашифрованный конфигурационный файл для сервиса launchd находится в теле бота.
Расшифрованный конфигурационный файл для сервиса launchd
После запуска и добавления в автозагрузку боту необходимо сообщить об этом своим владельцам. Для того чтобы идентифицировать каждого бота, на пользовательской машине генерируется уникальный идентификатор бота. Этот идентификатор записывается в домашнюю директорию пользователя в файл jsuid.dat.
Управление ботом
Данный бот управляется по протоколу IRC. Здесь всплывает ещё одна интересная особенность этого зловреда — для реализации общения по протоколу IRC он использует открытый фреймворкPircBot. Все необходимые классы зловред таскает с собой.
После запуска инициируется подключение к IRC-серверу.
Сеанс подключения к IRC-серверу
После удачной установки соединения бот заходит на заранее определенный канал, где ожидает команд злоумышленников:
Основной функционал
Основной функционал бота – проведение DDOS атак с компьютеров зараженых пользоваталей.
Бот поддерживает 2 вида флуда :
- HTTP
- UDP
Какой тип атаки использовать, указывается злоумышленником на IRC канале в сообщениях для компьютеров-зомби. Также указываются следующие параметры:
- Адрес атакуемого
- Порт
- Длительность проведения атаки
- Сколько потоков использовать для проведения атаки
Заполнение заголовков при проведении HTTP флуда
User-Agent, который будет вставлен в http запрос, выбирается случайным образом из списка, хранящегося в теле бота в зашифрованном виде.
Расшифрованный список User Agent’ов, который поддерживает бот
При анализе данного вредоносного ПО нами была зафиксирована попытка проведения атаки на один из сервисов осуществления рассылок по электронной почте.
«Лаборатория Касперского» детектирует данную вредоносную программу как HEUR:Backdoor.Java.Agent.a.
Мы выражаем благодарность Золтану Балазу (Zoltan Balazs), CTO компании MRG Effitas, за предоставленный сампл данной вредоносной программы.
Кроссплатформенный java-бот