
Contournement automatisé du SSL pinning pour toute version de Flutter et Shorebird — l'analyse statique PyGhidra découvre automatiquement BoringSSL et génère des scripts Frida et Renef prêts à l'emploi
Effectue la rétro-ingénierie de libflutter.so avec PyGhidra pour localiser la fonction de vérification des certificats SSL, puis génère des scripts de contournement prêts à l'emploi pour Frida et Renef.
libflutter.so sans interface et analyse toutes les chaînes définies pour ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js) qui patche la valeur de retour à ptr(1) (SSL_VERIFY_OK) à l'exécutionflutter_ssl_pinning.lua) qui utilise Memory.patch pour écraser l'entrée de la fonction avec MOV X0, #1 ; RET (ARM64)Définissez
GHIDRA_INSTALL_DIRdans votre environnement, ou passez--ghidra-install-dir.
# Analyse libflutter.so et génère les deux scripts
python3 flutter_ssl_pinning.py libflutter.so
# Exécution avec Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Exécution avec Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| Argument | Défaut | Description |
|---|---|---|
binary | (obligatoire) | Chemin vers libflutter.so |
output | flutter_ssl_pinning | Nom de base de sortie (génère <name>.js et <name>.lua) |
--module | libflutter.so | Nom du module dans le processus cible |
--ghidra-install-dir | auto | Répertoire d'installation de Ghidra |
| Fichier | Outil | Mécanisme |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
Voir le répertoire example/ pour un exemple de sortie générée.
| Cible | Statut |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ Fonctionne |
| Builds Flutter patchés par Shorebird | ✅ Fonctionne |
| Ghidra 12.x + pyghidra | ✅ Fonctionne |
| Frida 17.x et 16.x | ✅ Fonctionne |
| Renef (dernière version) | ✅ Fonctionne |
Google Flutter et Shorebird utilisent tous deux le même moteur SSL
libflutter.so. Le RVA découvert automatiquement est identique pour tous les types de build d'une même version du moteur Flutter.
En plus de contourner le pinning pour un MITM basé sur un proxy, vous pouvez capturer le trafic HTTP déchiffré directement dans Frida avec le script autonome flutter_http_monitor.py. Il localise automatiquement SSL_write/SSL_read de BoringSSL dans libflutter.so (toute version de Flutter, arm64) et génère un script Frida qui affiche les requêtes et réponses en clair — réassemblées, dé-chunkées, décompressées et joliment formatées en JSON.
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
Optionnel, en direct dans la REPL Frida : addScope('api.example.com') pour surveiller uniquement des hôtes spécifiques (scope style Burp). Un seul fichier — rien d'autre à fournir.
Cet outil est destiné uniquement à la recherche en sécurité autorisée et aux tests d'intrusion.
Ne l'utilisez pas contre des applications que vous ne possédez pas ou pour lesquelles vous n'avez pas d'autorisation écrite explicite de tester.