Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
23
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

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

 

 

 

 

Теперь перейдите в каталог SD-карты:

Generic_ x86:$ cd /sdcard && ls

Android DCIM Statements_dinesh.html

 

 

 

 

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

 

 

 

 

Файл Statement_dinesh.html находится во внешнем хранилище и доступен для любого приложения, установленного на этом устрой- стве с доступом к внешнему хранилищу.

Исследования А. Большева и И. Юшкевича (https://ioactive.com/pdfs/

SCADA-and-Mobile-Security-in-the-IoT-Era-Embedi-FINALab%20(1).pdf) выяви-

ли этот тип уязвимости в неупомянутых приложениях IoT, которые предназначены для управления системами SCADA. Эти приложения использовалистаруюверсиюXamarinEngine,котораяхранилабибли- отеки DLL движка Monodroid на SD-карте, создавая уязвимость, свя- занную с перехватом DLL.

Перехват и анализ сетевого трафика

Чтобы перехватитьи изучитьсетевойтрафик,испробуйтетотже под- ход, который мы использовали для приложений iOS. Обратите вни- мание, что более новые версии Android требуют переупаковки при- ложений для использования установленных пользователем центров сертификации. Те же уязвимости на сетевом уровне могут существо- вать на платформе Android. Например, исследователи обнаружили одну такую уязвимость в приложении OhMiBod Remote для Android (https://www.cvedetails.com/cve/CVE-2017-14487/). Уязвимость позволяла удаленным злоумышленникам выдавать себя за пользователей, от- слеживаясетевойтрафикизатемизменяятакиеполя,какимяпользо- вателя, идентификатор пользователя и токен. Приложение удаленно управляет вибраторами OhMiBod.Аналогичная проблема существует в приложении Vibease Wireless Remote Vibrator, которое позволяет удаленно управлять вибраторами Vibease (https://www.cvedetails.com/ cve/CVE-2017-14486/). Сообщалось также, что приложение iRemocon- WiFi, позволяющее пользователям управлять бытовой электроникой разного рода,не проверяет сертификаты X.509 с серверов SSL (https:// www.cvedetails.com/cve/CVE-2018-0553/).

Утечки по побочным каналам

Утечки по побочным каналам могут происходить через различ- ные компоненты устройства Android, например из-за взлома от- ветвлений, файлов cookie, локального кеша, снимка приложения, избыточного ведения журнала, компонентов клавиатуры или даже специальных возможностей.Многие из этих утечек встречаются как в Android,так и в iOS, например такие как файлы cookie, локальный кеш, избыточное ведение журнала и компоненты пользовательской клавиатуры.

Взлом мобильных приложений  423

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

точноподробноеведениежурнала.Оченьчастовыувидитеинформа-

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

цию журнала приложения, которую разработчики должны были уда- лить при публикации приложения. Используя adb logcat, мы можем отслеживать работу нашего устройства и получать точную информа- цию. Одна из простых целей для отслеживания – это процесс входа в систему (см. рис. 14.15, где показан фрагмент журнала).

Рис.14.15.Данные учетной записи,отображаемые в журналах устройства Android

Это хороший пример данных, которые можно извлечь только из журнала. Помните, что только привилегированные приложения мо- гут получить доступ к такой информации.

Э. Фернандес (E. Fernandes) и др. недавно обнаружили аналогич- ную проблему утечки через побочный канал в популярном приложе-

нии IoT для умного дверного замка Schlage (http://iotsecurity.eecs.umich. edu/img/Fernandes_SmartThingsSP16.pdf). Точнее, исследователи обнару-

жили, что обработчик дверного замка ZWave, взаимодействующий с концентратором устройств, управляющих замками, создает в отче- те описание объекта события, содержащее различные данные, вклю- чая пин-код устройства в виде открытого текста. Любое вредоносное приложение,установленное на устройстве жертвы,можетподписать- ся на такие объекты событий и пин-код дверного замка.

Обход защиты от root-доступа с помощью­ статического патча

Давайте более детально изучим исходный код приложения и найдем защиту от root-доступа или эмуляции. Мы можем легко обнаружить эти проверки, когда ищем любое упоминание root-доступа, эмулято- ров, приложения суперпользователя или даже возможности выпол- нять действия с каталогами ограниченного доступа.

По запросу «root» или «emulator» в приложении мы быстро нахо-

дим файл com.android.insecureBankv2.PostLogin, который содержит функции showRootStatus() и checkEmulatorStatus().

Перваяфункцияопределяет,естьлиуустройстваroot-права,нопо- хоже, что выполняемые ею проверки не очень надежны: она прове- ряет,установленли Superuser.apk и существуетли исполняемый файл su в файловой системе.Если мы хотим попрактиковаться в установке бинарных патчей, можем просто исправить эти функции и изменить оператор переключения if.

424  Глава 14

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С этой целью воспользуемся Baksmali (https://github.com/JesusFreke/

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

smali/)–инструментом,который позволяет нам работать с smali, удоd-f-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

бочитаемой версией байт-кода Dalvik:

$ java -jar baksmali.jar -x classes.dex -o smaliClasses

Затем можно изменить две функции в декомпилированном коде:

.method showRootStatus()V

...

invoke-direct {p0, v2}, Lcom/android/insecurebankv2/PostLogin;- >doesSuperuserApkExist(Ljava/lang/String;)Z

if-nez v2, :cond_f

invoke-direct {p0}, Lcom/android/insecurebankv2/PostLogin;->doesSUexist()Z if-eqz v2, :cond_1a

...

:cond_f

const-string v2, "Rooted Device!!"

...

:cond_1a

const-string v2, "Device not Rooted!!"

...

.end method

Единственная задача, которую вам нужно выполнить, – это изме- нить операции if-nez и if-eqz так, чтобы они всегда переходили к cond_1a вместо cond_f .Эти условные операторы реализуютпро- верки «если не равно к нулю» и «если равно нулю» соответственно.

И наконец, компилируем измененный код smali в файл .dex:

$ java -jar smali.jar smaliClasses -o classes.dex

Чтобы установить приложение, нам сначала нужно удалить суще- ствующие метаданные и снова заархивировать их в APK с правиль- ной структурой:

$ rm -rf META-INF/* $ zip -r app.apk *

Затем мы должны повторно подписать приложение с помощью­ специального хранилища ключей. Инструмент Zipalign, расположен- ный в папке Android SDK,можетисправить структуру APK.Затем Key- tool и Jarsigner создают хранилище ключей и подписывают APK. Для запуска этих инструментов вам понадобится Java SDK:

$ zipalign -v 4 app.apk app_aligned.apk

$ keytool -genkey -v -keystore debug.keystore -alias android -keyalg RSA

Взлом мобильных приложений  425