Специалисты «Лаборатории Касперского» рассказали, что в апреле 2017 года в официальном каталоге приложений Google Play был обнаружен вредонос Trojan.AndroidOS.Dvmap.a (далее просто Dvmap). Как оказалось, малварь не только получает root-права на зараженном устройстве, но и внедряет вредоносный код в системные библиотеки среды выполнения (libdmv.so или libandroid_runtime.so). Пользователи Google Play успели загрузить трояна более 50 000 раз, после чего Dvmap был обнаружен и удален из каталога.
Эксперты пишут, что Dvmap — это первый вредонос для Android, который внедряет вредоносный код в системные библиотеки во время выполнения. Стоит сказать, что похожая функциональность отличала трояна Android.Loki, который был обнаружен исследователями компании «Доктор Веб» в 2016 году.
Но вернемся к Dvmap. Чтобы обойти проверки Google Play, создатели трояна использовали интересный прием: в конце марта 2017 года в каталог было загружено «чистое» приложение, а затем авторы малвари несколько раз публиковали вредоносные обновление для него. Вредоносная версия публиковалась ненадолго, обычно в тот же день в каталог возвращалась «чистая» версия программы. В период с 18 апреля по 15 мая 2017 года такая замена произошла по крайней мере 5 раз.
На начальном этапе заражения Dvmap пытается получить root-права на зараженном устройстве и установить некоторые модули. Все архивы, актуальные для этого этапа, содержат одни и те же файлы, за исключением файла common. Это эксплойт-пак, с помощью которого троян получает root-права. В разных архивах лежат три файла для 32-битных систем и один файл для 64-битных (троян поддерживает и 64-битную версию Android, что встречается редко). Если эти файлы успешно получают root-права, то Dvmap устанавливает в систему несколько утилит, а также вредоносное приложение com.qualcmm.timeservices.
После троян запускает файл start из архива Game324.res или Game644.res, проверяет, какая версия Android установлена на устройстве, и принимает решение, какую библиотеку пропатчить. Для версий Android 4.4.4 и более ранних троянец патчит метод _Z30dvmHeapSourceStartupBeforeForkv из библиотеки libdvm.so, для Android 5 и более поздних патчит метод nativeForkAndSpecialize из libandroid_runtime.so. Обе библиотеки – это библиотеки среды выполнения, связанные с рабочими средами Dalvik и ART. До того, как пропатчить метод, троянец сохраняет резервную копию исходной библиотеки с названием bak_{исходное имя}.
В процессе патча малварь записывает вредоносный код поверх существующего, чтобы он выполнял только вредоносный модуль /system/bin/ip и более ничего. Таким образом, оригинальный метод, в который был записан вредоносный код, теряет всю полезную функциональность.
После троян помещает пропатченную библиотеку обратно в системную папку и заменяет исходный модуль /system/bin/ip вредоносным модулем из архива (Game324.res или Game644.res). Это гарантирует, что вредоносный модуль трояна будет выполнен с системными правами. Исследователи отмечают, что «эти действия потенциально очень опасны, в некоторых случаях могут привести к поломке/выходу из строя устройства». Но файл ip не содержит никаких методов из исходного модуля ip. Соответственно, все приложения, использующие этот модуль, потеряют часть своей функциональности, или могут даже перестать работать.
Вредоносный модуль ip способен отключить опцию Verify Apps в Android и, изменив системные настройки, разрешить установку приложений из сторонних источников. Далее, без участия пользователя, просто исполнив некоторые команды, он может дать приложению com.qualcmm.timeservices права администратора устройства, и это весьма необычный способ получения root-прав.
Основная задача приложения com.qualcmm.timeservices – загрузить архивы и выполнить содержащийся в них исполняемый файл start. За время наблюдений приложение успешно подключалось к командному серверу, но никаких команд с него не поступило. Это заставило исследователей предположить, что пока Dvmap находится в стадии тестирования. И хотя специалистам не удалось узнать, какие файлы будут выполняться Dvmap, они полагают, что вероятнее всего это вредоносные или рекламные файлы.