Você configura o proxy, conecta o dispositivo — e mesmo assim o aplicativo não mostra o tráfego ou falha com um erro. Provavelmente, o problema está no SSL Pinning: uma proteção que os desenvolvedores intencionalmente incorporam ao aplicativo para bloquear a interceptação de requisições HTTPS. Isso é uma dor de cabeça para todos que analisam o comportamento de aplicativos concorrentes, testam integrações publicitárias ou estudam APIs de marketplaces.
Neste guia, vamos explorar o que é SSL Pinning, por que ele interfere no trabalho com proxies e como contorná-lo — passo a passo, sem teoria desnecessária.
O que é SSL Pinning e por que é incorporado em aplicativos
SSL Pinning (ou Certificate Pinning) é um mecanismo de segurança em que um aplicativo móvel "incorpora" previamente um certificado SSL específico ou uma chave pública do servidor. A cada conexão, o aplicativo verifica: o certificado do servidor coincide com o que está embutido? Se não — a conexão é interrompida.
Na configuração HTTPS normal, o navegador ou aplicativo confia em qualquer certificado assinado por uma autoridade certificadora (CA) confiável. É isso que ferramentas de proxy como Charles Proxy ou mitmproxy utilizam: elas inserem seu próprio certificado, decifram o tráfego e o encaminham. O usuário vê toda a troca de dados em texto claro.
O SSL Pinning quebra esse esquema. O aplicativo vê o certificado da ferramenta de proxy, percebe que ele não coincide com o certificado "nativo" do servidor e se recusa a funcionar. É por isso que você vê erros como SSL handshake failed, Certificate verification failed ou simplesmente uma tela em branco no aplicativo.
Os desenvolvedores implementam o SSL Pinning por várias razões:
- Proteção contra ataques do tipo Man-in-the-Middle (MITM)
- Prevenção da engenharia reversa de APIs
- Proteção contra bots e requisições automatizadas
- Ocultação da lógica interna de monetização e integrações publicitárias
Entre os aplicativos que usam ativamente o SSL Pinning estão: aplicativos bancários, marketplaces (Wildberries, Ozon), SDKs publicitários (Facebook, TikTok), sistemas de pagamento e grandes plataformas de e-commerce. É por isso que contornar o SSL Pinning é tão importante para profissionais de marketing, arbitradores e especialistas em análise de concorrentes.
Por que o proxy não funciona se o aplicativo tem SSL Pinning
Quando você configura um proxy no telefone (por exemplo, através das configurações de Wi-Fi), todo o tráfego HTTP e HTTPS passa pelo servidor proxy. Para HTTP, isso funciona sem problemas — o tráfego já é aberto. Mas para HTTPS, a ferramenta de proxy deve "se apresentar" como o servidor, inserindo seu próprio certificado.
É aqui que surge o conflito. Aplicativos normais aceitam esse certificado, se você instalou o certificado raiz da ferramenta de proxy no armazenamento do sistema do dispositivo. Mas aplicativos com SSL Pinning ignoram o armazenamento do sistema — eles verificam apenas seu certificado "embutido".
Como isso se parece na prática:
Você conecta o Charles Proxy, instala seu certificado raiz no iPhone, inicia o aplicativo do marketplace — e vê um erro ou uma tela em branco. Nos logs do Charles — nada ou registros com erro SSL. Essa é a imagem clássica do SSL Pinning em ação.
É importante entender: o problema não está no servidor proxy (residencial, móvel ou de data center). O proxy aqui atua como um nó intermediário para roteamento de tráfego. O problema está no próprio aplicativo, que se recusa a aceitar o certificado substituído. Portanto, a solução deve ser procurada no nível do aplicativo ou dispositivo, e não no nível do servidor proxy.
Existem vários tipos de SSL Pinning, e eles diferem em complexidade de contorno:
| Tipo de Pinning | O que é verificado | Dificuldade de contorno |
|---|---|---|
| Certificate Pinning | Certificado completo do servidor | Média |
| Public Key Pinning | Chave pública do certificado | Alta |
| Hash Pinning | Hash do certificado ou chave | Alta |
| Network Security Config | Arquivo de configuração Android (XML) | Baixa–média |
Ferramentas para interceptação de tráfego: Charles, mitmproxy, Burp Suite
Antes de passar para o contorno do SSL Pinning, é necessário escolher uma ferramenta para interceptação de tráfego. Todas elas funcionam com o mesmo princípio: levantam um servidor proxy local, através do qual o tráfego do dispositivo passa. A diferença está na conveniência, funcionalidades e preço.
Charles Proxy
A ferramenta mais popular entre profissionais de marketing e testadores sem um profundo conhecimento técnico. Possui uma interface gráfica, funciona em Windows e macOS. Permite ver todas as requisições e respostas em uma árvore conveniente, filtrar por domínio, editar requisições em tempo real. É paga, mas possui um período de teste. É excelente para análise de APIs de marketplaces e SDKs publicitários.
mitmproxy
Ferramenta gratuita de código aberto. Funciona através da linha de comando, mas possui uma interface web (mitmweb). Muito flexível: suporta scripts para modificação automática do tráfego. É bem adequada para quem deseja automatizar a análise ou integrar a interceptação no pipeline de testes. Um pouco mais difícil de configurar do que o Charles.
Burp Suite
Ferramenta profissional para testes de segurança. Possui uma versão Community gratuita com funcionalidades básicas. Especialmente conveniente para análise detalhada de requisições, trabalho com cookies e sessões. É amplamente utilizada na análise de APIs de concorrentes e pesquisa de integrações publicitárias. A interface é mais complexa que a do Charles, mas as possibilidades são mais amplas.
| Ferramenta | Interface | Preço | Para quem |
|---|---|---|---|
| Charles Proxy | GUI (conveniente) | Pago (~$50) | Profissionais de marketing, analistas |
| mitmproxy | CLI + Web UI | Gratuito | Especialistas técnicos |
| Burp Suite | GUI (complexa) | Gratuita / Pro | Testadores de segurança |
Para a maioria das tarefas de um profissional de marketing ou arbitrador — análise de requisições publicitárias, estudo da API de um marketplace, monitoramento do tráfego de um aplicativo — o Charles Proxy será a escolha ideal. Se precisar de automação ou trabalho sem GUI — o mitmproxy.
Métodos de contorno do SSL Pinning: do simples ao avançado
Existem várias abordagens para contornar o SSL Pinning. Elas diferem em complexidade, requisitos para o dispositivo e confiabilidade. Vamos examinar cada uma — da mais simples à mais poderosa.
Método 1: Instalação do certificado no armazenamento do sistema (apenas Android)
A maneira mais simples — mas funciona apenas para aplicativos que utilizam o armazenamento de certificados do sistema. No Android até a versão 7.0, certificados personalizados eram aceitos como se fossem certificados do sistema. A partir do Android 7.0, aplicativos ignoram por padrão CA personalizados. Se o aplicativo explicitamente permite certificados personalizados em network_security_config.xml — esse método funcionará. Para a maioria dos aplicativos modernos com SSL Pinning — não ajudará.
Método 2: Frida — patching dinâmico do aplicativo
Frida é uma ferramenta para instrumentação dinâmica de aplicativos. Ela permite interceptar "em tempo real" chamadas de funções dentro do aplicativo e modificar seu comportamento. Para contornar o SSL Pinning, existem scripts prontos que desativam a verificação do certificado sem modificar o APK. Requer root no Android ou jailbreak no iOS. Este é o método mais confiável e versátil.
Método 3: Patch do APK (Android)
Descompilação do arquivo APK usando apktool, remoção ou modificação do código de SSL Pinning, recompilação e assinatura do aplicativo. Não requer root, mas exige habilidades técnicas para trabalhar com código smali. Funciona bem para aplicativos com implementação simples de Pinning através do Network Security Config. Para aplicativos com código nativo (C/C++) — é significativamente mais difícil.
Método 4: Objection — wrapper sobre Frida para iniciantes
Objection é uma ferramenta baseada em Frida com uma interface de linha de comando mais simples. Contém comandos embutidos para contornar o SSL Pinning com um único comando: android sslpinning disable. É adequado para quem não quer se preocupar em escrever scripts Frida manualmente. Requer root ou jailbreak.
Método 5: Uso de um emulador com root
Em vez de um dispositivo físico, você pode usar um emulador Android (por exemplo, Genymotion ou o AVD padrão do Android Studio) com acesso root habilitado. Isso permite instalar certificados do sistema e executar Frida sem o risco de "brickar" o telefone real. Uma opção conveniente para testes regulares em um ambiente de trabalho.
Contorno passo a passo do SSL Pinning no Android
Vamos examinar o cenário mais prático: um dispositivo Android ou emulador com root, ferramenta Objection + Frida, ferramenta de proxy Charles Proxy ou mitmproxy.
O que será necessário:
- Dispositivo Android com root ou emulador Genymotion
- Computador com Python 3 instalado
- Frida-server para Android (baixar do GitHub)
- Objection (instalado via pip)
- Charles Proxy ou mitmproxy no computador
- ADB (Android Debug Bridge)
Passo 1: Configure a ferramenta de proxy no computador
Inicie o Charles Proxy ou mitmproxy. Por padrão, eles escutam na porta 8888 (Charles) ou 8080 (mitmproxy). Lembre-se do endereço IP do seu computador na rede local — ele será necessário para configurar o proxy no dispositivo.
Passo 2: Configure o proxy no dispositivo Android
Vá para as configurações de Wi-Fi → selecione sua rede → clique em "Alterar" → "Opções avançadas" → Proxy: Manual. Insira o IP do computador e a porta da ferramenta. Agora todo o tráfego do dispositivo passa pelo seu proxy.
Passo 3: Instale o certificado da ferramenta de proxy
Abra o navegador no dispositivo e vá para o endereço chls.pro/ssl (para Charles) ou mitm.it (para mitmproxy). Baixe e instale o certificado. No Android com root, mova o certificado para o armazenamento do sistema — isso é necessário para alguns aplicativos.
Passo 4: Inicie o Frida-server no dispositivo
Baixe o frida-server da versão correta no GitHub (a versão deve coincidir com a versão do Frida no computador). Carregue o arquivo no dispositivo via ADB:
adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "su -c /data/local/tmp/frida-server &"
Passo 5: Conecte-se via Objection e desative o SSL Pinning
No computador, instale o Objection via pip e inicie-o, especificando o nome do pacote do aplicativo:
pip install objection objection -g com.example.app explore
Após a conexão, no console do Objection, execute o comando para desativar o SSL Pinning:
android sslpinning disable
Depois disso, abra o aplicativo e comece a interagir com ele. O tráfego aparecerá no Charles ou mitmproxy em formato decifrado.
Passo 6: Para aplicativos com Network Security Config
Se o aplicativo usa network_security_config.xml, você pode descompilar o APK usando apktool, encontrar esse arquivo e adicionar permissão para certificados personalizados, e então recompilar e re-assinar o APK. Isso funciona sem root, mas requer a desativação da verificação de assinatura do aplicativo.
Contorno passo a passo do SSL Pinning no iOS
No iOS, a situação é mais complicada: a maioria dos métodos requer jailbreak. Sem ele, as possibilidades são limitadas. Vamos considerar ambas as opções.
Opção A: Com jailbreak (iOS 14-16, checkra1n / palera1n)
Passo 1: Configure o proxy
No iPhone, vá para Configurações → Wi-Fi → sua rede → Configurar proxy → Manual. Insira o IP do computador e a porta do Charles/mitmproxy.
Passo 2: Instale o certificado
Abra o Safari e vá para chls.pro/ssl. Instale o perfil através de Configurações → Geral → VPN e gerenciamento de dispositivos. Em seguida, ative-o em Configurações → Geral → Confiança em certificados.
Passo 3: Instale o SSL Kill Switch 2 através do Cydia/Sileo
O SSL Kill Switch 2 é um tweak para iOS com jailbreak que desativa o SSL Pinning globalmente para todos os aplicativos. Encontre-o no Cydia ou Sileo, instale, reinicie o dispositivo. Depois disso, a maioria dos aplicativos parará de verificar certificados, e o tráfego será visível no Charles.
Passo 4: Alternativa — Frida + Objection no iOS
Semelhante ao Android: instale o frida-server através do Cydia, conecte-se via Objection no computador e execute ios sslpinning disable. Este método é mais flexível e funciona para aplicativos que o SSL Kill Switch 2 não cobre.
Opção B: Sem jailbreak (possibilidades limitadas)
Sem jailbreak, contornar o SSL Pinning no iOS é significativamente mais difícil. Uma das opções é usar a ferramenta Proxyman com sua função de SSL Proxying para iOS sem jailbreak. O Proxyman instala um perfil especial no dispositivo e usa uma interface VPN para interceptar o tráfego. Funciona para muitos aplicativos, mas não para todos com Pinning rígido.
Outra opção é usar o simulador iOS no Xcode. O simulador não possui SSL Pinning a nível de sistema operacional, e muitos aplicativos podem ser executados nele (se suportarem o simulador). Mas isso é adequado apenas para testes, e não para análise de aplicativos em produção.
Qual tipo de proxy escolher para testar aplicativos móveis
Depois que o SSL Pinning é contornado, o tráfego do aplicativo passa pela sua ferramenta de proxy (Charles, mitmproxy). Mas para algumas tarefas, é necessário também direcionar o tráfego através de um servidor proxy externo — por exemplo, para que o aplicativo "veja" outra região ou outro endereço IP. Aqui, é importante escolher corretamente o tipo de proxy.
Proxies residenciais
Proxies residenciais usam endereços IP de usuários reais em casa. Aplicativos móveis, especialmente SDKs publicitários e marketplaces, confiam muito mais nesses IPs do que nos endereços de data centers. Se você está analisando o comportamento do aplicativo com base na região — proxies residenciais fornecerão a imagem mais "limpa", próxima ao usuário real.
Proxies móveis
Proxies móveis operam através de redes móveis reais (3G/4G/5G). Isso é especialmente relevante ao testar aplicativos móveis: IPs de redes móveis têm o mais alto nível de confiança no SDK do Facebook Ads, TikTok e outras plataformas publicitárias. Se seu objetivo é analisar requisições publicitárias do aplicativo ou testar o comportamento do SDK em um ambiente móvel, proxies móveis são a escolha ideal.
Proxies de data center
Proxies de data center são adequados para tarefas onde a velocidade é mais importante do que a "naturalidade" do IP: por exemplo, para scraping em massa de APIs abertas ou testes de desempenho. Para análise de SDKs publicitários e aplicativos protegidos, eles são menos preferíveis, pois são facilmente reconhecidos por sistemas antifraude.
| Tipo de proxy | Confiança dos aplicativos | Velocidade | Melhor cenário |
|---|---|---|---|
| Residenciais | Alta | Média | Análise por regiões, marketplaces |
| Móveis | Máximo | Média | SDKs publicitários, Facebook, TikTok |
| Data centers | Baixa | Alta | Scraping de APIs abertas, testes de carga |
Cenários práticos: arbitragem, e-commerce, marketing
Vamos examinar tarefas específicas para as quais profissionais de marketing e arbitradores recorrem ao contorno do SSL Pinning.
Cenário 1: Análise do SDK publicitário do Facebook e TikTok
Arbitradores que trabalham com Facebook Ads e TikTok Ads frequentemente querem entender quais dados o SDK envia para o servidor: quais eventos são registrados, como as requisições de atribuição são formadas, quais parâmetros influenciam a otimização das campanhas. Sem contornar o SSL Pinning, isso é impossível — ambos os SDKs utilizam Certificate Pinning.
Após o contorno via Frida/Objection, é possível ver no Charles todos os eventos do SDK: instalações, compras, registros — e garantir que o rastreamento está configurado corretamente. Isso é especialmente importante ao configurar o CAPI (Conversions API) e verificar a deduplicação de eventos.
Cenário 2: Monitoramento de preços no Wildberries e Ozon através do aplicativo
Os aplicativos Wildberries e Ozon utilizam SSL Pinning para proteger suas APIs. Vendedores que desejam monitorar os preços dos concorrentes através do aplicativo móvel (e não da versão web) enfrentam essa proteção. Após contornar o SSL Pinning, é possível estudar a estrutura das requisições da API e entender quais endpoints são usados para obter dados sobre preços, disponibilidade e classificação de produtos.
Importante: os dados obtidos podem ser usados apenas para análise pessoal. O scraping automatizado através da reprodução de requisições da API viola os termos de uso da maioria das plataformas.
Cenário 3: Teste de criativos publicitários de diferentes regiões
Profissionais de marketing que testam anúncios no Facebook Ads e TikTok Ads de diferentes regiões querem ver como o aplicativo se comporta ao se conectar através de um IP de um país específico. A combinação de contorno do SSL Pinning + proxy residencial da região desejada permite ver qual conteúdo e quais preços são mostrados para usuários dessa região.
Cenário 4: Teste de QA do próprio aplicativo
Se você está desenvolvendo seu próprio aplicativo móvel ou trabalhando com uma equipe de desenvolvimento, interceptar o tráfego contornando o SSL Pinning é uma prática padrão de QA. Isso permite verificar a correção das requisições, encontrar vazamentos de dados, e testar o funcionamento de análises e SDKs publicitários em condições reais antes do lançamento.
Cenário 5: Análise de concorrentes no nicho de jogos e aplicativos móveis
Profissionais de marketing de jogos móveis usam a interceptação de tráfego para analisar a monetização de concorrentes: quais ofertas são mostradas, como funciona o sistema de compras dentro do aplicativo, quais redes publicitárias são utilizadas. Isso ajuda a construir estratégias mais eficazes de UA (User Acquisition) e monetização.
Checklist: verifique a configuração antes do teste
Antes de começar a interceptar o tráfego, certifique-se de que tudo está configurado corretamente. Aqui está o checklist completo:
✅ Checklist de configuração
- A ferramenta de proxy (Charles/mitmproxy) está rodando no computador e escutando a porta correta
- O computador e o dispositivo estão na mesma rede Wi-Fi
- O IP correto do computador e a porta do proxy estão especificados nas configurações de Wi-Fi do dispositivo
- O certificado raiz da ferramenta de proxy está instalado no dispositivo
- No Android: o certificado foi movido para o armazenamento do sistema (se houver root)
- No iOS: o certificado foi ativado na seção "Confiança em certificados"
- O Frida-server está rodando no dispositivo (se estiver usando Frida/Objection)
- A versão do Frida no computador coincide com a versão do frida-server no dispositivo
- O Objection se conectou com sucesso ao processo do aplicativo
- O comando
android sslpinning disablefoi executado sem erros - Registros aparecem no Charles/mitmproxy ao trabalhar com o aplicativo
- As requisições HTTPS são decifradas (não mostram erro SSL)
Problemas comuns e suas soluções
| Problema | Causa | Solução |
|---|---|---|
| O tráfego não aparece no Charles | IP/porta do proxy incorretos | Verifique o IP do computador e a porta |
| Erro SSL no Charles | Certificado não instalado ou não ativado | Reinstale e ative o certificado |
| Frida não conecta | Incompatibilidade de versões frida/frida-server | Sincronize as versões |
| Objection não desativa o Pinning | Código nativo (C/C++) com Pinning | Use um script Frida personalizado |
| O aplicativo falha após o bypass | O aplicativo verifica a integridade | Desative também a detecção de root via Objection |
Conclusão
O SSL Pinning é uma proteção séria, mas não intransponível. Para a maioria das tarefas práticas de um profissional de marketing ou arbitrador, uma combinação de: emulador Android com root + Frida/Objection + Charles Proxy é suficiente. No iOS — SSL Kill Switch 2 com jailbreak ou Proxyman sem ele. O principal é configurar corretamente a cadeia: ferramenta de proxy no computador → tráfego através dela → contorno do Pinning no dispositivo.
Lembre-se de que contornar o SSL Pinning em aplicativos de terceiros é permitido apenas para análise e pesquisa pessoal. O scraping automatizado e a reprodução de requisições da API violam os termos de uso da maioria das plataformas.
Se sua tarefa é analisar o tráfego de aplicativos móveis em diferentes regiões ou testar o comportamento de SDKs publicitários de países específicos, você precisará não apenas contornar o SSL Pinning, mas também de um servidor proxy de qualidade. Para trabalhar com plataformas publicitárias (Facebook Ads, TikTok Ads) e marketplaces, recomendamos usar proxies móveis — eles têm o mais alto nível de confiança em sistemas antifraude e permitem emular corretamente um ambiente móvel real.
```