
Bypass automatizado de fijación SSL para cualquier versión de Flutter y Shorebird — El análisis estático de PyGhidra descubre automáticamente BoringSSL y genera scripts de Frida y Renef listos para ejecutar.
Ingeniería inversa de libflutter.so con PyGhidra para localizar la función de verificación del certificado SSL, luego genera scripts de omisión listos para usar tanto para Frida como para Renef.
libflutter.so sin interfaz gráfica y escanea todas las cadenas definidas en busca de ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js) que parchea el valor de retorno a ptr(1) (SSL_VERIFY_OK) en tiempo de ejecuciónflutter_ssl_pinning.luaMemory.patchMOV X0, #1 ; RETEstablece
GHIDRA_INSTALL_DIRen tu entorno, o pasa--ghidra-install-dir.
# Analiza libflutter.so y genera ambos scripts
python3 flutter_ssl_pinning.py libflutter.so
# Ejecutar con Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Ejecutar con Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| Argumento | Por defecto | Descripción |
|---|---|---|
binary | (requerido) | Ruta a libflutter.so |
output | flutter_ssl_pinning | Nombre base de salida (genera <name>.js y <name>.lua) |
--module | libflutter.so | Nombre del módulo en el proceso objetivo |
--ghidra-install-dir | auto | Directorio de instalación de Ghidra |
| Archivo | Herramienta | Mecanismo |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
Consulta el directorio example/ para ver un ejemplo de salida generada.
| Objetivo | Estado |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ Funciona |
| Shorebird-patched Flutter builds | ✅ Funciona |
| Ghidra 12.x + pyghidra | ✅ Funciona |
| Frida 17.x y 16.x | ✅ Funciona |
| Renef (latest) | ✅ Funciona |
Tanto Google Flutter como Shorebird usan el mismo motor SSL de
libflutter.so. La RVA descubierta automáticamente es idéntica entre tipos de compilación para la misma versión del motor de Flutter.
Además de omitir el pinning para un MITM basado en proxy, puedes capturar tráfico HTTP descifrado directamente en Frida con el script autónomo flutter_http_monitor.py. Localiza automáticamente BoringSSL SSL_write/SSL_read en libflutter.so (cualquier versión de Flutter, arm64) y genera un script de Frida que imprime solicitudes y respuestas en texto plano — reensambladas, sin chunks, descomprimidas y con formato JSON bonito.
pip install capstone pyelftools
# escanea el binario y genera el monitor (o pasa un .apk)
python3 flutter_http_monitor.py path/to/libflutter.so -o monitor.js
# ejecútalo contra la app
frida -U -f com.target.app -l monitor.js
Opcional, en vivo en el REPL de Frida: addScope('api.example.com') para vigilar solo hosts específicos (ámbito estilo Burp). Un solo archivo — nada más que enviar.
Esta herramienta está destinada únicamente a la investigación de seguridad autorizada y pruebas de penetración.
No la uses contra aplicaciones que no poseas o para las que no tengas permiso explícito por escrito para probar.