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

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

ARC устраняет уязвимости, связанные с утечкой памяти, кото-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

рые возникают, когда разработчики не могут освободить ненужные

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

выделенные блоки, что может привести к нехватке памяти. Метод автоматически подсчитывает ссылки на выделенные блоки памяти и помечает блоки, на которые нет ссылок, как подлежащие освобож­ дению.

Автоматизация статического анализа

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

Например,выможетеиспользоватьстатическийанализатор,такой как llvm clang,для аудита исходного кода приложения во время ком- пиляции. Этот анализатор обнаруживает множество групп ошибок, включая логические оплошности (например, разыменование пустых указателей, возврат адреса в стековую память или использование неопределенных результатов бизнес-логики операции); недостатки управления памятью (такие как утечка объектов и выделенной памя- ти и переполнение распределения); уязвимости ПЗУ (например, не- используемые назначения и начальные значения ПЗУ); и недостатки использования API, возникающие из-за неправильного использова- ния имеющихся фреймворков. В настоящее время он интегрирован

вXcode, и вы можете использовать его, добавив параметр анализа

вкоманду сборки:

$ xcodebuild analyze -project iGoat.xcodeproj -scheme iGoat -destination "name=iPhone X"

Выявленные анализатором ошибки появятся в журнале сборки. Существует множество других инструментов для автоматического сканирования двоичного файла приложения, в частности Mobile Se- curityFramework(MobSF)(https://github.com/MobSF/Mobile-Security-Frame- work-MobSF/).

Динамический анализ

В этом разделе мы запустим приложение на смоделированном устройстве iOS, протестируем функциональность устройства, отпра- вив данные, введенные пользователем, и изучим поведение при- ложения в экосистеме устройства. Самый простой подход к этой задаче – «вручную» изучить, как приложение влияет на основные компоненты устройства, такие как файловая система и связка клю- чей. Этот динамический анализ может выявить проблемы с небезо- пасным хранилищем данных и неправильным использованием API платформы.

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

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

t

 

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

 

NOW!

r

 

 

 

 

 

 

BUY

 

 

Изучение файловой структуры iOS и ее баз данных

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Давайте перейдем к папке приложения на моделируемом устройстве,

 

 

 

 

 

 

 

чтобыизучитьфайловуюструктуру,которуюиспользуютприложения iOS. На платформах iOS приложения могут взаимодействовать толь- ко с каталогами внутри­ каталога «песочницы» приложения. Каталог «песочницы» содержит контейнер Bundle,который защищен от запи- си и содержит фактический исполняемый файл,и контейнер данных, содержащий ряд подкаталогов (например, Documents (Документы), Library (Библиотека), SystemData (Системные данные) и tmp (Времен- ные файлы)), которые приложение использует для сортировки своих данных.

Для доступа к файловой системе смоделированного устройства, служащей корневым каталогом для следующих разделов главы, вве- дите следующую команду:

$ cd ~/Library/Developer/CoreSimulator/Devices/<simulator identifier>/

Затем перейдите в папку Documents, которая изначально будет пустой. Чтобы найти идентификатор приложения, вы можете найти приложение iGoat с помощью­ команды find:

$ find . -name *iGoat*

./data/Containers/Data/Application/<application id>/Library/Preferences/com. swaroop.iGoat.plist

$ cd data/Containers/Data/Application/<application id>/Documents

Первоначально пустая папка будет заполнена файлами, которые динамически создаются различными функциями приложения. На- пример, перейдя к категории Data Protection (Rest) (Защита данных (Прочее)) в функциях приложения, выбрав задачу Core Data Storage (Основное хранилище данных) и нажав кнопку Start (Пуск), вы сге- нерируете ряд файлов с префиксом CoreData. Задача требует, чтобы вы проверили эти файлы и восстановили пару сохраненных учетных данных.

Также можно отслеживать динамически созданные файлы с по­ мощью приложения fswatch, установив его при помощи любого из имеющихся у вас менеджеров пакетов сторонних производителей в macOS, например Homebrew (https://brew.sh/) или MacPorts (https:// www.macports.org/).

$ brew install fswatch $ fswatch -r ./

/Users/<имя пользователя>/Library/Developer/CoreSimulator/Devices/<идентификатор симулятора>/data/

Containers/Data/Application/<id приложения> /Documents/CoreData.sqlite

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

 

 

 

 

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

 

 

Выполните установку, указав двоичный файл brew диспетчера па-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

w Click

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

кетов Homebrew, за которым следует параметр установки и имя за-

.

.c

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

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

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

папки и целевую папку, которая в нашем случае является текущим

 

 

 

 

 

 

 

 

 

 

каталогом.Вывод будетсодержатьполный путьклюбому созданному

 

 

 

 

 

 

 

 

 

 

файлу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мы уже упоминали, как проверять содержимое файлов .plist, поэ-

 

 

 

 

 

 

 

 

 

 

томутеперьсосредоточимсянаэтихфайлахCoreData.Помимодругих

 

 

 

 

 

 

 

 

 

 

задач, платформа CoreData абстрагирует процесс сопоставления объ-

 

 

 

 

 

 

 

 

 

 

ектов с хранилищем, позволяя разработчикам легко сохранять дан-

 

 

 

 

 

 

 

 

 

 

ные в файловой системе устройства в формате базы данных sqlite без

 

 

 

 

 

 

 

 

 

 

необходимости управлять базой данных напрямую. Используя кли-

 

 

 

 

 

 

 

 

 

 

ент sqlite3, вы можете загрузить базу данных, просмотреть таблицы

 

 

 

 

 

 

 

 

 

 

базы данных и прочитать содержимое таблицы ZUSER, которая со-

 

 

 

 

 

 

 

 

 

 

держит конфиденциальную информацию,такую как учетные данные

 

 

 

 

 

 

 

 

 

 

пользователя:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ sqlite3 CoreData.sqlite

 

 

 

 

 

 

 

 

 

 

 

 

 

sqlite> .tables

 

 

 

 

 

 

 

 

 

 

 

 

 

ZTEST

ZUSER

Z_METADATA

Z_MODELCACHE Z_PRIMARYKEY

 

 

 

 

 

 

 

 

 

 

 

sqlite> select * from ZUSER ; 1|2|1|john@test.com|coredbpassword

Вы можете использовать идентифицированные учетные данные позже для аутентификации в форме входа в систему Core Data Stor- age. Как только вы это сделаете, вы должны получить сообщение об успешном выполнении, указывающее на завершение задачи.

Аналогичная уязвимость существовала в приложении SIMATIC WinCC OA Operator для платформы iOS, которая позволяла пользо- вателям легко управлять оборудованием Siemens SIMATIC WinCC OA (например, объектами водоснабжения и электростанциями) с по­ мощью мобильного устройства. Злоумышленники, имеющие физи- ческий доступ к мобильному устройству, могли читать незашифро- ванные данные из каталога приложения (https://www.cvedetails.com/cve/

CVE-2018-4847/).

Запуск отладчика

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

Найдите идентификатор процесса и подключите отладчик, напри- мер gdb или lldb. Мы будем использовать lldb из командной строки. Это отладчик по умолчанию в Xcode, и вы можете использовать его

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для отладки программ на языках C, Objective-C и C ++. Введитеwсле­

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

дующие символы, чтобы найти идентификатор процесса и подклюd-f-x chan

.c

 

 

 

.

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

e

 

чить отладчик lldb.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ ps -A | grep iGoat.app

 

 

 

 

 

 

 

 

 

 

 

59843 ??

0:03.25 /..../iGoat.app/iGoat

 

 

 

 

 

 

 

 

 

 

 

$ lldb

 

 

 

 

 

 

 

 

 

 

 

 

(lldb) process attach --pid 59843

Executable module set to "/Users/.../iGoat.app/iGoat". Architecture set to: x86_64h-apple-ios-.

(lldb) process continue

Process 59843 resuming

Когда вы подключаете отладчик, процесс приостанавливается, поэтому вам придется продолжить выполнение с помощью­ коман- ды process continue. Следите за выходными данными, чтобы найти интересные функции,выполняющие операции,связанные с безопас­ ностью. Например, следующая функция вычисляет пароль, который можно использовать для аутентификации в учебной задаче Private Photo Storage (Хранилище личных фото) категории Runtime Analysis (Анализ во время выполнения):

- (NSString *)thePw

{

char xored[] = {0x5e, 0x42, 0x56, 0x5a, 0x46, 0x53, 0x44, 0x59, 0x54, 0x55};

char key[] = "1234567890"; char pw[20] = {0};

for (int i = 0; i < sizeof(xored); i++) { pw[i] = xored[i] ^ key[i%sizeof(key)];

}

return [NSString stringWithUTF8String:pw];

}

Чтобы понять, что делает функция, проверьте исходный код при- ложения iGoat, который вы скачали ранее с помощью­ команды git. Точнее, посмотрите на функцию thePw класса iGoat/Personal Photo Storage/PersonalPhotoStorageVC.m.

Теперь можно намеренно прервать выполнение программы на этой функции, используя точку останова для чтения вычисленного пароля из памяти приложения.Чтобы установитьточку останова,ис- пользуйте команду b, за которой следует имя функции:

(lldb) b thePw

Breakpoint 1: where = iGoat`-[PersonalPhotoStorageVC thePw] + 39 at PersonalPhotoStorageVC.m:60:10, address = 0x0000000109a791cs7 (lldb)

Process 59843 stopped

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

 

 

 

 

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

 

 

 

 

*thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1

...

59 - (NSString *)thePw{

-> 60 char xored[] = {0x5e, 0x42, 0x56, 0x5a, 0x46, 0x53, 0x44, 0x59, 0x54, 0x55};

61char key[] = "1234567890";

62char pw[20] = {0};

 

 

 

 

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

 

 

 

 

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

Теперь перейдите к следующим шагам выполнения приложения с помощью­ команды step. Продолжайте делать это, пока не дойдете до конца функции, где будет расшифрован секретный пароль:

(lldb) step

frame #0: 0x0000000109a7926e iGoat`-[PersonalPhotoStorageVC thePw] (self=0x00007fe4fb432710, _cmd="thePw") at PersonalPhotoStorageVC.m:68:12

65pw[i] = xored[i] ^ key[i%sizeof(key)];

66}

-> 68 return [NSString stringWithUTF8String:pw]; 69 }

