SHA1-хеши:
- ed975255eba30345de74936e24b9b3090f26ed7e (/data/google/daemon)
- 182939085a9aa1d6f0e60da31b200cd644522748 (расшифрованная полезная нагрузка)
Описание
Компонент вредоносной программы-бэкдора Android.Vo1d, обнаруженной в системной области ряда моделей ТВ-приставок на базе ОС Android. Является демоном, выполняющим различные задачи на инфицированных устройствах. Его функциональность включает:
- расшифровку полезной нагрузки;
- общение с C&C-сервером;
- скачивание APK-файлов (предположительно);
- скачивание и запуск нативных библиотек.
Принцип действия
Расшифровка полезной нагрузки
Android.Vo1d.5 извлекает из себя полезную нагрузку, для расшифровки которой используется алгоритм XXTEA с ключом fPNH830ES23QOPIM*&S955(2WR@L*&GF. Расшифровываемый объект — основное тело Android.Vo1d.5 — помещается в оперативную память.
Общение с C&C-сервером
Android.Vo1d.5 через POST-запрос связывается с C&C-сервером, адрес которого берется из заданного списка. Изначально список содержит единственный адрес hxxp[:]//meiboot[.]com/api/config.
Формат запроса:
POST | hxxp[:]//meiboot[.]com/api/config |
---|---|
User-Agent | curl/7.64.0 |
Accept | */* |
Content-Type | application/json;charset=UTF-8 |
Пример запроса:
{
"a": "32",
"m": "debuggerd-11236.0",
"s": "10",
"u": "a1d4f55f6be3d743497fadee1d574b3357029c25"
}
где:
- a — константа;
- m — поле, содержащее строку с информацией об имени процесса трояна, а также его pid и uid в формате <process_name>-<pid>.<uid>;
- s — константа;
- u — сеансовый ключ, которым будут зашифрованы поля u и d (URL) в ответах от сервера (описаны ниже).
В ответ от сервера приходит JSON одного из нескольких форматов.
Пример ответа №1:
{
"code": "200",
"msg": [
{
"i": "",
"v": "",
"a": "",
"u": ""
},
{ ... }
]
}
где:
- i — идентификатор загружаемого файла;
- v — идентификатор версии загружаемого файла;
- a — код запроса;
- u — ссылка для загрузки файла, зашифрованная XXTEA.
В этом ответе с сервера передаётся список команд, которые трояну необходимо выполнить.
Возможные команды от C&C-сервера:
- 1 — скачать файл из указанного URL в поле u и поместить его в /data/system/users/.v/<id1>.<id2>;
- 2 — заново скачать файл по id i;
- 3 — удалить файл по id i;
- 4 — скачать файл по указанному URL и поместить его в таблицу по id i;
- 5 — поместить файл в таблицу по id i.
Указанная выше таблица представляет собой список скачанных файлов, по которому демон проходит в другом потоке, после чего расшифровывает скачанные файлы и помещает расшифрованные варианты в одну из следующих директорий:
- /data/system/android.hardware.support@<id>.0.so (для Android API меньше версии 29);
- <prefix>/lib/arm/libsupport@<id>.0.so
Затем Android.Vo1d.5 запускает эти файлы, вызывая функцию init у .SO-файлов.
Пример ответа №2:
{
"code": "200",
"msg": {
"i": "",
"d": [
"url_1",
"url_2",
"...",
"url_n"
]
}
}
где:
- i — интервал между запросами к серверу;
- d — список адресов C&C-серверов. Каждая строка в нем зашифрована XXTEA сеансовым ключом из запроса.
Эта команда используется для пополнения списка адресов C&C-серверов, с которыми может общаться демон.
Локальное пополнение списка адресов C&C-серверов
Если Android.Vo1d.5 не удается соединиться ни с одним C&C-сервером из таблицы адресов, троян самостоятельно генерирует несколько адресов по следующей схеме:
Адрес сервера | Домен | |
---|---|---|
0a597f79d876441d | . | com |
57fd438a26874780 | xyz | |
1e93c45d9b414092 | top | |
111a2e0d676a4e94 | net |
Android.Vo1d.5 берет случайный адрес сервера, к нему добавляется случайный домен, после чего вредоносная программа пытается подключиться к полученному адресу. Авторы трояна, вероятно, планировали регистрировать такие адреса по мере необходимости, чтобы демоны продолжали функционировать в случае блокировки каких-либо адресов C&C-серверов.
Артефакты
Демон Android.Vo1d.5 содержит следующие строки:
- C:/Users/dazhi/Desktop/dynamicbox/libsdk/external/libserver/server.c
- C:/Users/dazhi/Desktop/dynamicbox/libsdk/external/libserver/record_stream.c