SHA1-хеши:
- d3415f06879c72d76d873b2e260e3cf014f48666
- 4628098e1a153dd514de5563aeaaec90ba4fba5d
Описание
Android.MagicAd.1.origin является компонентом трояна Android.MagicAd.1, который тот расшифровывает из своих файловых ресурсов и запускает в процессе работы. Представляет собой исполняемый dex-файл, реализующий основную функциональность для отображения рекламы.
Принцип действия
Троян Android.MagicAd.1 расшифровывает нативную библиотеку из файла в каталоге его ресурсов /assets. Далее он расшифровывает из этой библиотеки dex-файлы, среди которых — Android.MagicAd.4 и Android.MagicAd.1.origin.
Android.MagicAd.1 использует Android.MagicAd.4 для запуска Android.MagicAd.1.origin.
Основная задача Android.MagicAd.1.origin — запуск активностей с рекламой при работе в фоне (Background).
Android.MagicAd.1.origin регистрирует фильтры намерений:
- com.android.start — основной фильтр, используется для обработки намерения с рекламой, которое в качестве объекта передается от основного вредоносного приложения Android.MagicAd.1. Из данного намерения фильтр получает намерение для запуска активности с рекламой в фоновом режиме.
- com.android.start.simple — фильтр создает объект отложенного намерения (PendingIntent) для запуска рекламы; не используется в текущей версии трояна.
- com.android.jkp — запускает намерение для показа рекламы через диалог выбора действия в другом приложении (chooser dialog); не используется в текущей версии трояна.
- com.android.media — фильтр, необходимый для демонстрации рекламы через Media Player.
Использование виртуального экрана
Android.MagicAd.1.origin проверяет параметр Build.VERSION.SECURITY_PATCH (версия обновления безопасности системы). Если версия ниже 20230901, троян создает виртуальный экран размером 1x1 пиксель, чтобы повысить приоритет своего фонового процесса и защитить его от завершения системой.
Демонстрация рекламы
При получении от Android.MagicAd.1 намерения с рекламой Android.MagicAd.1.origin выбирает наиболее подходящий способ ее отображения из фонового режима, основываясь на модели зараженного устройства.
Отложенные намерения (PendingIntent)
Android.MagicAd.1.origin может запускать активности с рекламой через другие приложения при помощи отложенных намерений. В зависимости от целевой программы, механизм может иметь разные варианты.
Вариант 1
Данный вариант реализуется через приложение Mi Browser (com.android.browser).
Получив исходное намерение для запуска активности с рекламой, Android.MagicAd.1.origin помещает его в отложенное намерение и передает программе Mi Browser. Браузер извлекает из отложенного намерения исходное намерение и запускает его. Данное намерение запускает активность, которая демонстрирует заданную рекламу.
При запуске Mi Browser Android.MagicAd.1.origin передает браузеру отложенное намерение с активностью для отображения рекламы
Вариант 2
Данный вариант реализуется через взаимодействие с приложениями com.amazon.tv.launcher (лончер Amazon Fire TV Home Screen устройств Amazon TV) и com.android.systemui (графическая оболочка SystemUI устройств Xiaomi).
Логика Android.MagicAd.1.origin, ответственная за отправку намерения с рекламной активностью
Получив от Android.MagicAd.1 исходное намерение для запуска активности с рекламой, Android.MagicAd.1.origin передает отдельное намерение целевым приложениям, чтобы те вывели трояна из фонового режима. Эти приложения либо отправляют собственное широковещательное намерение для запуска трояна (в случае с com.android.systemui), либо запускают троян напрямую (в случае с com.amazon.tv.launcher).
com.android.systemui
Если целевая программа — com.android.systemui, Android.MagicAd.1.origin проверяет, что является единственным приложением в системе, у которого есть широковещательные приемники для обработки события com.miui.intent.action.DOUBLE_CLICK. Это необходимо, чтобы намерение, которое передает целевая программа, гарантированно попало к трояну и запустило его.
Если условие выполняется, Android.MagicAd.1.origin вызывает в приложении метод поставщика содержимого (Content Provider) с authority-идентификатором com.miui.systemui.keyguard.wallpaper, при обработке которого целевая программа запускает трояна. После этого Android.MagicAd.1.origin запускает активность с рекламой из отложенного намерения, которое поступило от основного вредоносного приложения.
Фрагмент кода Android.MagicAd.1.origin, отвечающего за запуск трояном приложения SystemUI
com.amazon.tv.launcher
Если целевая программа — com.amazon.tv.launcher, Android.MagicAd.1.origin запускает ее, передавая ей намерение (com.amazon.device.DEEPLINK) с параметром packageName, где указывает имя своего пакета. При обработке этого намерения приложение запускает трояна по имени его пакета. После этого Android.MagicAd.1.origin напрямую запускает активность с рекламой из отложенного намерения.
Фрагмент кода Android.MagicAd.1.origin, отвечающий за запуск трояном приложения Amazon Fire TV Home Screen через отправку соответствующего намерения
Запуск рекламных активностей через Android Binder на устройствах Vivo
На устройствах Vivo Android.MagicAd.1.origin запускает рекламные активности через Android Binder, передавая ему обычные намерения через контейнер данных Parcel. Предположительно это позволяет трояну запускать другие приложения из фона. Целевые программы:
- com.iqoo.secure (iManager)
- com.android.contacts (телефонная книга)
- com.vivo.browser (браузер)
- com.baidu.input_vivo (клавиатура)
Через них Android.MagicAd.1.origin пытается запустить себя, после чего запускает активность с рекламой.
Binder Inject
Также на устройствах Vivo могут использоваться инжекты Binder. Троян выполняет поиск всех сервисов android.accounts.AccountAuthenticator на зараженном устройстве, получает из них поле IBinder и выполняет инжект собственного Binder в сервис. Далее троян запрашивает у системы регистрацию учетной записи. Поскольку Binder заменен на троянский, вредоносная программа получает управление, и ее Binder возвращает собственное намерение для запуска активности с рекламой.
Запуск рекламных активностей через Media Player
Android.MagicAd.1.origin может демонстрировать рекламу через медиаплеер (Media Player). Этот способ используется, если на устройстве установлена ОС Android с версией SDK 34 и выше, либо если выполняются следующие условия:
- устройство не является продуктом Amazon;
- если Android SDK имеет версию 30 и выше и это — устройство Vivo, на нем должно быть установлено обновление безопасности старше заданной версии.
Фрагмент кода трояна Android.MagicAd.1, где выполняется данная проверка:
!mw_rom_class.mw_check_rom_name_amazon() || Build.VERSION.SDK_INT > 30 ? mw_vivo_binder_hijack_class.mw_get_vivo_sec_patch() >= 20220601 : false
Если устройство соответствует нужным параметрам, Android.MagicAd.1 при помощи Base64 декодирует строку, которую затем в виде файла сохраняет в директорию /files. Имя файла представляет собой конкатенацию MD5-хеша от имени троянского пакета и строки _ddsound. Этот файл в дальнейшем используется для проигрывания его через медиаплеер.
Android.MagicAd.1 создает медиаплеер и устанавливает ему минимальную громкость:
media_player_obj.media_player.setVolume(1.0f, 1.0f);
Затем троян создает экземпляр сессии MediaSession, которая позволяет связать медиаплеер с глобальной системой управления мультимедиа Android.
Далее в setMediaButtonReceiver() Android.MagicAd.1 задает отложенное намерение для запуска Media Receiver. При помощи команды Runtime.getRuntime().exec("cmd media_session dispatch record").waitFor(); троян нажимает кнопку записи в медиаплеере и сразу закрывает его.
Перед запуском команды Android.MagicAd.1 также передает изначальное намерение в статическую переменную класса. В результате намерение попадает в Media Receiver, который запускает событие LocalBroadcast со значением com.android.media. Это событие контролируется троянским модулем Android.MagicAd.1.origin, который запускает изначальное намерение с рекламой, пришедшее от Android.MagicAd.1.
Подробнее об Android.MagicAd.4
Подробнее об Android.MagicAd.1
Индикаторы компрометации
Новость о трояне