Bypass SSL Pinning Using reFlutter Framework

Aplikasi Flutter sedikit berbeda dan sulit untuk mem-bypass pinning ssl. Ada banyak metode untuk mem-bypass pinning ssl untuk aplikasi flutter dan pada catatan ini akan menunjukkan salah satu metode untuk melewati pinning ssl menggunakan reflutter framework.

Framework ini membantu reverse engineering aplikasi flutter menggunakan versi tambalan library flutter yang sudah dikompilasi dan siap untuk pengemasan ulang aplikasi. Library ini memiliki proses deserialisasi snapshot yang dimodifikasi untuk memungkinkan dilakukannya analisis dinamis.

Untuk dapat melakukan bypass SSL Pinning menggunakan reFlutter ini, harus tersedia beberapa alat atau perangkat lunak berikut ini :

Untuk mengintall tools reFlutter tersebut, dapat menginstalnya dengan cara menggunakan pip menggunakan perintah berikut.

$ pip3 install reflutter

Untuk mendemokan SSL pinning bypass pada aplikasi flutter akan menggunakan aplikasi flutter-test-appsarrow-up-right.

Setelah reFlutter dan aplikasi flutter telah siap, langkah selanjutnya adalah menjalankan reflutter untuk mengeksekusi file .apk dari target aplikasi flutternya dengan cara menjalankan perintah berikut.

$ reflutter flutter-apps.apk

Ketika berhasil dijalankan, pilih opsi [1] “Traffic Monitoring and Interception” kemudian masukan IP pada burpsuite. IP Proxy dapat dilihat pada fitur Proxy > Proxy Setting > Add Proxy Listener > specific address

Jika telah selesai proses nya, dapat dilihat akan ada muncul file baru bernama release.RE.apk

Setelah selesai, maka akan mendapatkan release.RE.apk tapi file apk ini belum memiliki sign, maka perlu dilakukan re-signing dengan cara manual pada apk release.RE.apk. Untuk melakukan re-signing dapat menggunakan beberapa cara, disini akan dicontohkan dengan menggunakan uber-apk-signingarrow-up-right.

Setelah mendownload uber-apk-signing, langkah selanjutnya adalah menjalankan perintah seperti dibawah ini agar dapat memproses re-signing file apk release.RE.apk.

$ java -jar uber-apk-signer-1.3.0.jar --apk release.RE.apk

Jika sukses dalam proses re-signing menggunakan uber-apk-signer maka akan muncul file baru bernama release.RE-aligned-debugSigned.apk. Sekarang install signed apk di device android.

$ adb install release.RE-aligned-debugSigned.apk

Untuk langkah selanjutnya, lakukan konfigurasi proxy di burpsuite. Buka tab Proxy > Proxy Settings > Add Proxy Listener

Ubah port 8083 karena reFlutter menyetelnya secara default.

Pada tab Request handling, enable Support invisible proxying dan klik OK.

Selanjutnya, buka apk yang sebelumnya telah diinstall, dan lakukan request. Pastikan Burp Suite telah mode intercept agar dapat melakukan pencegahan pada setiap requestnya.

Ketika Burp Suite berhasil melakukan intercept terhadap request yang dikirimkan oleh client, maka request akan tertahan terlebih dahulu dan pada aplikasi demo akan memunculkan status Calling dan tampilan Burp Suite saat berhasil melakukan intercept akan terlihat seperti berikut.

Dan ketika di forward atau di nonaktifkan mode intercept yang ada pada Burp Suite nya status pada apk demo akan berubah menjadi SUCCESS.

Maka dari itu, sekarang sudah berhasil melakukan intercept HTTP/S dari aplikasi berbasis flutter dengan melakukan bypassing SSL pinning menggunakan reFlutter framework.

Thanks, Stay Ethical & Happy Hacking! 🍻

Last updated