
Приветствую, друзья.
Порой возникает необходимость проанализировать трафик определенного
мобильного приложения. Нередко он передается по HTTP(S), с целью
предотвратить перехват и модификацию передаваемых данных (однако это,
как вы убедитесь ниже, это не всегда помогает).
В данной заметке будет описан перехват трафика, в том числе HTTPS, обход SSL и Certificate Pinning (что не позволяет просто добавить свой сертификат, заменив легитимный), например Twitter, Facebook.
Для чего это может пригодиться:
Узнать как работает тот или-иной сервис, понять как работает недокументированный API, начитерить в игре или же заставить приложение считать себя купленым.
Ну или просто удобно отлаживать свои приложения.
Выбор за вами
Интересно? Читайте дальше.
Для осуществления перехвата трафика приложения с сервером понадобится:
1) Любое Apple устройство с IOS 6-8.x c jailbreakом (для перехвата HTTPS, для перехвата HTTP-трафика можно обойтись и без jailbreak)
1) Любой web-debuging proxy-сервер, например Charles или Fiddler2 (дальнейшее описание я буду вести на примере Fiddler2)
Приступим:
1) Скачиваем и устанавливаем Fiddler2.
2) Запускаем, Открываем Tools – Fiddler Options.
3) На вкладке Сonnections ставим галку “Allow remote computers to connect” а также прописываем порт (Fiddler listens on port), на котором будет запущен прокси-сервер (я рекомендую 8080).
Затем на вкладке HTTPS ставим галки Capture HTTPS Connect, Decrypt HTTPS traffic и выбираем frome remote clients only в выпадающем меню.
В таком случае нет даже необходимости в Jailbreak’e.
Для перехвата просто соединяем устройство, на котором будет проводиться
анализ трафика и IOS-устройство в одну сеть. Самый простой способ –
подключиться к одной Wi-Fi сети.
Как определить шифруется ли трафик.
Если после данных манипуляций вы вы видите читабельные запросы и
ответы от сервера а не непонятную кашу – значит вам повезло и можете
заканчивать чтение статьи.
Хотя такое с каждым днем встречается все реже и реже ибо гонять трафик в
открытом виде подвергая риску перехвата и модификации – моветон.
Общение с сервером идет через HTTPS.
В данном случае, если приложение не использует Сetificate Pinning
(технология, позволяющая обезопасить приложение от подмены сертификата)
можно просто сгенерировать необходимый сертификат и подсунуть его на
устройство. Однако большая часть серьезных приложений уже внедрили Сetificate Pinning и откажутся работать при подмене.
Данный способ более универсален и функционален, а также позволяет обойти Сetificate Pinning – использовать патч IOS SSL Killswitch вмешивающийся впроцедуру валидации SSL-сертификатов, что приводит к ее отключению.
Приступим к установке:
1) Запускаем Cydia и ставим необходимые пакеты: MobileSubstrate, PreferenceLoader (все они есть в стандартном репозитории)
2) Скачиваем необходимую версию самого хака:
IOS 8.x
IOS 7.x
IOS 6.x
В теории версия для IOS 8.x должна также поддерживать и IOS младших версий, однако у меня нет возможности проверить. По ссылкам 100% рабочие версии.
3) Полученный deb пакет закидываем на I-девайс любым удобным вам образом и устанавлиаем, например через IFile (клик по deb‘у – затем установить)
4) Открываем настройки, находим пункт SSL Kill Switch и активируем хак.
5) Перезагружаем устройство (необходимо) и приступаем к анализу трафика
Затем в настройках Wi-FI в настройках прокси-сервера на телефоне указываем IP вашего компьютера, на котором запущен прокси-сервер и его порт. В моем случае это 192.168.1.4.
Запускаем необходимое приложение и анализируем трафик.