18.06.2015

Безопасность IOS-приложений (часть 34) – Трассировка методов при помощи Logify

image

В предыдущих статьях мы рассматривали трассировку методов при помощи Snoop-it во время работы конкретного приложения, что очень помогает установить алгоритм работы программы. Те же самые действия можно выполнить при помощи скрипта Logify.pl, написанного на Perl.

Автор: Prateek Gianchandani

В предыдущих статьях мы рассматривали трассировку методов при помощи Snoop-it во время работы конкретного приложения, что очень помогает установить алгоритм работы программы. Те же самые действия можно выполнить при помощи скрипта Logify.pl, написанного на Perl. Скрипт идет в комплекте с Theos. На входе logify.pl принимает заголовочный файл и генерирует код хука, который затем добавляется в твик. Кроме того, можно указать только имя класса (тогда будут отслеживаться все методы этого класса). Как только твик установлен и на устройстве вызывается метод, упоминаемый в хуке, информация о методе и его аргументах тут же отображается в системном журнале (syslog).

Перед написанием твика нужно получить заголовочные файлы для конкретного приложения, что можно сделать при помощи утилиты class-dump-z с опцией –H. Затем копируем сгенерированные заголовки на компьютер.

Рисунок 1: Выгрузка заголовочных файлов

Теперь на основе сгенерированных файлов при помощи скрипта Logify.pl мы будем создавать твик. Подопытным приложение все также будет Damn Vulnerable iOS application. Выбираем классы, у которых мы хотим отслеживать вызов методов. В нашем случае это будут следующие классы: ClientSideInjectionVC, JailbreakDetectionVC и DamnVulnerableAppUtilities.

Рисунок 2: Добавление классов в твик

На данный момент файл Tweak.xm выглядит так:

Рисунок 3: Содержимое файла Tweak.xm

Далее создаем шаблон твика и меняем Tweak.xm на содержимое, показанное на рисунке выше. Не забудьте указать в секции Filter идентификатор бандла для DVIA, поскольку мы работаем только с одним приложением. Если вы до этого ни разу не писали твиков, рекомендую ознакомиться с предыдущей статьей.

Рисунок 4: Создание нового твика

Собираем пакет.

Рисунок 5: Процедура сборки твика

Устанавливаем пакет на устройство и делаем респринг.

Рисунок 6: Процедура установка пакета на устройстве

Проверяем, установился ли твик на устройстве. Смотрим содержимое папки /Library/MobileSubstrate/DynamicLibraries.

Рисунок 7: Файлы, относящиеся к установленному ранее твику

Запускаем приложение DVIA. Удостоверьтесь, что устройство подсоединено к компьютеру. Далее зайдите в Xcode -> Window -> Organizer -> Devices, выберите устройство и кликните на Console. Вы увидите, что подгрузился твик DVIAMethodTracer.

Рисунок 8: События, возникающие во время запуска приложения DVIA

Теперь, когда вы будете работать с приложением, будут вызываться методы классов, которые мы отслеживаем при помощи Logify. Лог, показанный на рисунке ниже, отображает вызываемые методы вместе со значениями аргументов.

Рисунок 9: Отображение вызовов методов

Logify – очень полезный скрипт, позволяющий выяснить алгоритм работы приложения через отслеживание вызываемых методов.