Automatisierte SSL-Pinning-Umgehung für jede Flutter- & Shorebird-Version — PyGhidra Static-Analyse entdeckt automatisch BoringSSL und erstellt fertig ausführbare Frida- & Renef-Skripte
Dekompliliert libflutter.so mit PyGhidra, um die SSL-Zertifikatsprüfungsfunktion zu lokalisieren, und erstellt dann einsatzbereite Umgehungsskripte für Frida und Renef.
libflutter.so headless und durchsucht alle definierten Strings nach ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js), das den Rückgabewert zur Laufzeit auf ptr(1) (SSL_VERIFY_OK) patchtflutter_ssl_pinning.lua), das Memory.patch verwendet, um den Funktions-Einstieg mit MOV X0, #1 ; RET (ARM64) zu überschreibenbrew install ghidrapip install pyghidrapip install frida-tools oder Renef — renef.ioSetzen Sie
GHIDRA_INSTALL_DIRin Ihrer Umgebung oder übergeben Sie--ghidra-install-dir.
# Analyse von libflutter.so und Generieren beider Skripte
python3 flutter_ssl_pinning.py libflutter.so
# Ausführen mit Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Ausführen mit Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| Argument | Standard | Beschreibung |
|---|---|---|
binary | (erforderlich) | Pfad zu libflutter.so |
output | flutter_ssl_pinning | Basisname der Ausgabe (erzeugt <name>.js und <name>.lua) |
--module | libflutter.so | Modulname im Zielprozess |
--ghidra-install-dir | automatisch | Ghidra-Installationsverzeichnis |
| Datei | Werkzeug | Mechanismus |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
Siehe das example/-Verzeichnis für Beispielausgaben.
| Ziel | Status |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ Funktioniert |
| Shorebird-patched Flutter builds | ✅ Funktioniert |
| Ghidra 12.x + pyghidra | ✅ Funktioniert |
| Frida 17.x and 16.x | ✅ Funktioniert |
| Renef (latest) | ✅ Funktioniert |
Sowohl Google Flutter als auch Shorebird verwenden die gleiche
libflutter.soSSL-Engine. Die automatisch ermittelte RVA ist bei verschiedenen Build-Typen für dieselbe Flutter-Engine-Version identisch.
Neben der Umgehung des Pinnings für einen proxy-basierten MITM können Sie entschlüsselten HTTP-Verkehr direkt in Frida mit dem eigenständigen flutter_http_monitor.py aufzeichnen. Es lokalisiert automatisch BoringSSL SSL_write/SSL_read in libflutter.so (jede Flutter-Version, arm64) und erzeugt ein Frida-Skript, das Klartext-Anfragen und -Antworten ausgibt — neu zusammengesetzt, ent-chunkt, entpackt und JSON hübsch gedruckt.
pip install capstone pyelftools
# das Binary scannen und den Monitor generieren (oder eine .apk übergeben)
python3 flutter_http_monitor.py path/to/libflutter.so -o monitor.js
# gegen die App ausführen
frida -U -f com.target.app -l monitor.js
Optional, live in der Frida-REPL: addScope('api.example.com'), um nur bestimmte Hosts zu überwachen (Burp-ähnlicher Bereich). Einzige Datei — nichts weiter nötig.
Dieses Tool ist nur für autorisierte Sicherheitsforschung und Penetrationstests vorgesehen.
Verwenden Sie es nicht gegen Apps, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Erlaubnis zum Testen haben.