- SHA1: c747a3a901f3076c504dc513bfcf64e8d29600ac (PrivteProvide.jar)
Описание
Троянская программа, предназначенная для работы на Android-устройствах. Она представляет собой DEX-файл, помещенный в JAR-архив. Этот архив копируется в директории целевых приложений другими троянами — в частности, Android.BackDoor.3104. Основные функции Android.Backdoor.854.origin — загрузка и запуск дополнительных вредоносных модулей в контексте атакуемых программ.
Принцип действия
Для запуска трояна используется точка входа com.androidx.v13.PrivteProvide.getInstance(String). После старта через небольшие временные промежутки он пытается получить экземпляр класса android.app.Application, пока это ему не удастся.
Android.Backdoor.854.origin создает в каталоге с файлами целевого приложения следующие подкаталоги:
- .cache/pt — в него загружаются зашифрованные файлы плагинов;
- .cache/pn — в него сохраняются расшифрованные плагины;
- .cache/pd — в нем сохраняются оптимизированные версии плагинов, которые создает операционная система после загрузки исходных версий через класс DexClassLoader.
Далее троян запускает уже загруженные плагины из директории pn. Получение плагинов происходит при обращении к одному из управляющих серверов.
Связь с C&C-сервером
Android.Backdoor.854.origin выполняет запрос к одному их заданных C&C-серверов, подключаясь к ним по порядку, начиная с первого. Если в течение суток установить соединение с первым сервером не удается, троян переходит к следующему. Информация о времени последнего успешного соединения хранится в файле настроек sp_brois_settings в переменной successTime.
Список URL С&C-серверов для подключения:
- hxxp[:]//api[.]genetence[.]com:8300/pl2
- hxxp[:]//api.[]matriature[.]com:8300/pl2
- hxxp[:]//api[.]miretic[.]com:8300/pl2
- hxxp[:]//api[.]sensfaction[.]com:8300/pl2
- hxxp[:]//45[.]33.61[.]62:8300/pl2
Первый запрос выполняется через 2 минуты после запуска потока, при этом запрос повторяется в бесконечном цикле с интервалом в 60 минут. Вначале используется первый URL из списка. Если к нему не удалось подключиться в течение суток, троян переходит к следующему URL.
В запросе используются следующие параметры:
Параметр запроса | Описание |
---|---|
a_l | Версия Android SDK |
a_i | android_id — уникальный идентификатор устройства |
a_v | Имя версии приложения |
a_c | Код версии приложения |
model | Модель устройства |
brand | Бренд устройства |
ver | Строка v3 |
pack | Имя пакета приложения (Package name) |
imsi | IMSI-идентификатор |
imei | IMEI-идентификатор |
res | Разрешение экрана |
sys | Является ли целевое приложение системным (если да, передается значение 1; если нет, передается значение 0) |
fr | Строка, переданная при старте трояна |
ctm | Текущее время |
pft | Время, прошедшее со старта троянского модуля |
sn | md5-хеш от конкатенации значений параметров a_l + a_i + a_v + a_c + "oignuowwg" + ctm |
Передаваемые на C&C-сервер и получаемые в ответ данные шифруются XOR:
public static byte[] xor(byte[] data) {
int i;
for(i = 0; i < data.length; ++i) {
data[i] = (byte)(data[i] ^ 0x24D3);
}
return data;
}
Если сервер возвращает status code в значении 200, то ответ от него должен содержать JSON и определенный хеш для того, чтобы троян выполнил команду на загрузку и запуск плагинов:
JSONObject json = new JSONObject(response_body);
String s = json.getString("s");
if(Hash.md5(json.getString("u") + "&zhanghui18888").equals(s)) {
.... //do work
}
Передаваемый C&C-сервером JSON¬-файл содержит массив plugin, в котором для каждого плагина указаны поля plugin_file, plugin_url и plugin_size.
После получения параметров троян удаляет из каталога /.cache/pn уже существующие плагины, которые отсутствуют в команде. Затем плагины, указанные в команде и которых еще нет на устройстве, загружаются в каталог /.cache/pt. Плагины зашифрованы XOR:
private static byte[] xor(byte[] data) {
byte[] out = new byte[data.length];
int i;
for(i = 0; i < data.length; ++i) {
out[i] = (byte)(data[i] ^ 0xB9);
}
return out;
}
Троян расшифровывает их и помещает в каталог /.cache/pn.
После этого все плагины, скопированные в каталог /.cache/pn, загружаются в память и запускаются в контексте атакуемых приложений. В зависимости от функциональности такие плагины могут выполнять различные вредоносные действия.
Если же сервер возвращает status code в значении 206, Android.Backdoor.854.origin записывает в файл настроек sp_brois_settings переменные "successFlag" = 1 и "successTime" = System.currentTimeMillis(), что означает успешное обращение к C&C-серверу. Аналогичное действие троян выполняет при получении кода 200. При этом при получении кода 206 загрузка плагинов не выполняется.