SHA1: c829db3e169a67f1e623f2355a0935bc89c16c64
Троянская программа, предназначенная для слежки за китайскими пользователями. Устанавливается на мобильные Android-устройства как приложение с именем «AndroidUpdate».
После запуска извлекает из своего программного пакета следующие исполняемые файлы:
- super;
- detect;
- liblocSDK4b.so;
- libnativeLoad.so;
- libPowerDetect.cy.so;
- 1.dat;
- libstay2.so;
- libsleep4.so;
- substrate_signed.apk;
- cInstall.
Далее пытается запустить на исполнение модуль cInstall (Android.BackDoor.41) с правами root. Если это невозможно, запускает его в обычном режиме.
В случае наличия root-полномочий cInstall выполняет установку в системную директорию /system/bin модуля super, устанавливает в системную директорию /system/lib модули libnativeLoad.so и liblocSDK4b.so, а также незаметно инсталлирует приложение substrate_signed.apk.
Затем троянец удаляет собственный ярлык с главного экрана ОС и запускает вредоносный сервис PowerDetectService, который отслеживает следующие системные события:
- android.intent.action.BOOT_COMPLETED (включение мобильного устройства);
- android.net.conn.CONNECTIVITY_CHANGE (появление сетевого подключения).
Также данный сервис запускает модуль substrate_signed.apk, ответственный за возможность перехвата троянцем вводимых пользователем данных.
Во время своей работы сервис PowerDetectService обращается к функциям библиотеки libnativeLoad.so (Android.BackDoor.42), которая запускает исполняемый файл detect (Android.BackDoor.45). Он, в свою очередь, активирует работу троянской библиотеки libsleep4.so (Android.BackDoor.46), которая в постоянном режиме создает снимки экрана зараженного устройства и перехватывает вводимые данные, а также библиотеки libstay2.so (Android.BackDoor.43), крадущей информацию из телефонной книги и отслеживающей СМС-сообщения и переписку в мессенджере QQ.
Модуль 1.dat способен принимать от управляющего сервера различные команды:
- "DOW" – загрузить файл с сервера;
- "UPL" – загрузить файл на сервер;
- "PLI", "PDL", "SDA" – обновить вредоносные модули, а также настройки троянца;
- "DIR" – получить список файлов в заданном каталоге;
- "DTK" – записать содержимое заданного каталога в файл;
- "OSC", "STK" – выполнить поиск заданного файла или каталога;
- "OSF" – отменить поиск файла;
- "DEL" – удалить заданный файл;
- "SCP" – сделать снимок экрана;
- "BGS" – включить микрофон и начать аудиозапись;
- "GPRS" – начать отслеживание местоположения пользователя.
Часть полученных команд выполняется модулем 1.dat самостоятельно, в то время как для исполнения остальных он обращается к функционалу других троянских библиотек, которые тесно взаимодействуют между собой через сокеты UNIX с использованием двухбайтовых команд.
Команды сокета /data/data/com.sec.android.service.powerManager/cores/audioListener:
- 0x2633 - начать аудиозапись на встроенный микрофон;
- 0x2634 - остановить аудиозапись;
- 0x2635 - обновить файл конфигурации для записи аудио.
Команды сокета /data/data/com.sec.android.service.powerManager/cores/smsListener:
- 0x2629 - скопировать номера контактов;
- 0x2630 - скопировать номера контактов;
- 0x2631 - скопировать СМС-сообщения;
- 0x2632 - скопировать журнал вызовов.
Команда сокета /data/data/com.sec.android.service.powerManager/cores/location:
- 0x2628 – используется для передачи информации о местоположении мобильного устройства.
Команда сокета /data/data/com.sec.android.service.powerManager/cores/pro:
- 0x2532 – получить имя процесса, в котором пользователь работает в данный момент.
Команда сокета /data/cores/Users/All Users/Intel/Data/plugin2IPC:
- 0x2678 – используется для передачи введенных пользователем данных.
Для получения текущих координат зараженного мобильного устройства троянцем используется Baidu Maps для Android. Все собранные вредоносным приложением данные хранятся локально на инфицированном устройстве в виде файловых объектов. При необходимости злоумышленники могут получить их, используя указанные выше команды (UPL, DIR и т. д.).
Логирование вводимого текста осуществляется в модуле libPowerDetect.cy.so (Android.BackDoor.39) с помощью перехвата следующих методов:
- android.view.inputmethod.BaseInputConnection.commitText(CharSequence text, int newCursorPosition)
- android.inputmethodservice.InputMethodService.onFinishInput()
- android.inputmethodservice.InputMethodService.onWindowHidden()
Для перехвата методов используется MSJavaHookMethod из утилиты Tool.Substrate.1.origin.