MASTG-TECH-0064: Contornando Certificate Pinning
Alguns aplicativos implementam SSL Pinning, o que impede que o aplicativo aceite seu certificado de interceptação como um certificado válido. Isso significa que você não conseguirá monitorar o tráfego entre o aplicativo e o servidor.
Para a maioria dos aplicativos, o certificate pinning pode ser contornado em questão de segundos, mas apenas se o app utilizar as funções de API cobertas por essas ferramentas. Se o aplicativo estiver implementando SSL Pinning com um framework ou biblioteca personalizada, o SSL Pinning deve ser corrigido e desativado manualmente, o que pode ser demorado.
Esta seção descreve várias maneiras de contornar o SSL Pinning e oferece orientações sobre o que fazer quando as ferramentas existentes não funcionam.
Métodos para Dispositivos com e sem Jailbreak¶
Se você tem um dispositivo com jailbreak e o frida-server instalado, pode contornar o SSL pinning executando o seguinte comando do objection (consulte Injetando Frida Gadget em um IPA Automaticamente se estiver usando um dispositivo sem jailbreak):
ios sslpinning disable
Aqui está um exemplo da saída:

Consulte também a Ajuda do Objection sobre Desativação do SSL Pinning para iOS para obter mais informações e inspecione o arquivo pinning.ts para entender como o bypass funciona.
Métodos Apenas para Dispositivos com Jailbreak¶
Se você tem um dispositivo com jailbreak, pode tentar uma das seguintes ferramentas que podem desativar automaticamente o SSL Pinning:
- "SSL Kill Switch 2" é uma maneira de desativar o certificate pinning. Pode ser instalado via loja Cydia. Ele se conecta a todas as chamadas de API de alto nível e contorna o certificate pinning.
- O aplicativo Burp Suite também pode ser usado para contornar o certificate pinning.
Quando os Bypasses Automatizados Falham¶
Tecnologias e sistemas mudam com o tempo, e algumas técnicas de bypass podem eventualmente não funcionar. Portanto, é parte do trabalho do testador fazer alguma pesquisa, já que nem toda ferramenta consegue acompanhar as versões do sistema operacional com rapidez suficiente.
Alguns aplicativos podem implementar métodos personalizados de SSL pinning, então o testador também pode desenvolver novos scripts de bypass usando os existentes como base ou inspiração e utilizando técnicas semelhantes, mas direcionadas às APIs personalizadas do aplicativo. Aqui você pode inspecionar três bons exemplos de tais scripts:
- "objection - Módulo de Bypass de Pinning" (pinning.ts)
- "Frida CodeShare - ios10-ssl-bypass" por @dki
- "Contornando SSL Pinning em aplicativos ofuscados com OkHttp" por Jeroen Beckers
Outras Técnicas:
Se você não tem acesso ao código-fonte, pode tentar o binary patching:
- Se o certificate pinning do OpenSSL for usado, você pode tentar o binary patching.
- Às vezes, o certificado é um arquivo no bundle do aplicativo. Substituir o certificado pelo certificado do Burp pode ser suficiente, mas cuidado com a soma de verificação SHA do certificado. Se estiver codificado no binário, você também deve substituí-lo!
- Se você puder acessar o código-fonte, pode tentar desativar o certificate pinning e recompilar o aplicativo; procure por chamadas de API para
NSURLSession,CFStreameAFNetworkinge métodos/strings contendo palavras como "pinning", "X.509", "Certificate", etc.