В этой статье мы рассмотрим утилиту 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.
Рисунок 1: Выбор версии Ruby и запуск iDB
Если вы сделали все правильно, появится интерфейс iDB:
Рисунок 2: Интерфейс iDB
Перед началом использования iDB необходимо настроить соединение. Зайдите в Ruby -> Preferences.
Рисунок 3: Команды для работы с Ruby
В настройках во вкладке Device Config выберите либо «SSH directly», либо «SSH over USB». При выборе второй опции будет использоваться usbmuxd (я предпочитаю второй вариант). Укажите имя пользователя, пароль и номер порта, на котором запущен SSH.
Рисунок 4: Параметры соединения через SSH
Во вкладке Port Forwarding, если необходимо, можно указать параметры проброса портов. Как правило, проброс портов делается при помощи следующего синтаксиса remote:8080 -> localhost:8080, который довольно понятен. Мы не будем настраивать проброс портов, однако нужно установить параметр Port for Manual SSH. Этот порт будет использоваться в usbmuxd. Все соединения к порту 2222 на localhost’е будут перенаправляться на устройство на порт 22 через USB.
Рисунок 5: Настройка портов
Теперь, подключившись через SSH к localhost’y на порт 2222, вы подсоединитесь к устройству.
Рисунок 6: Подключение к устройству
Далее проверьте, подключено ли устройство через USB. Зайдите в раздел Devices и выберите опцию USB Device.
Рисунок 7: Подключение к устройству
Одна из уникальных особенностей iDB в том, что помимо устройства вы также можете подключаться к iOS-симуляторам (я экспериментировал с подключением к эмуляторам, и все работало). Эта фишка особенно полезна для разработчиков, использующих Xcode, кто часто проводит аудит своих приложений. Рекомендую вам поэкспериментировать с эмуляторами.
Как только iDB подключится к устройству, будет проведен анализ на предмет того, какие необходимые приложения уже установлены, а какие нужно установить. В появившемся списке для установки утилиты кликните на кнопку Install. Для корректной работы iDB необходимо установить все утилиты из списка. Часто бывает так, что приложения уже установлено, но iDB не может его найти (iDB проверяет файлы по определенным директориям). Если iDB не может найти какое-то приложение, необходимо переустановить отсутствующую утилиту.
Рисунок 8: Перечень утилит, необходимых для корректной работы iDB
После установки всех необходимых утилит, в левом верхнем углу кликните на кнопку Select App и выберите приложение для аудита. Я буду продолжать работу с Damn Vulnerable iOS application.
Рисунок 9: Выбор приложения для аудита
Для запуска выбранного приложения кликните на Launch App.
Рисунок 10: Краткая информация о выбранном приложении
Чтобы проанализировать бинарный файл, кликните на кнопку Analyze Binary. В отчете отображается информация о том, зашифровано ли приложение, доступен ли PIE (Position-independent-executable) и т. д. Поскольку я устанавливал приложение вручную на джейлбрейковом устройстве, само собой, шифрование отсутствует.
Рисунок 11: Краткая информация о бинарном файле приложения
Теперь рассмотрим каждую функцию отдельно. Во вкладке Storage отображаются все файлы, в которые приложение DVIA записывает в данный момент или уже записало какую-либо информацию. Все файлы отображаются с уровнями защиты данных (data protection level). Если список пуст, кликните на Refresh.
Рисунок 12: Перечень файлов, с которыми взаимодействует приложение
Во вкладке URL Handlers отображаются все URL-схемы, регистрируемые приложением. Можно ввести URL, начинающийся с какой-либо из схем, и посмотреть, как отреагирует приложение.
Рисунок 13: Перечень URL-схем, которые регистрирует приложение
Во вкладке Binary отображаются все разделяемые библиотеки, используемые приложением, во вкладке Weak Class Dump – информация о классах, во вкладке Strings – все строки из бинарного файла.
Рисунок 14: Перечень всех строк, найденных в бинарном файле
Во вкладке Filesystem отображаются все файлы (вместе с правами доступа), находящиеся в песочнице. Чтобы посмотреть содержимое, дважды кликните на нужный файл.
Рисунок 15: Перечень всех файлов из песочницы
Рисунок 16: Содержимое одного из файлов
Во вкладке Tools отображаются закешированные скриншоты, сделанные в тот момент, когда приложение переходит в фоновый режим.
Рисунок 17: Содержимое вкладки Tools
Здесь же можно установить сертификат Burp CA, который используется для анализа SSL-соединений на устройстве или в симуляторе. В случае с устройством, просто откроется url http://burp (но прежде необходимо настроить прокси на устройстве). Эта функция довольно полезна и экономит много времени. Кроме того, здесь же можно отредактировать файл hosts, если вдруг вы захотите перенаправить запросы с определенного IP-адреса или хоста в другое место.
Во вкладке Log отображаются логи устройства, которые можно использовать, если приложение выводит в консоль важную информацию.
Рисунок 18: Содержимое вкладки Log
Во вкладке Keychain выгружается вся информация, хранимая приложением в keychain, при помощи утилиты keychain dumper.
Рисунок 19: Содержимое вкладки Keychain
Во вкладке Pasteboard отображается вся конфиденциальная информация из буфера pasteboard (если приложение использует этот буфер). На рисунке ниже видно, что iDB нашел строку secret123, хранящуюся в pasteboard.
Рисунок 20: Содержимое буфера pasteboard
Подводя итоги, следует сказать, что iDB – прекрасная утилита, которая сильно экономит время при пентесте iOS-приложений. Многие задачи выполняются в один клик. В iDB есть и другие функции, не упомянутые в этой статье. Например, интеграция с Cycript и Snoop-it, но эти фитчи пока находятся в стадии разработки. Рекомендую вам клонировать репозиторий и поэкспериментировать с iDB.