02.04.2013

»сследование iOS-приложений Ц настройка инструментари€ и демонстраци€ базовых методов

image

ƒанное руководство €вл€етс€ введением дл€ тех, кто желает разобратьс€ с тестированием безопасности iOS-приложений.

јвтор: Tom Neaves

ƒанное руководство €вл€етс€ введением дл€ тех, кто желает разобратьс€ с тестированием безопасности iOS-приложений. Ёта стать€ ни в коем случае не €вл€етс€ всеобъемлющей, здесь € рассказываю лишь о базовых техниках. √раница между исследованием веб и мобильных приложений весьма размыта, поскольку и там и там, в основном, используетс€ архитектура «клиент/сервер» и большинство приложений (если не все) используют протокол HTTP (и в некоторых случа€х HTTPS). ¬следствие этого, при поиске многих у€звимостей, потребуютс€ светлые мозги специалиста по безопасности веб-приложений в комплекте с Burp proxy. ¬прочем, у нас, в SpiderLabs, их много :).

ќкей, начнем погружатьс€ в тему.

»нгредиенты

ƒжейлбрейковый iPhone/iPad (с Cydia) – 1 штука.

Macbook Pro (дл€ создани€ беспроводной сети) или беспроводна€ сеть Ц 1 штука.

Burp Proxy (или схожа€ утилита) Ц 1 штука.

—амоподписанный сертификат (дл€ исследовани€ HTTPS-трафика) Ц 1 штука.

ѕодготовка iPhone/iPad

Cydia должна быть уже установлена на джейлбрейковом устройстве. ќткройте Cydia, выберите вкладку Sources и добавьте новый источник: "http://cydia.hackulo.us".


”становите 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) дл€ установки приложени€.

ћестонахождение приложени€

ѕодключитесь к устройству через SSH. ѕриложение будет установлено в папку /var/mobile/Applications/<ID>/.

ѕодсказка: ѕри поиске приложени€ можно использовать дату.

ѕодключение к беспроводной сети

ѕодключите устройство к беспроводной сети Ц будь то сеть на Macbook Pro ЂInternet Sharingї или насто€ща€ беспроводна€ сеть. ”бедитесь, что ћакбук, который будет перехватывать запросы/ответы (через Burp), находитс€ той же сети.

”становка самоподписанного сертификата

Ќа ћакбуке мы экспортируем сертификат Burp (через Firefox). ”становите Burp как прокси на 8080 порту TCP (прослушивающим ¬—≈ интерфейсы). ќткройте в Firefox любой сайт, который поддерживает соединение по протоколу HTTPS. Ќа экране по€витс€ исключение, где вы увидите иерархию сертификатов. ¬ыберите сертификат ЂPortSwigger CAї и экспортируйте его в формат .CER. ƒалее отправьте письмо с этим файлом, откройте почтовое сообщение и установите сертификат в мобильном устройстве.

¬ажно: ”бедитесь в том, что вы выбрали строку ЂPortSwigger CAї, а не случайный сайт (в нашем случае twitter.com).

Ќастройка прокси-сервера

”бедитесь, что Burp слушает ¬—≈ интерфейсы, или как минимум те, которые доступны через сеть. ¬ мобильном устройстве зайдите во вкладку Network, Wi-Fi, кликните на синюю стрелку в правой части экрана, прокрутите до секции ЂHTTP Proxyї и выберите вкладку Manual. ”становите параметры ћакбука, на котором запущен Burp (IP-адрес и TCP-порт 8080).


“естирование прокси-сервера

ќткройте браузер Safari (на устройстве) и проверьте, что Burp перехватывает HTTPS-трафик. ≈сли все нормально, открыв iOS-приложение, вы сможете наблюдать передаваемый трафик.


ƒешифровка приложений iTunes

≈сли вы загрузили клиентское приложение из iTunes, перед началом исследований (просмотр строк и прочее) вам необходимо расшифровать программу. ƒл€ решени€ этой задачи вы можете использовать gdb или Clutch (ранее установленное через Cydia). Clutch сохран€ет взломанные приложени€ в папке /var/root/Documents/Cracked/. —копируйте файл .IPA на ћакбук, чтобы проанализировать его.

ѕоиск строк в бинарном файле

–аспакуйте файл .IPA, сформированный в предыдущем шаге. «айдите в директорию с распакованным архивом (например, /BAH.app/<BAH>) и выполните команду: strings BAH > stringsdump.txt. “еперь можно изучить файл stringsdump.txt на предмет чего-нибудь интересного. ѕодсказка: grep “password”, УsecretФ, Уhttp://Ф, УencryptФ и так далее.


ѕросмотр классов, объектов и библиотек

ƒл€ просмотра информации о классах можно использовать утилиту class-dump: ./class-dump binary или otool: ./otool -ov binary. Ёта информаци€ (переменные, имена классов и т. д.) будет полезна дл€ манипул€ций во врем€ выполнени€ приложени€.


‘айлы приложени€

ѕриложени€ устанавливаютс€ в папку /var/mobile/Applications/<ID>/. ¬нутри <APP>.app наход€тс€ ресурсные файлы (включа€ бинарные). “акже здесь можно найти закешированные данные, базы данных и т. д. “ипична€ структура директории, в которую установлено приложение:

/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) Ц больша€ тема, котора€ относитс€ к манипул€ци€м во врем€ выполнени€ приложени€. Ёто тема отдельного поста.†

или введите им€

CAPTCHA