15.07.2015

Безопасность IOS-приложений (часть 37) – Настройка платформы для пентестов на базе iOS 8

image

В этой статье мы рассмотрим настройку платформы для пентестов на базе iOS 8 для комфортной работы со всеми необходимыми утилитами.

Автор: Prateek Gianchandani

В этой статье мы рассмотрим настройку платформы для пентестов на базе iOS 8 для комфортной работы со всеми необходимыми утилитами.

Джейлбрейк устройства

Если на вашем устройстве установлена iOS 8.1 (или более ранняя версия), для джейлбрейка подойдет утилита pangu. Весь процесс интуитивно понятен, и мы не будем вдаваться в детали. Более подробную информацию о джейлбрейке устройств на базе iOS 8 можно узнать в этой статье.

Примечание: при работе с Pangu у меня возникла ошибка, связанная с недостатком свободного места на устройстве (хотя, на самом деле, места было достаточно). Я решил проблему посредством переключения устройства в режим Airplane и выключением Wi-Fi на ноутбуке.

После успешного завершения джейлбрейка вы сможете установить OpenSSH при помощи Cydia и, таким образом, наладить взаимосвязь с устройством.

Местонахождение приложений

Одно из наиболее серьезных изменений в iOS 8 связано с файловой структурой. Пользовательские приложения больше не хранятся в папке /var/mobile/Applications. Теперь бандл приложения находится в директории /var/mobile/Containers/Bundle/Application (имя_приложения.app), а остальные файлы (документы, библиотеки и временные файлы) в папке /var/mobile/Containers/Data/Application. Имя папки (уникальный идентификатор) бандла и остальной информации также различается для одного и того же приложения. При исследовании приложения рекомендую заглядывать в обе директории.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat1.png

Рисунок 1: Содержимое папок с бандлами приложений

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat2.png

Рисунок 2: Содержимое папок с документами приложений (как видим, идентификаторы папок различаются)

Хотя, приложения, установленные по умолчанию, находятся в папке /Applications/ (например, приложение App store).

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat3.png

Рисунок 3: Содержимое папки /Applications/

Дешифровка приложений

Для дешифровки приложений нужно установить последнюю версию Clutch (на данный момент доступна версия Clutch 2.0 RC2). После загрузки запустите Clutch один раз, потом еще раз, после чего на экране появится перечень зашифрованных приложений.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat4.png

Рисунок 4: Перечень приложений для дешифровки

Далее запустите Clutch еще раз и в качестве параметра укажите приложение, которое нужно расшифровать.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat5.png

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat6.png

Рисунок 5: Дешифровка приложения Alpinist

Файловые менеджеры

Поскольку у приложений изменилось место хранения документов и библиотек, iExplorer отображает содержимое папки /var/mobile/Containers/Data/Application, но не «заглядывает» в папку, где находится бандл. То же самое относится к iFunbox, еще одному неплохому файловому менеджеру. Однако если вы проводите аудит приложения, рекомендуют также исследовать содержимое папки с бандлом.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat7.png

Рисунок 6: Перечень документов и библиотек приложения CNN

Cycript & class-dump-z

И Cycript и class-dump-z прекрасно работают в iOS 8. Только пользуйтесь последними версиями этих утилит (на момент написания статьи последняя версия cycript - 0.9.502).

Выгрузка keychain

Утилита Keychain dumper работает отлично и все также выгружает всю информацию из keychain.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/122314_1313_iOSApplicat8.png

Рисунок 7: Результат работы keychain_dumper

Swift

Swift – новый язык программирования для iOS и OS, который, согласно заявлениям Apple, вобрал все лучшее из языков C и Objective-C. Убраны все ограничения, связанные с совместимостью с языком C. В Swift’е унаследовались паттерны безопасного программирования и в то же время появились современные возможности, заметно облегчающие и делающие более гибким процесс разработки. Swift, перенявший лучшие техники из всеми любимых фреймворков Cocoa и Cocoa Touch, позволяет переосмыслить весь процесс разработки программного обеспечения. Рекомендую вам ознакомиться с возможностями этого языка. Один из лучших ресурсов для начала знакомства, помимо официальной документации, - блог Рэя Вандерлихта. Я лишь отмечу, что нужно потратить некоторое время прежде, чем идеология Swift уляжется в голове и станет одним из основных средств разработки. Мы рассмотрим Swift более подробно в одной из следующих статей.