Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
24
Добавлен:
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

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

ка.Компоновочныйбуфер(pasteboard)–этобуфер,которыйпомогает

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

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

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

фейсами приложений или даже между разными приложениями, ког- да они выбирают операцию вырезания, копирования или дублиро- вания из предоставленного системой меню. Но именно эта функция можетнепреднамереннораскрытьконфиденциальнуюинформацию, такую как пароль пользователя, сторонним вредоносным приложе- ниям, которые отслеживают этот буфер, или другим пользователям на общем устройстве IoT.

Прогнозирующий текстовый движок (также известный, как меха- низм интеллектуального ввода текста) сохраняет слова и предложе- ния, которые вводит пользователь, и затем автоматически предлага- ет их при следующей попытке пользователя ввести данные,повышая общую скоростьнаборатекста.Но злоумышленники могутлегко най- ти эти конфиденциальные данные в файловой системе взломанного устройства, перейдя в следующую папку:

$ cd data/Library/Keyboard/en-dynamic.lm/

Используя эти знания, вы легко решите учебные задачи Keystroke Logging (Регистрация нажатия клавиш) и Cut-and-Paste (Вырезать и вставить) категории Side Channel Data Leaks.

Приложение Huawei HiLink для iOS содержало уязвимость этого типа, связанную с утечкой информации (https://www.cvedetails.com/cve/ CVE-2017-2730/). Приложение работает со многими продуктами Hua- wei,такими как Huawei Mobile WiFi (серия E5), маршрутизаторы Hua- wei, Honor Cube и домашние шлюзы Huawei. Уязвимость позволяла злоумышленникам собирать пользовательскую информацию о моде- ли iPhone и версии прошивки и потенциально отслеживать уязвимые устройства.

Атаки путем инъекции

Хотя XSS-инъекция–очень распространенная уязвимость в веб-при- ложениях, ее трудно найти в мобильных приложениях. Но вы можете наблюдать ее в тех случаях, когда приложение использует WebView для представления ненадежного содержания. Можно протестиро- вать такой случай в учебной задаче Cross Site Scripting (межсайтовый скриптинг) категории Injection Flaws (Уязвимости путем инъекции), вставив простую полезную нагрузку JavaScript между тегами скрипта в поле ввода (рис. 14.10).

Злоумышленник, способный использовать уязвимость XSS в Web- View, может получить доступ к любой конфиденциальной информа- ции, отображаемой в данный момент, а также к файлам cookie стра- ницы аутентификации HTTP, если они используются. Он может даже подделать представленную веб-страницу, добавив настраиваемое фишинговое содержимое,такое как поддельные формы входа.Кроме

406  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

того,взависимостиотконфигурацииWebViewиподдержкиплатфор-

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

мы, злоумышленник может получить доступ к локальным файламdf,-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

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

Рис.14.10.XSS-атака

в исследуемом приложении

Возможно выполнить атаку с использованием SQL-инъекции на мобильные приложения. Если приложение использует базу данных для регистрации статистики использования, атака, скорее всего, не сможет изменить поток приложения. Напротив, если приложение использует базу данных для аутентификации или ограниченного извлечения контента и присутствует уязвимость SQL-инъекции, мы могли бы обойти этот механизм безопасности­ . Если мы можем из- менить данные, чтобы вызвать сбой приложения, мы можем превра- тить SQL-инъекцию в атаку отказа в обслуживании.В учебной задаче SQL Injection (Внедрение SQL-кода в функционирующее приложение) категории Injection Flaws вы можете использовать вектор атаки SQLинъекции для извлечения неавторизованного контента с использо- ванием вредоносной полезной нагрузки SQL.

Обратите внимание, что, начиная с iOS 11, клавиатура iPhone со- держиттолько символ одинарной кавычки вместо символа апострофа ASCII. Это изменение может усложнить использование определенных уязвимостей SQL, которые часто требуют апострофа для создания оператора с корректным синтаксисом. Эту функцию по-прежнему можно отключить программно с помощью­ свойства smartQuotesType

(https://developer.apple.com/documentation/uikit/uitextinputtraits/2865931smartquotestype/).

Хранилище связки ключей

Многие приложения хранят секретную информацию с помощью­ API службы связки ключей (keychain service), зашифрованной базы дан- ных, предоставляемой платформой. В симуляторе iOS вы можете

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

 

 

 

 

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

 

 

извлечь эти секреты, открыв простую базу данных SQL. Возможно,

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

вам потребуется использовать команду vacuum для слияния данных

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

из механизма предварительного журналирования SQLite. Этот попу- лярный механизм разработан для обеспечения устойчивости систем с несколькими базами данных.

Если приложение установлено на физическом устройстве, вам сначала потребуется взломать устройство, а затем использовать сто- ронний инструмент для получения дампа записей связки ключей. Возможные инструменты включают в себя Keychain Dumper (https:// github.com/ptoomey3/Keychain-Dumper/), инструмент IDB (https://github. com/dmayer/idb) и Needle (https://github.com/FSecureLABS/needle/). В симу-

ляторе iOS вы также можете использовать анализатор связки ключей iGoat, включенный в приложение iGoat. Этот инструмент работает только с приложением iGoat.

Используя полученные записи, теперь вы можете решить задачу Keychain Usage (Применение связки ключей) категории Data Protec- tion (Rest) в функциональных возможностях приложения.Вы должны предварительно раскомментировать вызов функции [self storeCredentialsInKeychain] в файле iGoat/Keychain/KeychainExerciseView-

Controller.m, чтобы настроить приложение для использования API хранилища ключей.

Реверс-инжиниринг двоичного кода

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

Radare2 (https://rada.re/n/).

Перед исследованием мы должны «проредить» двоичный файл. Прореживание двоичного файла изолирует только исполняемый код конкретной архитектуры. Вы можете найти версии двоичного фай- ла iOS в формате MACH0 или FATMACH0, который включает испол- няемые файлы ARM6, ARM7 и ARM64. Нам нужно проанализировать только один из них – исполняемый файл ARM64, который легко из- влечь с помощью­ команды rabin2:

$ rabin2 -x iGoat

iGoat.fat/iGoat.arm_32.0 created (23729776) iGoat.fat/iGoat.arm_64.1 created (24685984)

Затем загрузите и выполните начальный анализ двоичного файла, используя команду r2:

$ r2 -A iGoat.fat/iGoat.arm_64.1

[x] Analyze all flags starting with sym. and entry0 (aa) [x] Analyze function calls (aac)

408  Глава 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

 

 

 

 

...

[0x1000ed2dc]> fs 6019 * classes

35 * functions

442 * imports

 

 

 

 

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

 

 

 

 

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

Используйте команду iI для получения информации о двоичном файле:

[0x1000ed2dc]> iI~crypto

crypto false [0x1000ed2dc]> iI~canary

canary true

Проверьте возвращенные флаги компиляции. Те, что мы видим здесь,указывают на то,что конкретный двоичный файл был скомпи- лирован с помощью­ Stack Smashing Protection ,но не был зашифро-

ван Apple Store .

Поскольку приложения для iOS обычно пишутся на Objective-C, Swift или C++, они хранят всю символьную информацию в двоичном файле; вы можете загрузить его с помощью­ скрипта ojbc.pl,включен- ного в пакет Radare2. Этот скрипт генерирует команды оболочки на основе этих символов и соответствующих адресов,которые вы може- те использовать для обновления базы данных Radare2:

$ objc.pl iGoat.fat/iGoat.arm_64.1

f objc.NSString_oa_encodedURLString = 0x1002ea934

Теперь,когдавсесуществующиеметаданныезагруженывбазудан- ных, мы можем искать определенные методы и использовать коман­ ду pdf для получения ассемблерного кода:

[0x003115c0]>

fs; f | grep Broken

 

0x1001ac700 0

objc.BrokenCryptographyExerciseViewController_getPathForFilename

0x1001ac808 1

method.BrokenCryptographyExerciseViewController.viewDidLoad

 

 

 

[0x003115c0]>

pdf @method.BrokenCryptographyExerciseViewController.viewDidLoad

| (fcn) sym.func.1001ac808 (aarch64) 568

| sym.func.1001ac808 (int32_t arg4, int32_t arg2, char *arg1);

| |||||||

;

var void *var_28h @ fp-0x28

| |||||||

;

var int32_t var_20h

@ fp-0x20

| |||||||

;

var int32_t var_18h

@ fp-0x18

 

 

 

 

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