71@e

(lldb) print pw

(char [20]) $0 = "opensesame"

Используя команду print ,вы можете получитьрасшифрованный пароль . Подробнее об отладчике lldb рассказано в книге Дэвида Тиля «Защита приложений iOS» (David Thiel. iOS Application Security, https://nostarch.com/iossecurity/).

Чтение сохраненных файлов cookie

Еще одно не столь очевидное место, где мобильные приложения обычно хранят конфиденциальную информацию,– это папка cookie-­ файлов в файловой системе, которая содержит файлы cookie HTTP, предназначенные для запоминания информации о пользователях сайтов. Приложения IoT переходят на веб-сайты и отображают их вWebView,чтобыпредставитьвеб-контентконечнымпользователям. (Обсуждение WebView выходит за рамки данной главы,но вы можете прочитатьонемнастраницахразработчиковiOSиAndroid.Мытакже будем использовать WebView в атаке на беговую дорожку в главе 15.) Но многие из этих сайтовтребуют аутентификации пользователя для представления персонализированного контента, и, как следствие, они используют файлы cookie для отслеживания сеансов HTTP актив- ных пользователей.Мы можем искатьв этих файлах cookie сеансы ау- тентифицированных пользователей, и в случае успеха выдавать себя за пользователя на соответствующих веб-сайтах и получать персона- лизированный контент.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Платформа iOS хранит файлы cookie в двоичном формате часто

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

втечениедлительного времени.Мы можем использоватьинструментdf-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

BinaryCookieReader (https://github.com/as0ler/BinaryCookieReader/), чтобы расшифровать их и представить в удобочитаемой форме. Чтобы за- пустить инструмент, перейдите в папку Cookies, а затем запустите скрипт Python для чтения двоичных cookie-файлов:

$ cd data/Containers/Data/Application/<id приложения>/Library/Cookies/

$ python BinaryCookieReader/BinaryCookieReader.py com.swaroop.iGoat.binarycookies

...

Cookie : sessionKey=dfr3kjsdf5jkjk420544kjkll; domain=www.github.com; path=/OWASP/iGoat; expires=Tue, 09 May 2051;

BinaryCookieReader возвращает файлы cookie, содержащие клю- чи сеанса для веб-сайта . Вы можете использовать эти данные для аутентификации в учебной задаче Cookie Storage (Хранение файлов cookie) в категории Data Protection (Rest).

Также можно найти конфиденциальные данные в HTTP-кешах, которые веб-сайты используют для повышения производительно- сти за счет повторного использования ранее извлеченных ресурсов. Приложение хранит эти ресурсы в своей папке /Library/Caches/ в базе данныхSQLiteподназваниемCache.db.Например,выможетерешить учебную задачу Webkit Cache категории Data Protection (Rest), извле-

кая кешированные данные из этого файла. Загрузите базу данных, а затем получите содержимое таблицы cfurl_cache_receiver_data, которая содержит кешированные HTTP-ответы:

$ cd data/Containers/Data/Application/<id приложения>/Library/Caches/com. swaroop.iGoat/

$ sqlite3 Cache.db

sqlite> select * from cfurl_cache_receiver_data;

1|0|<table border='1'><tr><td>key</td><td>66435@J0hn</td></tr></table>

Похожая уязвимость затрагивает популярное приложение Hickory Smart для iOS версии 01.01.07 и более ранних, управляющее умны- ми замками. В базе данных приложения была обнаружена инфор- мация, позволяющая злоумышленникам в удаленном режиме от-

крывать двери и проникать в дома (https://cve.mitre.org/cgi-bin/cvename. cgi?name=CVE-2019-5633/).

Проверка журналов приложений и принуждение устройства к отправке сообщений

Продолжая нашу оценку, мы можем проверить журналы приложений для выявления утечек отладочной информации, которая может при- годиться нам,чтобы сделать вывод о бизнес-логике приложения.Мо- жете получить журналы через интерфейс приложения Console, кото- рый предустановлен в macOS (рис. 14.7).

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

 

 

 

 

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

 

 

 

 

Рис.14.7.Раскрытый пароль шифрования в журналах устройства iOS

 

 

 

 

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

 

 

 

 

Также их можно получить с помощью­ инструмента Xcrun:

$ `xcrun simctl spawn booted log stream > sim.log&`; open sim.log;

Журналы устройства содержат ключ шифрования, который мож- но использовать для аутентификации в учебной задаче Random Key Generation (Создание рандомного ключа) категории Key Management (Управление ключами). Похоже, хотя приложение правильно сгене- рировало ключ шифрования для целей аутентификации, этот ключ случайно оказался в журнале; в итоге злоумышленник с физическим доступом к компьютеру и подключенным к нему целевым устрой- ством может получить искомый ключ.

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

Рис.14.8.Раскрытые параметры схемы URL в журналах устройства iOS

Проверим это поведение,используя команду xcrun,чтобы открыть URL-адрес с аналогичной структурой в браузере симулятора:

$ xcrun simctl openurl booted "iGoat://?contactNumber=+1000000&message=hacked"

Чтобы воспользоваться этой уязвимостью, мы могли бы создать поддельную HTML-страницу, которая загружала URL-адрес, когда браузер отображает включенные HTML-элементы, а затем застав- ляла жертву отправлять несколько незапрашиваемых сообщений этого типа. Вы можете использовать следующий HTML-код для про- ведения этой атаки, когда пользователь нажимает на ссылку. Эта атака позволит вам успешно передать вызов схемы URL в функциях приложения:

<html>

<a href="iGoat://?contactNumber=+1000000&message=hacked"/> нажмите сюда</a>

</html>

На рис. 14.9 показано, что нам удалось отправить текстовое сооб- щение с телефона пользователя.

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

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.14.9.Злоупотребление открытой схемой URL-адресов для принуждения жертвы к отправке SMS-сообщений

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

Снимки состояния приложений

Еще один распространенный способ утечки данных в приложениях iOS – это снимки экрана приложений. Когда пользователь нажимает кнопку Домой,iOS по умолчаниюделаетснимок состояния приложе- нияисохраняетеговфайловойсистемеввидеоткрытоготекста.Этот снимок экрана содержитконфиденциальныеданные–в зависимости от того, что просматривал пользователь. Вы можете воспроизвести этууязвимостьвучебнойзадачеBackgrounding(Фон)вкатегорииSide Channel Data Leaks (Утечки данных через побочный канал).

Используя следующие команды, перейдите к папке приложения Snapshots (Снимки), где вы можете найти сохраненные снапшоты:

$ cd data/Containers/Data/Application/<id приложения>/Library/Caches/Snapshots/com.swaroop.iGoat/ $ open E6787662-8F9B-4257-A724-5BD79207E4F2\@3x.ktx

Тестирование утечек данных из компоновочного буфера и прогнозирующего текстового движка

Помимо прочего, приложения для iOS часто страдают от утечки дан- ныхизкомпоновочногобуфераипрогнозирующеготекстовогодвиж-

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