28.06.2015

Безопасность IOS-приложений (часть 35) – Аудит iOS-приложений при помощи iDB

image

В этой статье мы рассмотрим утилиту iDB, также очень полезную во время пентеста iOS-приложений.

Автор: Prateek Gianchandani

В этой статье мы рассмотрим утилиту iDB, также очень полезную во время пентеста iOS-приложений.

iDB – приложение с открытым исходным кодом, которое можно скачать со страницы на Github. После загрузки ознакомьтесь с инструкцией по установке утилиты. Инсталляция может занять некоторое время из-за того, что помимо iDB, возможно, вам потребуется установить дополнительные пакеты. Кроме того, обратите внимание, что для корректной работы iDB необходим Ruby версии 1.9 или 2.1. Команда rvm list выводит список всех установленных версий Ruby, после чего вы можете воспользоваться командой rvm use с указанием версии Ruby, которая будет использоваться в системе.

После установки iDB зайдите в корневую директорию и запустите приложение при помощи команды ruby gidb.rb.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat1.png

Рисунок 1: Выбор версии Ruby и запуск iDB

Если вы сделали все правильно, появится интерфейс iDB:

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat2.png

Рисунок 2: Интерфейс iDB

Перед началом использования iDB необходимо настроить соединение. Зайдите в Ruby -> Preferences.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat3.png

Рисунок 3: Команды для работы с Ruby

В настройках во вкладке Device Config выберите либо «SSH directly», либо «SSH over USB». При выборе второй опции будет использоваться usbmuxd (я предпочитаю второй вариант). Укажите имя пользователя, пароль и номер порта, на котором запущен SSH.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat4.png

Рисунок 4: Параметры соединения через SSH

Во вкладке Port Forwarding, если необходимо, можно указать параметры проброса портов. Как правило, проброс портов делается при помощи следующего синтаксиса remote:8080 -> localhost:8080, который довольно понятен. Мы не будем настраивать проброс портов, однако нужно установить параметр Port for Manual SSH. Этот порт будет использоваться в usbmuxd. Все соединения к порту 2222 на localhost’е будут перенаправляться на устройство на порт 22 через USB.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat5.png

Рисунок 5: Настройка портов

Теперь, подключившись через SSH к localhost’y на порт 2222, вы подсоединитесь к устройству.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat6.png

Рисунок 6: Подключение к устройству

Далее проверьте, подключено ли устройство через USB. Зайдите в раздел Devices и выберите опцию USB Device.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat7.png

Рисунок 7: Подключение к устройству

Одна из уникальных особенностей iDB в том, что помимо устройства вы также можете подключаться к iOS-симуляторам (я экспериментировал с подключением к эмуляторам, и все работало). Эта фишка особенно полезна для разработчиков, использующих Xcode, кто часто проводит аудит своих приложений. Рекомендую вам поэкспериментировать с эмуляторами.

Как только iDB подключится к устройству, будет проведен анализ на предмет того, какие необходимые приложения уже установлены, а какие нужно установить. В появившемся списке для установки утилиты кликните на кнопку Install. Для корректной работы iDB необходимо установить все утилиты из списка. Часто бывает так, что приложения уже установлено, но iDB не может его найти (iDB проверяет файлы по определенным директориям). Если iDB не может найти какое-то приложение, необходимо переустановить отсутствующую утилиту.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat8.png

Рисунок 8: Перечень утилит, необходимых для корректной работы iDB

После установки всех необходимых утилит, в левом верхнем углу кликните на кнопку Select App и выберите приложение для аудита. Я буду продолжать работу с Damn Vulnerable iOS application.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat9.png

Рисунок 9: Выбор приложения для аудита

Для запуска выбранного приложения кликните на Launch App.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat10.png

Рисунок 10: Краткая информация о выбранном приложении

Чтобы проанализировать бинарный файл, кликните на кнопку Analyze Binary. В отчете отображается информация о том, зашифровано ли приложение, доступен ли PIE (Position-independent-executable) и т. д. Поскольку я устанавливал приложение вручную на джейлбрейковом устройстве, само собой, шифрование отсутствует.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat11.png

Рисунок 11: Краткая информация о бинарном файле приложения

Теперь рассмотрим каждую функцию отдельно. Во вкладке Storage отображаются все файлы, в которые приложение DVIA записывает в данный момент или уже записало какую-либо информацию. Все файлы отображаются с уровнями защиты данных (data protection level). Если список пуст, кликните на Refresh.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat12.png

Рисунок 12: Перечень файлов, с которыми взаимодействует приложение

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

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat13.png

Рисунок 13: Перечень URL-схем, которые регистрирует приложение

Во вкладке Binary отображаются все разделяемые библиотеки, используемые приложением, во вкладке Weak Class Dump – информация о классах, во вкладке Strings – все строки из бинарного файла.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat14.png

Рисунок 14: Перечень всех строк, найденных в бинарном файле

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

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat15.png

Рисунок 15: Перечень всех файлов из песочницы

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat16.png

Рисунок 16: Содержимое одного из файлов

Во вкладке Tools отображаются закешированные скриншоты, сделанные в тот момент, когда приложение переходит в фоновый режим.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat17.png

Рисунок 17: Содержимое вкладки Tools

Здесь же можно установить сертификат Burp CA, который используется для анализа SSL-соединений на устройстве или в симуляторе. В случае с устройством, просто откроется url http://burp (но прежде необходимо настроить прокси на устройстве). Эта функция довольно полезна и экономит много времени. Кроме того, здесь же можно отредактировать файл hosts, если вдруг вы захотите перенаправить запросы с определенного IP-адреса или хоста в другое место.

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

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat18.png

Рисунок 18: Содержимое вкладки Log

Во вкладке Keychain выгружается вся информация, хранимая приложением в keychain, при помощи утилиты keychain dumper.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat19.png

Рисунок 19: Содержимое вкладки Keychain

Во вкладке Pasteboard отображается вся конфиденциальная информация из буфера pasteboard (если приложение использует этот буфер). На рисунке ниже видно, что iDB нашел строку secret123, хранящуюся в pasteboard.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/082514_2136_iOSApplicat20.png

Рисунок 20: Содержимое буфера pasteboard

Подводя итоги, следует сказать, что iDB – прекрасная утилита, которая сильно экономит время при пентесте iOS-приложений. Многие задачи выполняются в один клик. В iDB есть и другие функции, не упомянутые в этой статье. Например, интеграция с Cycript и Snoop-it, но эти фитчи пока находятся в стадии разработки. Рекомендую вам клонировать репозиторий и поэкспериментировать с iDB.