10.03.2014

Безопасность IOS-приложений (часть 17) – анализ IOS-приложений по методу черного ящика при помощи Introspy

image

В этой статье мы рассмотрим анализ IOS-приложений (по методу черного ящика) при помощи Introspy.

Автор: Пратик Джианчандани (Prateek Gianchandani)

В этой статье мы рассмотрим анализ IOS-приложений (по методу черного ящика) при помощи Introspy. Утилита Introspy разработана компанией ISEC partners, а ее githup страница находится здесь. Introspy состоит из двух независимых модулей: трассировщика и анализатора, и, несомненно, является одним из наиболее мощных инструментов для анализа безопасности IOS-приложений.

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

Click to Enlarge
Click to Enlarge

Рисунок 1: Процедура загрузки и установки пакета трассировщика на устройство

После установки трассировщика перезагрузите устройства (или сделайте респринг). Теперь, зайдя в настройки приложений (Setting), вы увидите раздел с настройками для Introspy.

Рисунок 2: Настройка приложений

В разделе Introspy Apps вы можете выбрать приложения для анализа (я выбрал приложение Path).

Рисунок 3: Выбираем приложения для анализа в Introspy

Теперь зайдите в раздел Introspy settings и убедитесь в том, что все опции включены, в особенности опция Log to The Console, которая позволяет анализатору выводить всю найденную информацию о приложении в консоль устройства, и мы будем видеть эту информацию в режиме реального времени (то есть во время выполнения приложения).

Рисунок 4: Раздел с настройками Introspy

После того как вы выбрали приложение Path, убедитесь в том, что оно не запущено (в противном случае перезапустите его). Кроме того, необходимо подключить устройство к компьютеру, поскольку мы хотим видеть логи с устройства. Затем откройте Xcode на вашей машине (если у вас Mac), зайдите в раздел Window -> Organizer -> Devices и выберите устройство в меню слева и в выпадающем списке выберите Console. Теперь вы сможете видеть логи с устройства.

Click to Enlarge

Рисунок 5: Раздел с логами устройства

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

Click to Enlarge

Рисунок 6: Содержимое запроса к серверу

Помимо этого, мы видим, что приложение проверяет содержимое ключа userId в NSUserDefaults. Однако лучше было бы хранить эту информацию в keychain.

Рисунок 7: Считывание содержимого ключа userId из NSUserDefaults

Однако, возможно, самая интересная информация показана на рисунке ниже, где приложение считывает булево значение переменной HangTracerEnabled, обращаясь к NSUserDefaults. По-видимому, приложение проверяло, производится ли трассировка во время выполнения, и если это так, тогда приложение завершало бы свою работу. Хотя, кажется, проверка оказалась не столь эффективной, поскольку приложение не смогло обнаружить анализатор Introspy. Однако во время анализа приложения Path при помощи Snoop-it, приложение аварийно завершило свою работу. Следовательно, наши предположения подтвердились, и приложение проверяет присутствие в системе трассировщика. Мы рассмотрим эту концепцию в следующих статьях.

Рисунок 8: Проверка на предмет присутствия трассировщика в системе

Помимо отображения информации о приложении в режиме реального времени, Introspy также сохраняет эту информацию в базе данных sqlite на вашем устройстве. Вы можете загрузить этот файл на ваш компьютер, и Introspy сконвертирует его в удобочитаемый формат. Для того чтобы загрузить файл, в начале вам необходимо загрузить Introspy (со страницы на github). Затем зайдите в папку Analyzer и используйте команду, как показано на рисунке ниже. Вам нужно указать ip-адрес вашего устройства и директорию, куда будет сохранен отчет.

Рисунок 9: Подключение к устройству и выбор базы данных для анализа

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

Click to Enlarge

Рисунок 10: Обработка выбранного файла базы данных

На рисунке выше видно, что файл базы данных был загружен в текущую директорию и создана папка Path-Report (та, в которую сохраняется отчет). Внутри папки Path-Report находится файл report.html, представляющий собой отчет, созданный Introspy. Открыв этот файл, вы увидите полную информацию о приложении в удобочитаемом виде, включая перечень вызовов и передаваемые аргументы.

Click to Enlarge

Рисунок 11: Отчет с подробной информацией, собранной Introspy

В этом отчете также есть раздел Potential Findings, где в основном приведены потенциальные уязвимости (по версии Introspy). В данном случае мы видим некоторые проблемы, связанные с небезопасным хранением данных. Хотя эти находки необязательно являются уязвимостями, поскольку хранимые данные могут не представлять особой ценности.

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

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

Рисунок 13: Настройка вида отображаемой информации в отчете

К примеру, я сконфигурировал отчет так, чтобы отображались только методы, имеющие отношение к UserPreferences. Эта информация может быть очень полезной, поскольку позволяет найти важную информацию, которая может быть записана в NSUserDefaults. Используя эту информацию, я смог легко выяснить, что приложение Path сохраняло мой userId в NSUserDefaults и использовало userId во множестве других мест (на рисунке ниже это не показано). Подобную информацию следовало бы хранить в более безопасном месте (например, в keychain).

Рисунок 14: Отображение методов, имеющих отношение к UserPreferences

Мы также можем анализировать сохраненный файл базы данных напрямую из командной строки. На рисунке ниже показана справочная информация по использованию анализатора.

Click to Enlarge

Рисунок 15: Справочная информация об использовании Introspy

Проанализируем работу приложения через протокол http/https.

Click to Enlarge

Рисунок 16: Анализ работы приложения через протоколы http/https

Как видно из рисунка выше, анализатор вывел на экран перечень адресов, к которым приложение осуществляло доступ.

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

Заключение

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

Ссылки

или введите имя

CAPTCHA