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

 

 

нения фиксированных криптографических операций; доверенную

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

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

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

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

Некоторые поставщики устройств используют измененные реа- лизации этих технологий. Например, последние устройства Apple используют Secure Enclave, отдельный аппаратный компонент, спо- собный размещать код и данные и выполнять операции аутентифи- кации.ВпоследнихустройствахGoogleиспользуетсяаппаратныйчип с защитой от несанкционированного доступа Titan M с аналогичны- ми возможностями. Основные наборы микросхем на базе ARM под- держивают надежную среду выполнения под названием TrustZone, а базовые чипсеты Intel поддерживают функцию под названием SGX. Эти изолированные аппаратные компоненты реализуют ключевые функции хранилища платформ. Но разработчики должны использо- вать правильные вызовы API для безопасного использования надеж- ных хранилищ ключей.

Проверенная и безопасная загрузка

Обе платформы используют программные компоненты, которые проверяются на этапе загрузки при запуске операционной системы. Безопасная загрузка проверяет загрузчик устройства и программное обеспечение определенных изолированных аппаратных реализаций, инициируя аппаратную «основудоверия» (Root of Trust).На платфор- мах на базе Android за проверку компонентов программного обеспе- ченияотвечаетмеханизмпровереннойзагрузкиAndroidVerifiedBoot, а на платформах на базе iOS за это отвечает механизм SecureRom.

Анализ приложений iOS

