
Bypass automatizzato del SSL pinning per qualsiasi versione di Flutter e Shorebird — L’analisi statica di PyGhidra scopre automaticamente BoringSSL e genera script Frida e Renef pronti all’uso.
Esegue il reverse engineering di libflutter.so con PyGhidra per localizzare la funzione di verifica dei certificati SSL, quindi genera script di bypass pronti all'uso per Frida e Renef.
libflutter.so senza interfaccia e cerca tutte le stringhe definite contenenti ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js) che modifica il valore di ritorno a ptr(1) (SSL_VERIFY_OK) a runtimeflutter_ssl_pinning.lua) che utilizza Memory.patch per sovrascrivere l'entry della funzione con MOV X0, #1 ; RET (ARM64)Imposta
GHIDRA_INSTALL_DIRnel tuo ambiente, oppure passa--ghidra-install-dir.
# Analizza libflutter.so e genera entrambi gli script
python3 flutter_ssl_pinning.py libflutter.so
# Esegui con Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Esegui con Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| Argomento | Default | Descrizione |
|---|---|---|
binary | (obbligatorio) | Percorso di libflutter.so |
output | flutter_ssl_pinning | Nome base dell'output (genera <nome>.js e <nome>.lua) |
--module | libflutter.so | Nome del modulo nel processo target |
--ghidra-install-dir | auto | Directory di installazione di Ghidra |
| File | Strumento | Meccanismo |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
Vedi la directory example/ per un esempio di output generato.
| Target | Stato |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ Funzionante |
| Build Flutter con patch Shorebird | ✅ Funzionante |
| Ghidra 12.x + pyghidra | ✅ Funzionante |
| Frida 17.x e 16.x | ✅ Funzionante |
| Renef (ultima versione) | ✅ Funzionante |
Sia Google Flutter che Shorebird utilizzano lo stesso motore SSL in
libflutter.so. Il RVA scoperto automaticamente è identico tra i diversi tipi di build per la stessa versione del motore Flutter.
Oltre a bypassare il pinning per un MITM basato su proxy, puoi catturare il traffico HTTP
decifrato direttamente in Frida con lo script autonomo flutter_http_monitor.py.
Individua automaticamente SSL_write/SSL_read di BoringSSL in libflutter.so
(qualsiasi versione di Flutter, arm64) e genera uno script Frida che stampa le
richieste e le risposte in chiaro — riassemblate, de-chunked, gunzip e formattate con JSON pretty-print.
pip install capstone pyelftools
# analizza il binario e genera il monitor (oppure passa un .apk)
python3 flutter_http_monitor.py path/to/libflutter.so -o monitor.js
# eseguilo contro l'app
frida -U -f com.target.app -l monitor.js
Opzionale, nella REPL di Frida: addScope('api.example.com') per osservare solo
host specifici (scope stile Burp). Singolo file — nient'altro da distribuire.
Questo strumento è destinato esclusivamente a ricerche di sicurezza autorizzate e test di penetrazione.
Non utilizzarlo contro app che non possiedi o per le quali non hai esplicita autorizzazione scritta.