04.08.2015

Безопасность IOS-приложений (часть 40) – Тестирование приложений в Mac OS

image

В этой статье мы поговорим о тестировании приложений в Mac OS, что часто бывает полезно в тех случаях, когда, например, у вас под рукой нет джейлбрейкового устройства, а нужно проверить работоспособность эксплоита.

Автор: Prateek Gianchandani

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

Установка iTunes-приложений

К сожалению, в симуляторе вы не сможете установить .ipa файлы из iTunes, поскольку iTunes-приложения компилируются под архитектуру ARM, а в симуляторе работают приложения, скомпилированные только под платформу x86/x64. Таким образом, чтобы программа корректно протестировалась на Маке, необходимы исходные тексты.

Мы все также будем работать с приложением Damn Vulnerable iOS app.

Анализ локального хранилища данных

Во время аудита приложения первым делом необходимо проверить на безопасность локальное хранилище данных. Загляните в следующие директории, созданные Xcode, и проверьте, хранит ли приложение конфиденциальные сведения в этих папках:

iOS 8 – /Users/[username]/Library/Developer/CoreSimulator/Devices/[уникальный номер]/data/Containers/Data/Application/[еще один уникальный номер]/

iOS 7 – /Users/[username]/Library/Application Support/iPhone Simulator/[ios version]/Applications/[уникальный id]/

Проверка системных логов

Логи, где может находиться конфиденциальная информация, создаваемые приложением, можно посмотреть в соответствующем разделе в Xcode. Однако часто разработчики проверяют, запущено ли приложение на устройстве или в симуляторе, и выводят информацию в лог только если происходит тестирование в симуляторе. Если подобная проверка отсутствует, скорее всего, в приложении присутствует уязвимость.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat1.png

Рисунок 1: Содержимое лога у приложения Damn Vulnerable iOS app

Подключение отладчика и трассировка вызовов

Вы всегда можете подключить отладчик к приложению, запущенному в симуляторе. Лучше использовать LLDB, поскольку в комплекте с этим отладчиком идут утилиты для работы с Xcode. iOS-приложение, запущенное в симуляторе, отображается в списке процессов, которые можно увидеть при помощи команды ps aux. При подключении отладчика в качестве параметра используется либо имя, либо идентификатор процесса.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat2.png

Рисунок 2: Подключение отладчика к запущенному процессу

Трассировка методов также выполняется при помощи отладчика LLDB, встроенного в Xcode. Чтобы добавить символическую точку останова, внизу слева кликните на плюсик.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat3.png

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

Теперь настраиваем точку останова для вызова objc_msgSend. Добавляем новое действие Debugger Command с командой p (void)printf(“[%s, %s]\n”, (char*)object_getClassName($arg1), $arg2) и выставляем галочку «Automatically continue after evaluating actions». Теперь мы можем выполнять трассировку всех вызовов метода objc_msgSend.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat4.png

Рисунок 4: Трассировка вызова

Подключение cycript

Для проверки уязвимости вы можете подключить Cycript к запущенному приложению. На Маке Cycript работает в точности так же, как и на устройстве.

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat5.png

Рисунок 5: Подключение cycript к запущенному процессу

Мониторинг сетевого трафика

Трафик по протоколам HTTP/HTTPS мониторится без каких-либо проблем. Можно использовать либо Burpsuite, либо Charles. Чтобы анализировать HTTPS-трафик, в симуляторе необходимо установить SSL-сертификат (просто перетащите файл сертификата в симулятор и кликните на Install).

http://2we26u4fam7n16rz3a44uhbe1bq2.wpengine.netdna-cdn.com/wp-content/uploads/040715_1425_iOSApplicat6.png

Рисунок 6: Установка файла сертификата

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