
Contorno automático de SSL pinning para qualquer versão do Flutter & Shorebird — A análise estática do PyGhidra descobre automaticamente o BoringSSL e gera scripts prontos para execução do Frida e Renef
Realiza engenharia reversa do libflutter.so com PyGhidra para localizar a função de verificação de certificado SSL, e então gera scripts de bypass prontos para uso tanto para Frida quanto para Renef.
libflutter.so sem interface gráfica e varre todas as strings definidas em busca de ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js) que corrige o valor de retorno para ptr(1) (SSL_VERIFY_OK) em tempo de execuçãoflutter_ssl_pinning.luaMemory.patchMOV X0, #1 ; RETDefina
GHIDRA_INSTALL_DIRno seu ambiente, ou passe--ghidra-install-dir.
# Analyse libflutter.so and generate both scripts
python3 flutter_ssl_pinning.py libflutter.so
# Run with Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Run with Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| Argumento | Padrão | Descrição |
|---|---|---|
binary | (obrigatório) | Caminho para libflutter.so |
output | flutter_ssl_pinning | Nome base de saída (gera <name>.js e <name>.lua) |
--module | libflutter.so | Nome do módulo no processo alvo |
--ghidra-install-dir | auto | Diretório de instalação do Ghidra |
| Arquivo | Ferramenta | Mecanismo |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
Veja o diretório example/ para exemplos de saída gerada.
| Alvo | Status |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ Funcionando |
| Builds Flutter corrigidas pelo Shorebird | ✅ Funcionando |
| Ghidra 12.x + pyghidra | ✅ Funcionando |
| Frida 17.x e 16.x | ✅ Funcionando |
| Renef (última versão) | ✅ Funcionando |
Tanto o Google Flutter quanto o Shorebird usam o mesmo mecanismo SSL do
libflutter.so. O RVA descoberto automaticamente é idêntico entre os tipos de build para a mesma versão do motor Flutter.
Além de contornar o pinning para um MITM baseado em proxy, você pode capturar o tráfego HTTP descriptografado diretamente no Frida com o flutter_http_monitor.py autocontido. Ele localiza automaticamente o BoringSSL SSL_write/SSL_read no libflutter.so (qualquer versão do Flutter, arm64) e gera um script Frida que imprime as requisições e respostas em texto claro — remontadas, sem chunking, descompactadas com gzip e formatadas com JSON pretty-print.
pip install capstone pyelftools
# scan the binary and generate the monitor (or pass an .apk)
python3 flutter_http_monitor.py path/to/libflutter.so -o monitor.js
# run it against the app
frida -U -f com.target.app -l monitor.js
Opcional, ao vivo no REPL do Frida: addScope('api.example.com') para observar apenas hosts específicos (escopo estilo Burp). Arquivo único — nada mais para enviar.
Esta ferramenta é destinada apenas para pesquisa de segurança autorizada e testes de penetração.
Não a utilize contra aplicativos que você não possui ou para os quais não tenha permissão explícita por escrito para testar.