
Kit de herramientas Frida que elude el pinning de certificados SSL/TLS en aplicaciones Android, enganchando Java TrustManager, OkHttp, Conscrypt y las capas nativas de OpenSSL/BoringSSL.
Bypass Universal de SSL/TLS Certificate Pinning para Android
Autor: Danieldev (GitHub: @danieldev23 | Telegram: @zadevz)
Un toolkit completo de Frida que derrota el SSL pinning en cualquier aplicación de Android — cubriendo tanto las capas Java como Native, desde el pinning estándar de OkHttp hasta la implementación nativa personalizada proxygen de Facebook.
| Característica | Estado |
|---|---|
| Java TrustManager / SSLContext | ✅ |
| HostnameVerifier (Permite todos los hostnames) | ✅ |
| OkHttp CertificatePinner (Estándar) | ✅ |
| OkHttp Ofuscado (FB, apps bancarias) | ✅ |
| Conscrypt / Proveedor TLS de Android | ✅ |
| NetworkSecurityConfig (Android 7.0+) | ✅ |
| Bypass de errores SSL de WebViewClient | ✅ |
| Cliente Apache HTTP (Apps heredadas) | ✅ |
| Librería de Pinning TrustKit | ✅ |
| OpenSSL / BoringSSL Nativo | ✅ |
Flutter (ssl_verify_peer_cert) | ✅ |
Facebook Proxygen (verifyWithMetrics) | ✅ |
| Auto-detección de módulos SSL cargados | ✅ |
| Reemplazo Nativo con CModule (0ms de sobrecarga) | ✅ |
| Script | Descripción |
|---|---|
scripts/universal_bypass.js | Script universal — funciona en cualquier aplicación de Android |
scripts/fb4a_bypass.js | Script optimizado específicamente para Facebook (FB4A) con símbolos confirmados por Ghidra |
pip install frida-tools)frida-server ejecutándose en /data/local/tmp/ en el dispositivorun.sh# Clone the repository
git clone https://github.com/danieldev23/frida-ssl-bypass.git
cd frida-ssl-bypass
# Make the runner executable
chmod +x run.sh
# ── Universal bypass (Any app) ──
./run.sh -p com.example.app # Attach to running app
./run.sh -p com.example.app -m spawn # Spawn app and hook
# ── Facebook specific bypass ──
./run.sh -p com.facebook.katana -s fb4a # FB4A optimized mode
./run.sh # Default: Attach to Facebook
# ── Direct Frida CLI usage ──
frida -U -f com.instagram.android -l scripts/universal_bypass.js
frida -U -p 1234 -l scripts/universal_bypass.js
run.sh)./run.sh [options]
-p, --package <name> Target package name (default: com.facebook.katana)
-s, --script <name> Script to use: fb4a | universal (default: universal)
-m, --mode <mode> Mode: attach | spawn (default: attach)
-h, --help Show help message
SSLContext.init() → Injects TrustAllManager (trusts all certificates)
HostnameVerifier → Returns true for all domain names
CertificatePinner.check() → Noop (scans for standard and obfuscated classes)
Conscrypt → Bypasses certificate chain verification
NetworkSecurityConfig → Trusts user-added CA certificates
WebViewClient → Automatically proceeds on SSL errors
SSL_CTX_set_verify() → Forces SSL_VERIFY_NONE (0)
SSL_get_verify_result() → Always returns X509_V_OK (0)
SSL_set_custom_verify() → Disables custom verification callback
verifyWithMetrics() → CModule stub returns TRUE (Facebook Proxygen)
ssl_verify_peer_cert() → Returns 1 (Flutter / Dart Engine)
El toolkit auto-detecta los módulos SSL cargados en memoria usando dos estrategias:
android_dlopen_ext / dlopen para interceptar las librerías SSL nativas a medida que se cargan en RAM (con fallback de sondeo con retroceso).frida-ssl-bypass/
├── README.md # Documentation (English)
├── LICENSE # MIT License
├── run.sh # Auto-runner script for frida-server & hooks
├── .gitignore
└── scripts/
├── universal_bypass.js # Universal bypass script for any app
└── fb4a_bypass.js # FB4A specific optimized bypass script
Este proyecto está destinado estrictamente a investigación de seguridad y fines educativos. Utilice esta herramienta únicamente en aplicaciones que posea o para las que tenga autorización explícita de auditar. El autor no asume ninguna responsabilidad por cualquier uso indebido.
Distribuido bajo la Licencia MIT — Consulte LICENSE para más detalles.
| Aplicación | Nombre del Paquete | Script Recomendado | Notas |
|---|
com.facebook.katana | fb4a / universal | Bypass de Proxygen Nativo C/C++ | |
com.instagram.android | universal | OkHttp + OpenSSL Nativo | |
com.whatsapp | universal | Noise Protocol + SSL Nativo | |
| Twitter / X | com.twitter.android | universal | Pinning de OkHttp |
| TikTok | com.zhiliaoapp.musically | universal | Verificación personalizada de BoringSSL |
| Apps Bancarias | varía | universal | Conscrypt + TrustKit |
| Apps Flutter | varía | universal | Hookea la cadena de verificación en libflutter.so |
| React Native | varía | universal | Cubre la capa subyacente de OkHttp |