Данное руководство является введением для тех, кто желает разобраться с тестированием безопасности iOS-приложений.
Данное руководство является введением для тех, кто желает разобраться с тестированием безопасности iOS-приложений. Эта статья ни в коем случае не является всеобъемлющей, здесь я рассказываю лишь о базовых техниках. Граница между исследованием веб и мобильных приложений весьма размыта, поскольку и там и там, в основном, используется архитектура «клиент/сервер» и большинство приложений (если не все) используют протокол HTTP (и в некоторых случаях HTTPS). Вследствие этого, при поиске многих уязвимостей, потребуются светлые мозги специалиста по безопасности веб-приложений в комплекте с Burp proxy. Впрочем, у нас, в SpiderLabs, их много :).
Окей, начнем погружаться в тему.
Macbook Pro (для создания беспроводной сети) или беспроводная сеть – 1 штука.
Burp Proxy (или схожая утилита) – 1 штука.
Самоподписанный сертификат (для исследования HTTPS-трафика) – 1 штука.
Установите OpenSSH, Installous 4 и Clutch.
Установка исследуемого приложения
Если приложение есть на iTunes тогда все просто. Находите его, скачиваете и синхронизируете устройство. Иначе нужно скачать .IPA файл, дважды кликнуть по нему (произойдет загрузка на iTunes), а затем, как и в предыдущем случае, синхронизировать устройство.
Предупреждение: iTunes может принудительно удалить данные в случае синхронизации с компьютером. Если такое происходит, есть еще один способ установки приложений без синхронизации. Не кликайте на файл .ipa и не открывайте iTunes. Вместо этого скопируйте через SSH файл .IPA в папку /User/Documents/Installous/Downloads/, а затем установите при помощи Installous.
Если вместо файла .IPA у вас пакет .XCArchive, не переживайте, еще не потеряно. Вначале вам нужно установить корректный путь Xcode (полагаю, что у вас запущена OS X), иначе возникнет следующая ошибка:
Error: No developer directory found at /Developer. Run /usr/bin/xcode-select to update the developer directory path.
Для разрешения этой проблемы выполните следующую команду:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Теперь щелкните правой кнопкой мыши на файле .XCArchive и выберите пункт «Show Package Contents» и запишите путь к .app файлу (он вам понадобится в следующем шаге).
Далее мы будем использовать утилиту xcrun (в нашем случае она сродни волшебной палочке) для создания .IPA файла/пакета. Используйте следующую команду:
/usr/bin/xcrun -sdk iphoneos PackageApplication "/absolute/path/to/MyApp.xcarchive/Products/Applications/MyApp.app" -o "/absolute/path/to/MyApp.ipa"
Примечание: путь нужно заменить на тот, который вы записали в предыдущем шаге (когда просматривали файл .XCArchive). Не забудьте указать параметр -sdk iphoneos даже если у вас iPad.
Теперь скопируйте файл .IPA (опять же через SSH) на iPad и используйте Installous (внутри Cydia) для установки приложения.
Подсказка: При поиске приложения можно использовать дату.
Важно: Убедитесь в том, что вы выбрали строку «PortSwigger CA», а не случайный сайт (в нашем случае twitter.com).
/var/mobile/Applications/<ID>/App.app/
/var/mobile/Applications/<ID>/Library/Caches/
/var/mobile/Applications/<ID>/Library/Cookies/
/var/mobile/Applications/<ID>/Library/Preferences/
/var/mobile/Applications/<ID>/tmp/
/var/mobile/Applications/<ID>/Documents/
various .plist files
various .sqlite files
Keychain
Keychain также является полезным ресурсом для исследования данных, относящихся к приложению: /var/Keychains/keychain-2.db. Используйте утилиту Keychain Dumper (она находится по адресу https://github.com/ptoomey3/Keychain-Dumper/blob/master/keychain_dumper) для выгрузки всех элементов (используя файл entitlements.xml с описанием условий отбора (wildcard)). Вы можете скомпилировать эту утилиту из исходных текстов (если не доверяете бинарному файлу).
В этой статье я описал лишь базовые методы исследования iOS-приложений. Применение других техник уже зависит от специфики программы, ее сложности и т. д. Огромную работу по тестированию можно сделать через Burp, поскольку во многих случаях происходит взаимодействие с веб-сервисами посредством протоколов HTTP(S) (JSON) и тестируются уязвимости из OWASP Top 10. Исследование работы других механизмов: переключение в фоновый режим (снапшоты), защита файлов, использование буфера хранения, управление вводом/выводом (UIWebView) – большая тема, которая относится к манипуляциям во время выполнения приложения. Это тема отдельного поста.