В этом разделе мы исследуем мобильное приложение с открытым ис- ходным кодом для iOS: проект OWASP iGoat (https://github.com/OWASP/ igoat/). Проект iGoat не является приложением специально для ин- тернета вещей, но содержит идентичную бизнес-логику и использует функции, аналогичные функциям многих приложений для устройств интернета вещей. Мы сосредоточимся только на обнаружении уязви- мостей,которыемогутсуществоватьвприложенияхинтернетавещей.

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

392  Глава 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.4.Категории в мобильном приложении iGoat

Подготовка среды тестирования

Для тестирования iGoat вам понадобится настольный или портатив- ный компьютер Apple, который вы будете использовать для настрой-

киимитатораiOSвсредеXcodeIDE(интегрированнаясредаразработ-

ки).ВыможетеустановитьXcodeнаmacOSтолькочерезMacAppStore. Вамтакже следуетустановить инструменты командной строки Xcode, используя команду xcode-select:

$ xcode-select –install

Теперь создайте свой первый симулятор,используя команду xcrun, которая позволяет запускать инструменты разработки Xcode:

$ xcrun simctl create simulator com.apple.CoreSimulator.SimDeviceType.iPhone-X com.apple.CoreSimulator.SimRuntime.iOS-12-2

Первый параметр, названный simctl, позволяет вам взаимодей- ствовать с симуляторами iOS. Параметр create создает новый симу- лятор с именем следующего параметра. Последние два параметра определяюттип устройства,которым в нашем случае является iPhone X, и среду выполнения iOS, которой является iOS 12.2. Вы можете установитьдругие среды выполнения iOS,открыв Xcode,щелкнув па-

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

 

 

 

 

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

 

 

раметр Preferences (Настройки), а затем выбрав один из доступных

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

имитаторов iOS на вкладке Components (Компоненты) (рис. 14.5).

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Рис.14.5.Установка среды выполнения iOS

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

$ xcrun simctl boot <simulator identifier>

$ /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/

Contents/MacOS/Simulator -CurrentDeviceUDID booted

Используйте команду git, чтобы загрузить исходный код из ре- позитория, перейдите в папку приложения iGoat и скомпилируйте приложение для моделируемого устройства с помощью­ команды xcodebuild. Затем установите сгенерированный двоичный файл в за- груженный симулятор:

$ git clone https://github.com/OWASP/igoat $ cd igoat/IGoat

$ xcodebuild -project iGoat.xcodeproj -scheme iGoat -destination "id=<simulator identifier>"

$ xcrun simctl install booted ~/Library/Developer/Xcode/DerivedData/ iGoat-<application identifier>/Build/Products/Debug-iphonesimulator/iGoat.app

Вы можете найти идентификатор приложения, проверив послед- ние строки команды xcodebuild или перейдя в папку ~/Library/Devel- oper/Xcode/DerivedData/.

Извлечение и повторная подписьIPA

Если у вас уже есть устройство iOS, которое вы хотите использовать для тестирования установленного приложения, придется извлечь приложение другим способом. Все приложения iOS распространя- ются в виде архивного файла, который называется пакетом iOS App Store Package (IPA). Более ранние версии iTunes (до 12.7.x) позволя-

ли пользователям извлекать IPA приложений, приобретенных через App Store.Крометого,в предыдущих версиях iOS,до 8.3,вы могли из-

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

 

 

влечь IPA из локальной файловой системы с помощью­

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программно-

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

го обеспечения, например iFunBox или инструмента iMazing. Но этоdf-x chan

.c

 

 

 

.

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

неофициальные методы,и они могут не поддерживаться новейшими платформами iOS.

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

$ cd /var/containers/Bundle/Application/

Если вы установили приложение через App Store, основной дво- ичный файл будет зашифрован. Чтобы расшифровать IPA из памя- ти устройства, используйте общедоступный инструмент, например

Clutch (http://github.com/KJCracks/Clutch/):

$ clutch -d <bundle identifier>

У вас также может быть IPA, не подписанный для вашего устрой- ства, потому что поставщик программного обеспечения предоставил вамегоилипотомучтовыизвлеклиэтотIPAоднимизранееупомяну- тых способов. В этом случае самый простой способ установить его на тестовое устройство–это повторно подписать его,используя личную учетную запись разработчика Apple с помощью­ такого инструмента,

как Cydia Impactor ( http://www.cydiaimpactor.com/) или node-applesign (https://github.com/nowsecure/node-applesign/).Этотметодявляетсяобыч-

нымдляустановкиприложений,такихкакunc0ver,припомощикото- рых выполняют джейлбрейк устройства.

Статический анализ

Первый наш шаг – изучение созданного архивного файла IPA. Этот пакет представляет собой ZIP-файл, поэтому начните с его распаков- ки, воспользовавшись следующей командой:

$ unzip iGoat.ipa

-- Payload/

---- iGoat.app/

1Джейлбрейк (jailbrake, «побег из тюрьмы») – процедура получения прав суперпользователя программного обеспечения на iOS без официально- го разрешения Apple. Предоставляет полный доступ к файловой системе устройства и ряд других возможностей, недоступных обычному пользова-

телю.– Прим.ред.

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

 

 

 

 

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

 

 

 

 

------- Info.plist

------- iGoat

------- ...

 

 

 

 

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

 

 

 

 

Наиболее важными файлами в распакованной папке являются ин-

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

Откройте файл списка свойств. Чаще всего здесь удается найти за- регистрированные URL-схемы (рис. 14.6).

Рис.14.6.Зарегистрированная URL-схема в файле списка свойств

URL-cхема в основном позволяет пользователю открывать интер- фейс определенного приложения из других приложений. Злоумыш- ленники могут попытаться использовать их, заставив устройство выполнять нежелательные действия в уязвимом приложении при загрузке этого интерфейса. Нам придется протестировать схемы URL-адресов для этой уязвимости позже на этапе динамического анализа.

Проверка файлов списка свойств на предметконфиденциальных данных

Давайтепосмотримнаостальныефайлыспискасвойств(файлысрас- ширением.plist),которые хранятупорядоченные объекты и часто со- держат пользовательские настройки или другие конфиденциальные данные. Например, в приложении iGoat файл Credentials.plist содер- жит конфиденциальные данные, относящиеся к элементу управле- ния аутентификацией. Вы можете прочитать этот файл с помощью­ инструмента Plutil, который преобразует файл .plist в формат XML:

$ plutil -convert xml1 -o - Credentials.plist

<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <string>Secret@123</string> <string>admin</string>

</plist>

Можете использовать найденные учетные данные для выполнения задания Plist Storage в категории Data Protection (Rest) демонстраци-

онного приложения.

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

 

 

Проверка защиты памяти в исполняемом двоичном файле

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Теперь проверим исполняемый двоичный файл и посмотрим, реали-

 

 

 

 

 

 

 

зована ли в нем необходимая защита памяти при компиляции. Для этого запустите инструмент отображения объектного файла (Otool), который является частью пакета инструментов разработчика Xcode CLI:

$ otool -l iGoat | grep -A 4 LC_ENCRYPTION_INFO cmd LC_ENCRYPTION_INFO

cmdsize 20 cryptoff 16384 cryptsize 3194880

cryptid 0

$ otool -hv iGoat

magic

cputype cpusubtype

caps

filetype ncmds sizeofcmds

flags

MH_MAGIC

ARM

V7

0x00

EXECUTE 35

4048

NOUNDEFS

DYLDLINK TWOLEVEL

WEAK_DEFINES BINDS_TO_WEAK PIE

 

 

 

 

 

 

 

 

 

Сначала проверяем, был ли зашифрован двоичный файл в App Store,исследуя cryptid .Если этот флаг установлен в 1,то двоичный файл зашифрован и вам следуетпопытаться расшифроватьего из па- мяти устройства с использованием подхода,описанного выше,в раз- деле «Извлечение и повторная подпись IPA». Мы также проверяем,

включена ли рандомизация разметки адресного пространства,прове-

ряя наличие флага PIE в заголовкедвоичного файла.Рандомизация разметки адресного пространства – это метод, который случайным образом упорядочивает позиции адресного пространства памяти процессадля предотвращения эксплуатации уязвимостей,связанных с повреждением памяти.

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

$ otool -I -v iGoat | grep stack

0x002b75c8 478 ___stack_chk_fail 0x00314030 479 ___stack_chk_guard 0x00314bf4 478 ___stack_chk_fail

Флаг __stack_chk_guard указывает, что защита от нарушения стека включена. Наконец, посмотрите, использует ли приложение автоматический подсчет ссылок (ARC) – метод, заменяющий тради- ционное управление памятью, – проверяя _objc_autorelease, _objc_ storeStrong и _objc_retain:

$ otool -I -v iGoat | grep _objc_autorelease

0x002b7f18 715 _objc_autorelease\

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