
Пошаговое руководство по перехвату HTTP/HTTPS-трафика Android и iOS с помощью Charles Proxy, включая проксирование SSL, установку CA-сертификата и настройки доверия.
Руководство для мобильных хакеров по Charles Proxy 👍
Charles — это HTTP-прокси / HTTP-монитор / обратный прокси, который позволяет разработчику просматривать весь трафик HTTP и SSL / HTTPS между своим компьютером и интернетом. Это включает запросы, ответы и HTTP-заголовки (которые содержат файлы cookie и информацию о кэшировании).
Charles -> Proxy -> SSL Proxying Settings... -> SSL Proxying
Charles -> Help -> SSL Proxying -> Install Charles Root Certificate
Получите IP-адрес, который прослушивает Charles
ifconfig | tr "\n" "→" | tr "\r" "→" | grep -Eo "→en0.*?→en[[:digit:]]" | grep -Eo "inet[[:blank:]+]([0-9]{1,3}\.){3}[0-9]{1,3}" | cut -d' ' -f2 | tr -d "\n" | pbcopy && pbpaste
ifconfig | tr "\n" "→" | tr "\r" "→" | grep -Eo "→en[[:digit:]].*?active→" | grep -v "en0" | grep -Eo "inet[[:blank:]+]([0-9]{1,3}\.){3}[0-9]{1,3}" | cut -d' ' -f2 | tr -d "\n" | pbcopy && pbpaste
Запустите Charles и оставьте его работающим
Получите IP-адрес
Убедитесь, что устройство Android использует ту же сеть, что и Charles
На устройстве Android
Перейдите в Settings -> Wi-Fi -> долгое нажатие на используемую сеть -> Modify network -> Advanced options -> Proxy -> Manual
Запустите браузер, посетите https://chls.pro/ssl, сохраните сертификат
На компьютере появится диалоговое окно с вопросом "A connection attempt to Charles has been made from the host ...", просто нажмите кнопку Allow
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:android="http://schemas.android.com/apk/res/android">
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
networkSecurityConfig в элемент application.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
Теперь SSL-проксирование должно работать для debug-варианта сборки вашего приложения, но не для release-варианта.
Запустите Charles и оставьте его работающим
Получите IP-адрес
Убедитесь, что устройство iOS использует ту же сеть, что и Charles
На устройстве iOS
Перейдите в Settings -> Wi-Fi -> нажмите на используемую сеть -> установите HTTP PROXY в значение Manual
Запустите Safari, посетите https://chls.pro/ssl (если не работает, попробуйте http://www.charlesproxy.com/getssl), установите сертификат
На компьютере появится диалоговое окно с вопросом "A connection attempt to Charles has been made from the host ...", просто нажмите кнопку Allow
Если вам нужно отлаживать через curl в терминале:
Чтобы установить Charles в качестве прокси
export http_proxy=http://127.0.0.1:8888 && export https_proxy=$http_proxy
Чтобы удалить прокси
unset http_proxy https_proxy