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

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

. В этой статье мы рассмотрим, как можно использовать iNalyzer для выполнения динамического анализа IOS-приложений.

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

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

В предыдущей статье мы сгенерировали html файлы при помощи Doxygen, а затем открывали их для просмотра информации о классах и другой информации о приложении. Для динамического анализа мы будем использовать Firefox, поскольку разработчик рекомендовал мне использовать именно этот браузер, так как в других могут возникать ошибки. Хотя, кажется, все работает неплохо и в Crome.

Для запуска интерпретатора, позволяющего выполнять динамический анализ, откройте файл index.html, сгенерированный Doxygen, для приложения, которое вы хотите проанализировать, а затем дважды нажмите на кнопку на клавиатуре с левой стрелкой.

Рисунок 1: Консоль, появляющаяся после двойного нажатия на кнопку с левой стрелкой

После двойного нажатия на кнопку с левой стрелкой вы увидите консоль, которая появилась в верхней части экрана (см. рисунок выше), где вы можете вводить команды. Для начала необходимо сообщить iNalyzer ip-адрес вашего устройства (ip-адрес моего устройства 10.0.1.23). После ввода ip-адреса в командной строке нажимаем Enter.

Рисунок 2: Установка ip-адреса устройства

После установки ip-адреса, убедитесь в том, что анализируемое приложение открыто (то есть находится на переднем плане), а ваше устройство не в спящем режиме. Это важно, поскольку если приложение находится в фоновом режиме или само устройство находится в спящем режиме, работа приложение временно приостановлена операционной системой и, следовательно, вы не сможете выполнить динамический анализ.

Как только приложение открыто, вы можете вводить любые команды в консоли, как вы это делали в Cycript.

Рисунок 3: Результат выполнения команды UIApp

Как видно из рисунка выше, мы получили ответ при вводе команды. Мы можем вводить любую из команд, которые мы использовали в Cycript.

Давайте скроем панель статуса в приложении. Это можно сделать, если ввести команду [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];

Рисунок 4: Ввод команды для сокрытия панели статуса в приложении

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

Однако команда выполнилась, и панель статуса исчезла (обратите внимание, в верхней части экрана больше не показывается время).

Рисунок 5: Внешний вид приложения после сокрытия панели статуса

Схожим образом можно найти делегированный класс (delegate class) этого приложения.

Рисунок 6: Результат выполнения команды для поиска делегированного класса

Мы также можем установить число (например, 9000), показываемое на иконке приложения, (icon badge number).

Рисунок 7: Установка числа, показываемого на иконке приложения

Команда сработала (см. рисунок ниже).

Рисунок 8: Внешний вид иконки приложения после ввода команды

Поскольку консоль в iNalyzer представляет собой точную копию консоли в Cycript, мы можем вводить код на javascript и любую другую команду из документации на Cycript. Я ввел команду со страницы, где показаны различные трюки с Cycript.

Рисунок 9: Результат выполнения еще одной команды

Также я могу создать новую функцию, используя сочетание синтаксиса Objective-C и javascript. Если вы не знакомы с Cycript, рекомендую вам обратить к предыдущим статьям этой серии, где я детально рассказывал об этой утилите.

Рисунок 10: Объявление новой функции

Теперь я могу вызывать только что созданный метод в любое время.

Рисунок 11: Вызов ранее созданного метода

В девятой статье этой серии мы обсуждали утилиту Snoop-it, которая очень похожа на iNalyzer. Хотя у каждой из этих утилит есть свои преимущества и недостатки. На момент написания статьи Snoop-it не позволял реализовать технику method swizzling, а в iNalyzer это можно сделать. С другой стороны в iNalyzer нет возможности мониторинга api-вызовов, а Snoop-it такая возможность есть.

Заключение

В этой статье мы рассматривали, как использовать всю мощь iNalyzer для выполнения динамического анализа IOS-приложений. iNalyzer – прекрасный инструмент, который должен быть в арсенале любого, кто интересуется безопасностью IOS-приложений, поскольку позволяет выполнять все задачи быстрее и эффективнее.

Ссылки

Цифровые следы - ваша слабость, и хакеры это знают.

Подпишитесь и узнайте, как их замести!