
Guia passo a passo para interceptar tráfego HTTP/HTTPS de Android e iOS com o Charles Proxy, abordando proxy SSL, instalação do certificado CA e configurações de confiança.
O guia dos hackers de dispositivos móveis para o Charles Proxy 👍
Charles é um proxy HTTP / monitor HTTP / proxy reverso que permite a um desenvolvedor visualizar todo o tráfego HTTP e SSL / HTTPS entre sua máquina e a Internet. Isso inclui requisições, respostas e os cabeçalhos HTTP (que contêm os cookies e informações de cache).
Charles -> Proxy -> SSL Proxying Settings... -> SSL Proxying
Charles -> Help -> SSL Proxying -> Install Charles Root Certificate
Obtenha o endereço IP no qual o Charles está escutando
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
Inicie o Charles e mantenha-o em execução
Obtenha o endereço IP
Certifique-se de que o dispositivo Android usa a mesma rede que o Charles
No dispositivo Android
Vá para Settings -> Wi-Fi -> mantenha pressionada a rede em uso -> Modify network -> Advanced options -> Proxy -> Manual
Abra o Navegador, acesse https://chls.pro/ssl, salve o certificado
Uma caixa de diálogo aparece no computador perguntando "A connection attempt to Charles has been made from the host ...", basta clicar no botão 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 sob 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>
Agora o proxy SSL deve funcionar para a variante de build debug do seu app, mas não para a variante de build release.
Inicie o Charles e mantenha-o em execução
Obtenha o endereço IP
Certifique-se de que o dispositivo iOS use a mesma rede que o Charles
No dispositivo iOS
Vá para Settings -> Wi-Fi -> clique na rede em uso -> defina HTTP PROXY como Manual
Abra o Safari, visite https://chls.pro/ssl (se não funcionar, tente http://www.charlesproxy.com/getssl), instale o certificado
Um diálogo aparece no computador perguntando "A connection attempt to Charles has been made from the host ...", basta clicar no botão Allow
Caso você precise depurar via curl em um terminal:
Para definir o Charles como proxy
export http_proxy=http://127.0.0.1:8888 && export https_proxy=$http_proxy
Para remover o proxy
unset http_proxy https_proxy