Bypass SSL Pinning Android dengan Frida

Oke ini hanyalah catatan singkat mengenai bagaimana cara kita melakukan bypass SSL Pinning pada aplikasi Android. SSL Pinning sepertinya menjadi salahsatu keamanan tambahan selain root detection pada aplikasi mobile modern. Hal ini bagus karena artinya trafik didalam aplikasi tidak akan bisa di sniffing dengan mudah. Namun bagi seorang pentester tentu hal ini harus bisa diakali agar kita bisa melihat dan memodifikasi request didalam aplikasi.

Pendahuluan

SSL pinning adalah teknik keamanan yang digunakan untuk memastikan bahwa aplikasi selalu terhubung ke server yang benar-benar dimaksudkan. Teknik ini mencegah serangan Man-in-the-Middle (MITM) yang dapat terjadi jika attacker dapat membuat certificate baru yang dipercaya oleh aplikasi/sistem operasi. Namun, SSL pinning bisa menjadi kendala bagi para pentester yang ingin melakukan pengujian keamanan pada aplikasi. Oleh karena itu, SSL pinning bypass perlu dilakukan agar para pentester dapat melakukan pengujian keamanan pada aplikasi tanpa terkendala oleh teknik keamanan tersebut.

Persiapan

Mungkin langsung saja ya ke praktiknya. Berikut beberapa hal yang harus disiapkan atau diinstall:

  • Burpsuite
  • ADB Shell
  • Android Emulator (Genymotion)
  • Frida

Untuk instalasi Genymotion bisa ikuti tutorial yang sudah pernah saya tulis sebelumnya:

Di tulisan tersebut saya juga membahas mengenai pemasangan certificate burp di level system, serta alasan kenapa kalian harus menginstall Oxy Proxy. Sehingga ketika membaca tutorial ini saya asumsikan apa yang sudah tertulis disana sudah diikuti.

Install Frida

Di tutorial ini saya menggunakan Kali Linux. Namun seharusnya untuk instalasi Frida caranya sama. Kita gunakan pip.

sudo pip3 install --upgrade frida

sudo pip3 install --upgrade frida-tools

Pada saat tutorial ini ditulis, frida terbaru adalah versi 16.1.8.

Maka, untuk versi Frida server yang terpasang pun harus versi tersebut.

Selanjutnya, masuk ke shell di emulator melalui adb shell. Chek arsitektur menggunakan perintah getprop ro.product.cpu.abilist.

Dari output diatas, kita akan menggunakan frida-server x86, versi 16.1.8. Masih dari adb-shell, jalankan command berikut:

mkdir /data/local/frida

cd /data/local/frida

Sekarang, melalui terminal linux kita unduh frida server, extract, lalu unggah ke android emulator.

wget https://github.com/frida/frida/releases/download/16.1.8/frida-server-16.1.8-android-x86.xz

unxz frida-server-16.1.8-android-x86.xz

adb push frida-server-16.1.8-android-x86 /data/local/frida/

Maka seharusnya sekarang di direktori /data/local/frida pada Android Emulator sudah ada file frida-server yang kita unggah. Tambahkan hak akses eksekusi ke file tersebut, dan jalankan frida-server agar frida di laptop kita dapat terhubung ke emulator android.

File frida-server ini harus terus berjalan selama kita ingin menghubungkan laptop attacker kita dengan frida-server di android emulator.

Untuk mengkonfirmasi apakah frida sudah terhubung, kalian bisa jalankan command berikut di terminal:

frida-ps -Uai

Demo: Bypass SSL Pinning

Sebagai bahan demo di tutorial ini, saya menggunakan file dari link berikut:

  • https://github.com/httptoolkit/android-ssl-pinning-demo/

Setelah mengunduh file APK nya dari release page, saya menginstall file .apk tersebut via adb.

adb install pinning-demo.apk

Selanjutnya, nyalakan Burpsuite, dan pastikan proxy listener kalian berjalan.

Selanjutnya nyalakan juga proxy melalui Oxy Proxy.

Maka, ketika aplikasi SSL Pinning Demo tadi kita buka dan klik tombol yang ada disana satu persatu, maka pinned request testnya semuanya gagal.


Selanjutnya, disini saya akan mencoba melakukan bypass SSL pinning menggunakan script yang sudah tersedia di codeshare. Berikut untuk linknya:

  • https://codeshare.frida.re/@fdciabdul/frida-multiple-bypass/

Cukup copy isi script yang ada di codeshare tersebut, lalu simpan ke file text.

Namun sebelumnya, jalankan perintah berikut:

frida-ps -Uai

Perintah diatas untuk mengetahui identifier dari aplikasi yang akan di bypass. Disini diketahui bahwa identifier dari SSL Pinning Demo adalah tech.httptoolkit.pinning_demo

Selanjutnya jalankan hooking menggunakan frida untuk membuka aplikasi SSL Pinning Demo.

frida -U -f tech.httptoolkit.pinning_demo -l frida-multiple-bypass

"frida-multiple-bypass" adalah nama script yang saya pakai untuk menyimpan script dari codeshare diatas. Silahkan sesuaikan sendiri ya.

Selanjutnya, ketika kita klik tombol cek nya satu persatu, harusnya script ini mampu melakukan bypass hampir semua metode pinning yang ada di aplikasi.

Penutup

SSL pinning adalah teknik keamanan yang digunakan untuk memastikan bahwa aplikasi selalu terhubung ke server yang benar-benar dimaksudkan. Teknik ini mencegah serangan Man-in-the-Middle (MITM) yang dapat terjadi jika attacker dapat membuat certificate baru yang dipercaya oleh aplikasi/sistem operasi.

Namun, SSL pinning bisa menjadi kendala bagi para pentester yang ingin melakukan pengujian keamanan pada aplikasi. Oleh karena itu, SSL pinning bypass perlu dilakukan agar para pentester dapat melakukan pengujian keamanan pada aplikasi tanpa terkendala oleh teknik keamanan tersebut. 

Berdasarkan artikel yang saya temukan, SSL pinning bisa dibypass dengan berbagai cara, seperti reverse engineering, dan atau menggunakan Frida. Semua SSL pinning bisa dibypass jika kita diberikan aplikasinya. Namun, pentester harus memahami tujuan SSL pinning dan tidak memberi saran yang salah ke programmer .

Posting Komentar untuk "Bypass SSL Pinning Android dengan Frida"