Перехват HTTP(S) трафика IOS

iOS-8-Pwned

Приветствую, друзья.
Порой возникает необходимость проанализировать трафик определенного мобильного приложения. Нередко он передается по 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) Запускаем, Открываем ToolsFiddler Options.
3) На вкладке Сonnections ставим галку «Allow remote computers to connect» а также прописываем порт (Fiddler listens on port), на котором будет запущен прокси-сервер (я рекомендую 8080).
Затем на вкладке HTTPS ставим галки Capture HTTPS Connect, Decrypt HTTPS traffic и выбираем frome remote clients only в выпадающем меню.

Fiddler2 Fiddler3

Общение приложение с сервером идет по HTTP без шифрования.

В таком случае нет даже необходимости в Jailbreak’e.
Для перехвата просто соединяем устройство, на котором будет проводиться анализ трафика и IOS-устройство в одну сеть. Самый простой способ — подключиться к одной Wi-Fi сети.

Как определить шифруется ли трафик.

Если после данных манипуляций вы вы видите читабельные запросы и ответы от сервера а не непонятную кашу — значит вам повезло и можете заканчивать чтение статьи.
Хотя такое с каждым днем встречается все реже и реже ибо гонять трафик в открытом виде подвергая риску перехвата и модификации — моветон.

Общение с сервером идет через HTTPS.

В данном случае, если приложение не использует Сetificate Pinning (технология, позволяющая обезопасить приложение от подмены сертификата) можно просто сгенерировать необходимый сертификат и подсунуть его на устройство. Однако большая часть серьезных приложений уже внедрили Сetificate Pinning и откажутся работать при подмене.

Данный способ более универсален и функционален, а также позволяет обойти Сetificate Pinning — использовать патч IOS SSL Killswitch вмешивающийся в процедуру валидации SSL-сертификатов, что приводит к ее отключению.

Приступим к установке:
1) Запускаем Cydia и ставим необходимые пакеты: MobileSubstratePreferenceLoader (все они есть в стандартном репозитории)
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.
wifi proxy setup

 

 

 

 

 

 

 

 


Запускаем необходимое приложение и анализируем трафик.

Перехват HTTP(S) трафика IOS: 1 комментарий

  1. Описанный метод можно использовать для обхода проблем с перехватом трафика iOS-приложений, передающих его нестандартными способами. 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *