
تجاوز تثبيت SSL آلي لأي إصدار من Flutter و Shorebird — تحليل ثابت بواسطة PyGhidra يكتشف BoringSSL تلقائياً ويولد سكريبتات Frida و Renef الجاهزة للتنفيذ
يقوم بعملية الهندسة العكسية لـ libflutter.so باستخدام PyGhidra لتحديد وظيفة التحقق من شهادة SSL، ثم يصدر نصوص برمجية جاهزة للاستخدام لتجاوزها لكل من Frida و Renef.
libflutter.so بدون واجهة ويمسح جميع السلاسل المحددة بحثًا عن ssl_clientssl_crypto_x509_session_verify_cert_chainflutter_ssl_pinning.js) الذي يقوم بتعديل القيمة المُعادة إلى ptr(1) (SSL_VERIFY_OK) في وقت التشغيلflutter_ssl_pinning.lua) الذي يستخدم Memory.patch لاستبدال مدخل الوظيفة بـ MOV X0, #1 ; RET (ARM64)brew install ghidrapip install pyghidrapip install frida-tools أو Renef — renef.ioقم بتعيين
GHIDRA_INSTALL_DIRفي بيئتك، أو مرر--ghidra-install-dir.
# Analyse libflutter.so and generate both scripts
python3 flutter_ssl_pinning.py libflutter.so
# Run with Frida
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Run with Renef
renef -s com.example.app -l flutter_ssl_pinning.lua
| الوسيط | الإفتراضي | الوصف |
|---|---|---|
binary | (مطلوب) | مسار libflutter.so |
output | flutter_ssl_pinning | الاسم الأساسي للنواتج (يُنشئ <name>.js و <name>.lua) |
--module | libflutter.so | اسم الوحدة في العملية المستهدفة |
--ghidra-install-dir | تلقائي | دليل تثبيت Ghidra |
| الملف | الأداة | الآلية |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
انظر إلى مجلد example/ للحصول على نموذج من النواتج المُنشأة.
| الهدف | الحالة |
|---|---|
Google Flutter libflutter.so (arm64-v8a) | ✅ يعمل |
| إصدارات Flutter المُصححة بواسطة Shorebird | ✅ يعمل |
| Ghidra 12.x + pyghidra | ✅ يعمل |
| Frida 17.x و 16.x | ✅ يعمل |
| Renef (الأحدث) | ✅ يعمل |
يستخدم كل من Google Flutter و Shorebird نفس محرك SSL في
libflutter.so. عنوان RVA المُكتشف تلقائيًا متطابق عبر أنواع البناء لنفس إصدار محرك Flutter.
بالإضافة إلى تجاوز التثبيت لـ MITM القائم على الوكيل، يمكنك التقاط حركة HTTP المُفككة مباشرة في Frida باستخدام flutter_http_monitor.py المتكامل. يقوم بتحديد موقع BoringSSL SSL_write/SSL_read تلقائيًا في libflutter.so (أي إصدار من Flutter، arm64) ويُنشئ نص Frida الذي يطبع الطلبات والاستجابات بالنص العادي — مُعاد تجميعها، بدون تجزئة، مُفكوكة الضغط، ومُنسقة 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
اختياري، في REPL لـ Frida: addScope('api.example.com') لمشاهدة مضيفين محددين فقط (نطاق على غرار Burp). ملف واحد — لا شيء آخر لشحنه.
هذه الأداة مخصصة فقط للبحث الأمني المصرح به واختبار الاختراق.
لا تستخدمها ضد تطبيقات لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.