В этой статье мы поговорим о тестировании приложений в 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. Однако часто разработчики проверяют, запущено ли приложение на устройстве или в симуляторе, и выводят информацию в лог только если происходит тестирование в симуляторе. Если подобная проверка отсутствует, скорее всего, в приложении присутствует уязвимость.
Рисунок 1: Содержимое лога у приложения Damn Vulnerable iOS app
Подключение отладчика и трассировка вызовов
Вы всегда можете подключить отладчик к приложению, запущенному в симуляторе. Лучше использовать LLDB, поскольку в комплекте с этим отладчиком идут утилиты для работы с Xcode. iOS-приложение, запущенное в симуляторе, отображается в списке процессов, которые можно увидеть при помощи команды ps aux. При подключении отладчика в качестве параметра используется либо имя, либо идентификатор процесса.
Рисунок 2: Подключение отладчика к запущенному процессу
Трассировка методов также выполняется при помощи отладчика LLDB, встроенного в Xcode. Чтобы добавить символическую точку останова, внизу слева кликните на плюсик.
Рисунок 3: Добавление точки останова
Теперь настраиваем точку останова для вызова objc_msgSend. Добавляем новое действие Debugger Command с командой p (void)printf(“[%s, %s]\n”, (char*)object_getClassName($arg1), $arg2) и выставляем галочку «Automatically continue after evaluating actions». Теперь мы можем выполнять трассировку всех вызовов метода objc_msgSend.
Рисунок 4: Трассировка вызова
Подключение cycript
Для проверки уязвимости вы можете подключить Cycript к запущенному приложению. На Маке Cycript работает в точности так же, как и на устройстве.
Рисунок 5: Подключение cycript к запущенному процессу
Мониторинг сетевого трафика
Трафик по протоколам HTTP/HTTPS мониторится без каких-либо проблем. Можно использовать либо Burpsuite, либо Charles. Чтобы анализировать HTTPS-трафик, в симуляторе необходимо установить SSL-сертификат (просто перетащите файл сертификата в симулятор и кликните на Install).
Рисунок 6: Установка файла сертификата
На сегодня все. В следующей статье мы поговорим об использовании отладчика LLDB.