Специалисты «Лаборатории Касперского» опубликовали отчет, посвященный вредоносу для Android xHelper. Исследователи выяснили, каким образом троян сумел получить репутацию «неудаляемого», и что именно обеспечивает ему такую выживаемость.
«Неубиваемый» троян
Впервые xHelper был замечен ИБ-специалистами весной 2019 года, и первый подробный отчет о проблеме появился в августе, когда эксперты Malwarebytes сообщили, что малварь заразила уже 35 000 устройств.
Осенью 2019 года появился новый обзор вредоноса, уже опубликованный специалистами компании Symantec, которые утверждали, что количество инфицированных устройств уже перевалило за 45 000, и в среднем xHelper заражает 131 новую жертву в день (около 2400 новых жертв в месяц), большинство из которых были обнаружены в Индии, США и России.
Основным источником заражений выступают редиректы и подозрительные сайты, которые переадресуют пользователей на страницы с приложениями для Android. Такие сайты подробно инструктируют пользователя, как загрузить приложения не из Google Play, а скрытый в приложениях код в итоге приводит к загрузке xHelper.
Но самая интересная особенность xHelper состоит в том, что он ведет себя не так, как большинство Android-малвари. Дело в том, что для удаления xHelper недостаточно даже сброса устройства к заводским настройкам, и единственным доступным для пострадавших вариантом остается полная перепрошивка зараженного девайса (что возможно далеко не всегда).
Более того, и в 2019 году эксперты Malwarebytes и Symantec так и не смогли понять, каким образом xHelper «выживает» после упомянутых выше действий. Вмешательство трояна в работу системных приложений и служб обнаружено не было, а в Symantec считали, что xHelper вряд ли предустановлен на устройствах «из коробки», хотя малварь действительно чаще появляется на устройствах конкретных брендов.
Уже в феврале текущего года аналитики Malwarebytes предположили, что xHelper каким-то образом эксплуатирует процесс внутри Google Play Store для инициации переустановки, а сброс к заводским настройкам малварь переживает при помощи специальных каталогов, которые создает на устройстве и где скрывает свой APK. Дело в том, что в отличие от приложений, каталоги и файлы сохраняются на устройстве даже после сброса к заводским настройкам. И предполагалось, что после сброса Google Play Store выполняет какую-то пока неопределенную операцию, после чего xHelper переустанавливается и вновь появляется в системе.
xHelper и «матрешка» из троянов
Теперь посвященный xHelper отчет опубликовали специалисты «Лаборатории Касперского». Они отмечают, что активность малвари не снижается до сих пор, и сообщают радостную новость: эксперты выяснили, каким образом авторы xHelper обеспечили своему детищу почти беспрецедентную выживаемость.
Аналитики пишут, что троян, как правило, маскируется под популярное приложение для очистки и ускорения работы смартфона, однако на деле не несет никакой полезной функциональности: после установки такой «очиститель» просто исчезает, и найти его нельзя ни на главном экране, ни в меню программ. Увидеть его можно, только заглянув в список установленных приложений в настройках системы.
Полезная нагрузка xHelper зашифрована в файле /assets/firehelper.jar, и так как от версии к версии ее шифрование практически не менялось, специалисты расшифровали ее без труда. Главная функция пейлоада заключается в отправке информации о телефоне жертвы (android_id, производитель, модель, версия прошивки и так далее) на адрес злоумышленников: https://lp.cooktracking[.]com/v1/ls/get и загрузке следующего вредоносного модуля — Trojan-Dropper.AndroidOS.Agent.of.
Этот вредонос, в свою очередь, расшифровывает и запускает собственную полезную нагрузку, используя для этого идущую в комплекте нативную библиотеку, — такой подход затрудняет анализ модуля. На этом этапе расшифровывается и запускается следующий дроппер — Trojan-Dropper.AndroidOS.Helper.b. Он, в свою очередь, запускает зловред Trojan-Downloader.AndroidOS.Leech.p, который и отвечает за дальнейшее инфицирование устройства.
Основой и единственной задачей Leech.p является скачивание малвари HEUR:Trojan.AndroidOS.Triada.dd (небезызвестный банкер Triada) с набором эксплоитов для получения root-прав на устройстве жертвы.
Все вредоносные файлы последовательно сохраняются в папку данных приложения, к которой другие программы не имеют доступа. Такая «матрешка» позволяет авторам запутывать следы и использовать известные защитным решениям вредоносные модули. Получить root-права малвари удается в основном на устройствах под управлением Android версий 6 и 7 китайских производителей (в том числе ODM). А после получения прав xHelper может устанавливать вредоносные файлы прямо в системный раздел.
Специалисты отмечают, что системный раздел монтируется при старте системы в режиме «только для чтения». Благодаря root-правам троян перемонтирует его в режим записи и приступает к основным действиям: запускает скрипт с говорящим названием forever.sh. В ход идут известные трюки Triada, в том числе и перемонтирование системного раздела для установки на него своих приложений. В данном случае устанавливается пакет com.diag.patches.vm8u, который «Лаборатория Касперского» отслеживает как Trojan-Dropper.AndroidOS.Tiny.d.
В результате папку /system/bin копируется несколько исполняемых файлов:
- patches_mu8v_oemlogo — Trojan.AndroidOS.Triada.dd;
- debuggerd_hulu — AndroidOS.Triada.dy;
- kcol_ysy — HEUR:Trojan.AndroidOS.Triada.dx;
- /.luser/bkdiag_vm8u_date — HEUR:Trojan.AndroidOS.Agent.rt.
Еще несколько файлов копируется в папку /system/xbin:
- diag_vm8u_date;
Вызов файлов из папки xbin добавляется в файл install-recovery.sh, что позволяет Triada запускаться при старте системы. На все файлы в целевых папках устанавливается атрибут неизменяемости (immutable), что затрудняет удаление малвари: система не позволяет удалять файлы с данным атрибутом даже суперпользователю. Однако с этим методом самозащиты трояна можно бороться: нужно перед удалением файла снять данный атрибут командой chattr.
Возникает вопрос: если вредоносное ПО может перемонтировать системный раздел на запись, чтобы скопировать себя в него, может ли пользователь пойти по тому же пути и удалить вредоноса? Авторы Triada тоже задались этим вопросом и в результате применили еще один защитный прием — модификацию системной библиотеки /system/lib/libc.so. Эта библиотека содержит в себе общий код, который используется практически всеми исполняемыми файлами на устройстве. Triada подменяет своим кодом в libc функцию mount, использующуюся для монтирования файловых систем, и таким образом запрещает пользователю монтирование раздела /system в режиме записи.
В довершение всего троян скачивает и устанавливает на устройство еще несколько вредоносных приложений (например, HEUR:Trojan-Dropper.AndroidOS.Necro.z), а также удаляет приложения для управления root-доступом, такие как Superuser.
Как же избавиться от xHelper?
Из вышесказанного следует, что простым удалением xHelper невозможно избавиться от всей заразы, засевшей в системе. Приложение com.diag.patches.vm8u, установленное в системный раздел, заново установит xHelper и другое вредоносное ПО при первом удобном случае.
Если устройстве установлена кастомная среда восстановления Android, можно попытаться достать файл libc.so из оригинальной прошивки и заменить им зараженный, а затем удалить все вредоносное ПО из системного раздела. Однако проще и надежнее будет полностью перепрошить девайс, как уже и было сказано в начале этой заметки.
При этом стоит учитывать, что иногда в прошивках атакуемых xHelper смартфонов встречается предустановленное вредоносное ПО, которое самостоятельно скачивает и устанавливает приложения (в том числе и xHelper). Тогда перепрошивка тоже будет бесполезна, и стоит посмотреть в сторону альтернативных прошивок для данного устройства.
Так или иначе, исследователи делают вывод, что использовать смартфон, зараженный xHelper, крайне опасно. Ведь на устройстве, по сути, присутствует бэкдор с возможностью исполнения команд от имени суперпользователя. Он предоставляет злоумышленникам полный доступ к данным всех приложений и может использоваться другими вредоносами, например такими, как CookieThief.