Anda mengatur proxy, menghubungkan perangkat β dan aplikasi tetap tidak menunjukkan lalu lintas atau mengalami kesalahan. Kemungkinan besar, masalahnya terletak pada SSL Pinning: perlindungan yang sengaja diintegrasikan oleh pengembang ke dalam aplikasi untuk memblokir penyadapan permintaan HTTPS. Ini menjadi masalah bagi siapa saja yang menganalisis perilaku aplikasi pesaing, menguji integrasi iklan, atau mempelajari API pasar.
Dalam panduan ini, kita akan membahas apa itu SSL Pinning, mengapa itu menghalangi kerja dengan proxy, dan bagaimana cara mengatasinya β langkah demi langkah, tanpa teori yang berlebihan.
Apa itu SSL Pinning dan mengapa itu diintegrasikan ke dalam aplikasi
SSL Pinning (atau Certificate Pinning) adalah mekanisme keamanan di mana aplikasi mobile "menanamkan" sertifikat SSL tertentu atau kunci publik server ke dalam dirinya. Setiap kali terhubung, aplikasi memeriksa: apakah sertifikat server cocok dengan yang tertanam di dalamnya? Jika tidak β koneksi terputus.
Dalam skema HTTPS biasa, browser atau aplikasi mempercayai sertifikat apa pun yang ditandatangani oleh otoritas sertifikasi (CA) yang tepercaya. Inilah yang dimanfaatkan oleh alat proxy seperti Charles Proxy atau mitmproxy: mereka menyisipkan sertifikat mereka sendiri, mendekripsi lalu lintas, dan meneruskannya. Pengguna melihat semua pertukaran data dalam bentuk terbuka.
SSL Pinning merusak skema ini. Aplikasi melihat sertifikat alat proxy, memahami bahwa itu tidak cocok dengan sertifikat "asli" server, dan menolak untuk bekerja. Itulah sebabnya Anda melihat kesalahan seperti SSL handshake failed, Certificate verification failed atau hanya layar kosong di aplikasi.
Pengembang menerapkan SSL Pinning karena beberapa alasan:
- Perlindungan dari serangan Man-in-the-Middle (MITM)
- Untuk mencegah rekayasa balik API
- Perlindungan dari bot dan permintaan otomatis
- Menyembunyikan logika monetisasi dan integrasi iklan internal
Di antara aplikasi yang secara aktif menggunakan SSL Pinning: aplikasi perbankan, pasar (Wildberries, Ozon), SDK iklan (Facebook, TikTok), sistem pembayaran, dan platform e-commerce besar. Itulah sebabnya bypass SSL Pinning sangat penting bagi pemasar, arbitrase, dan spesialis analisis pesaing.
Mengapa proxy tidak berfungsi jika aplikasi memiliki SSL Pinning
Ketika Anda mengatur proxy di ponsel (misalnya, melalui pengaturan Wi-Fi), semua lalu lintas HTTP dan HTTPS melewati server proxy. Untuk HTTP, ini berfungsi tanpa masalah β lalu lintas sudah terbuka. Tetapi untuk HTTPS, alat proxy harus "menyamar" sebagai server dengan menyisipkan sertifikatnya sendiri.
Di sinilah konflik muncul. Aplikasi biasa menerima sertifikat ini jika Anda telah menginstal sertifikat root alat proxy di penyimpanan sistem perangkat. Namun, aplikasi dengan SSL Pinning mengabaikan penyimpanan sistem β mereka hanya memeriksa sertifikat "tertanam" mereka sendiri.
Bagaimana ini terlihat dalam praktik:
Anda menghubungkan Charles Proxy, menginstal sertifikat root-nya di iPhone, menjalankan aplikasi pasar β dan melihat kesalahan atau layar kosong. Di log Charles β tidak ada atau catatan dengan kesalahan SSL. Ini adalah gambaran klasik SSL Pinning dalam aksi.
Penting untuk dipahami: masalahnya bukan pada server proxy (residential, mobile, atau data center). Proxy di sini berfungsi sebagai node perantara untuk merutekan lalu lintas. Masalahnya ada pada aplikasi itu sendiri, yang menolak untuk menerima sertifikat yang telah diubah. Oleh karena itu, solusi harus dicari di tingkat aplikasi atau perangkat, bukan di tingkat server proxy.
Ada beberapa jenis SSL Pinning, dan mereka berbeda dalam tingkat kesulitan untuk dibypass:
| Jenis Pinning | Apa yang diperiksa | Tingkat kesulitan untuk dibypass |
|---|---|---|
| Certificate Pinning | Sertifikat server lengkap | Sedang |
| Public Key Pinning | Kunci publik dari sertifikat | Tinggi |
| Hash Pinning | Hash dari sertifikat atau kunci | Tinggi |
| Network Security Config | File konfigurasi Android (XML) | Rendahβsedang |
Alat untuk penyadapan lalu lintas: Charles, mitmproxy, Burp Suite
Sebelum melanjutkan ke bypass SSL Pinning, Anda perlu memilih alat untuk penyadapan lalu lintas. Semua alat ini bekerja dengan prinsip yang sama: mereka mengangkat server proxy lokal, melalui mana lalu lintas perangkat melewati. Perbedaannya terletak pada kenyamanan, fitur, dan harga.
Charles Proxy
Alat paling populer di kalangan pemasar dan penguji tanpa latar belakang teknis yang mendalam. Memiliki antarmuka grafis, bekerja di Windows dan macOS. Memungkinkan Anda melihat semua permintaan dan respons dalam pohon yang nyaman, menyaring berdasarkan domain, dan mengedit permintaan secara langsung. Berbayar, tetapi ada periode percobaan. Sangat cocok untuk analisis API pasar dan SDK iklan.
mitmproxy
Alat gratis dengan sumber terbuka. Bekerja melalui command line, tetapi ada antarmuka web (mitmweb). Sangat fleksibel: mendukung skrip untuk modifikasi otomatis lalu lintas. Cocok untuk mereka yang ingin mengotomatiskan analisis atau mengintegrasikan penyadapan ke dalam pipeline pengujian. Sedikit lebih sulit untuk diatur dibandingkan Charles.
Burp Suite
Alat profesional untuk pengujian keamanan. Memiliki versi Community gratis dengan fungsionalitas dasar. Sangat nyaman untuk analisis mendetail permintaan, bekerja dengan cookies dan sesi. Aktif digunakan dalam analisis API pesaing dan penelitian integrasi iklan. Antarmukanya lebih kompleks dibandingkan Charles, tetapi kemampuannya lebih luas.
| Alat | Antarmuka | Harga | Untuk siapa |
|---|---|---|---|
| Charles Proxy | GUI (mudah) | Berbayar (~$50) | Pemasar, analis |
| mitmproxy | CLI + Web UI | Gratis | Spesialis teknis |
| Burp Suite | GUI (kompleks) | Gratis / Pro | Penguji keamanan |
Untuk sebagian besar tugas pemasar atau arbitrase β analisis permintaan iklan, mempelajari API pasar, memantau lalu lintas aplikasi β Charles Proxy akan menjadi pilihan optimal. Jika Anda memerlukan otomatisasi atau bekerja tanpa GUI β mitmproxy.
Metode bypass SSL Pinning: dari yang sederhana ke yang canggih
Ada beberapa pendekatan untuk bypass SSL Pinning. Mereka berbeda dalam kesulitan, persyaratan perangkat, dan keandalan. Mari kita bahas masing-masing β dari yang paling sederhana hingga yang paling kuat.
Metode 1: Menginstal sertifikat di penyimpanan sistem (hanya Android)
Cara paling sederhana β tetapi hanya berfungsi untuk aplikasi yang menggunakan penyimpanan sertifikat sistem. Di Android hingga versi 7.0, sertifikat pengguna diterima sama dengan sertifikat sistem. Mulai Android 7.0, aplikasi secara default mengabaikan CA pengguna. Jika aplikasi secara eksplisit mengizinkan sertifikat pengguna di network_security_config.xml β metode ini akan berhasil. Untuk sebagian besar aplikasi modern dengan SSL Pinning β tidak akan membantu.
Metode 2: Frida β patching dinamis aplikasi
Frida adalah alat untuk instrumentasi dinamis aplikasi. Ini memungkinkan Anda untuk "menyadap" panggilan fungsi di dalam aplikasi dan mengubah perilakunya secara langsung. Untuk bypass SSL Pinning, ada skrip siap pakai yang menonaktifkan pemeriksaan sertifikat tanpa memodifikasi APK. Memerlukan root di Android atau jailbreak di iOS. Ini adalah metode yang paling andal dan serbaguna.
Metode 3: Patching APK (Android)
Dekompilasi file APK menggunakan apktool, menghapus atau memodifikasi kode SSL Pinning, membangun kembali dan menandatangani aplikasi. Tidak memerlukan root, tetapi memerlukan keterampilan teknis untuk bekerja dengan kode smali. Bekerja dengan baik untuk aplikasi dengan implementasi Pinning yang sederhana melalui Network Security Config. Untuk aplikasi dengan kode native (C/C++) β jauh lebih sulit.
Metode 4: Objection β pembungkus di atas Frida untuk pemula
Objection adalah alat berbasis Frida dengan antarmuka command line yang lebih sederhana. Memiliki perintah bawaan untuk bypass SSL Pinning dengan satu perintah: android sslpinning disable. Cocok untuk mereka yang tidak ingin repot menulis skrip Frida secara manual. Memerlukan root atau jailbreak.
Metode 5: Menggunakan emulator dengan root
Alih-alih perangkat fisik, Anda dapat menggunakan emulator Android (misalnya, Genymotion atau AVD standar dari Android Studio) dengan akses root diaktifkan. Ini memungkinkan Anda untuk menginstal sertifikat sistem dan menjalankan Frida tanpa risiko "brick" ponsel nyata. Pilihan yang nyaman untuk pengujian rutin di lingkungan kerja.
Langkah demi langkah bypass SSL Pinning di Android
Mari kita bahas skenario yang paling praktis: perangkat Android atau emulator dengan root, alat Objection + Frida, alat proxy Charles Proxy atau mitmproxy.
Apa yang dibutuhkan:
- Perangkat Android dengan root atau emulator Genymotion
- Komputer dengan Python 3 terinstal
- Frida-server untuk Android (unduh dari GitHub)
- Objection (diinstal melalui pip)
- Charles Proxy atau mitmproxy di komputer
- ADB (Android Debug Bridge)
Langkah 1: Atur alat proxy di komputer
Jalankan Charles Proxy atau mitmproxy. Secara default, mereka mendengarkan port 8888 (Charles) atau 8080 (mitmproxy). Ingat alamat IP komputer Anda di jaringan lokal β ini akan diperlukan untuk mengatur proxy di perangkat.
Langkah 2: Atur proxy di perangkat Android
Masuk ke pengaturan Wi-Fi β pilih jaringan Anda β tekan "Ubah" β "Opsi tambahan" β Proxy: Manual. Masukkan IP komputer dan port alat. Sekarang semua lalu lintas perangkat melewati proxy Anda.
Langkah 3: Instal sertifikat alat proxy
Buka browser di perangkat dan pergi ke alamat chls.pro/ssl (untuk Charles) atau mitm.it (untuk mitmproxy). Unduh dan instal sertifikat. Di Android dengan root, pindahkan sertifikat ke penyimpanan sistem β ini diperlukan untuk beberapa aplikasi.
Langkah 4: Jalankan Frida-server di perangkat
Unduh frida-server versi yang sesuai dari GitHub (versi harus cocok dengan versi Frida di komputer). Unggah file ke perangkat melalui ADB:
adb push frida-server /data/local/tmp/ adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "su -c /data/local/tmp/frida-server &"
Langkah 5: Hubungkan melalui Objection dan nonaktifkan SSL Pinning
Di komputer, instal Objection melalui pip dan jalankan, dengan menyebutkan nama paket aplikasi:
pip install objection objection -g com.example.app explore
Setelah terhubung, di konsol Objection, jalankan perintah untuk menonaktifkan SSL Pinning:
android sslpinning disable
Setelah itu, buka aplikasi dan mulai berinteraksi dengannya. Lalu lintas akan muncul di Charles atau mitmproxy dalam bentuk yang terdekripsi.
Langkah 6: Untuk aplikasi dengan Network Security Config
Jika aplikasi menggunakan network_security_config.xml, Anda dapat mendekompilasi APK melalui apktool, menemukan file ini dan menambahkan izin untuk sertifikat pengguna, kemudian membangun kembali dan menandatangani APK. Ini bekerja tanpa root, tetapi memerlukan penonaktifan pemeriksaan tanda tangan aplikasi.
Langkah demi langkah bypass SSL Pinning di iOS
Di iOS, situasinya lebih rumit: kebanyakan metode memerlukan jailbreak. Tanpa itu, kemampuannya terbatas. Mari kita bahas kedua opsi.
Opsi A: Dengan jailbreak (iOS 14-16, checkra1n / palera1n)
Langkah 1: Atur proxy
Di iPhone, masuk ke Pengaturan β Wi-Fi β jaringan Anda β Atur proxy β Manual. Masukkan IP komputer dan port Charles/mitmproxy.
Langkah 2: Instal sertifikat
Buka Safari dan pergi ke chls.pro/ssl. Instal profil melalui Pengaturan β Umum β VPN dan manajemen perangkat. Kemudian aktifkan di Pengaturan β Umum β Kepercayaan sertifikat.
Langkah 3: Instal SSL Kill Switch 2 melalui Cydia/Sileo
SSL Kill Switch 2 adalah tweak untuk iOS yang telah di-jailbreak, yang menonaktifkan SSL Pinning secara global untuk semua aplikasi. Temukan di Cydia atau Sileo, instal, dan reboot perangkat. Setelah itu, sebagian besar aplikasi akan berhenti memeriksa sertifikat, dan lalu lintas akan terlihat di Charles.
Langkah 4: Alternatif β Frida + Objection di iOS
Sama seperti di Android: instal frida-server melalui Cydia, hubungkan melalui Objection di komputer dan jalankan ios sslpinning disable. Metode ini lebih fleksibel dan bekerja untuk aplikasi yang tidak dijangkau oleh SSL Kill Switch 2.
Opsi B: Tanpa jailbreak (kemampuan terbatas)
Tanpa jailbreak, mengatasi SSL Pinning di iOS jauh lebih sulit. Salah satu opsi adalah menggunakan alat Proxyman dengan fungsi SSL Proxying untuk iOS tanpa jailbreak. Proxyman menginstal profil khusus di perangkat dan menggunakan antarmuka VPN untuk menyadap lalu lintas. Bekerja untuk banyak aplikasi, tetapi tidak untuk semua dengan Pinning yang ketat.
Opsi lain adalah menggunakan simulator iOS di Xcode. Simulator tidak memiliki SSL Pinning di tingkat OS, dan banyak aplikasi dapat dijalankan di dalamnya (jika mereka mendukung simulator). Namun, ini hanya cocok untuk pengujian, bukan untuk analisis aplikasi produksi.
Jenis proxy apa yang harus dipilih untuk pengujian aplikasi mobile
Setelah SSL Pinning diatasi, lalu lintas aplikasi melewati alat proxy Anda (Charles, mitmproxy). Namun, untuk beberapa tugas, Anda juga perlu mengarahkan lalu lintas melalui server proxy eksternal β misalnya, agar aplikasi "melihat" wilayah lain atau alamat IP lain. Di sini penting untuk memilih jenis proxy yang tepat.
Proxy residential
Proxy residential menggunakan alamat IP dari pengguna rumah nyata. Aplikasi mobile, terutama SDK iklan dan pasar, lebih mempercayai IP semacam ini dibandingkan dengan alamat dari data center. Jika Anda menganalisis perilaku aplikasi berdasarkan wilayah β proxy residential akan memberikan gambaran yang paling "bersih", mendekati pengguna nyata.
Proxy mobile
Proxy mobile bekerja melalui jaringan mobile nyata (3G/4G/5G). Ini sangat relevan saat menguji aplikasi mobile: IP dari jaringan mobile memiliki tingkat kepercayaan tertinggi di SDK Facebook Ads, TikTok, dan platform iklan lainnya. Jika tujuan Anda adalah menganalisis permintaan iklan aplikasi atau menguji perilaku SDK di lingkungan mobile, proxy mobile adalah pilihan optimal.
Proxy data center
Proxy data center cocok untuk tugas di mana kecepatan lebih penting daripada "kealamian" IP: misalnya, untuk pengambilan massal API terbuka atau pengujian kinerja. Untuk analisis SDK iklan dan aplikasi yang dilindungi, mereka kurang disukai, karena mudah dikenali oleh sistem anti-fraud.
| Jenis proxy | Kepercayaan aplikasi | Kecepatan | Skenario terbaik |
|---|---|---|---|
| Residential | Tinggi | Sedang | Analisis berdasarkan wilayah, pasar |
| Mobile | Maksimal | Sedang | SDK iklan, Facebook, TikTok |
| Data center | Rendah | Tinggi | Pengambilan API terbuka, pengujian beban |
Skenario praktis: arbitrase, e-commerce, pemasaran
Mari kita bahas tugas konkret yang membuat pemasar dan arbitrase melakukan bypass SSL Pinning.
Skenario 1: Analisis SDK iklan Facebook dan TikTok
Arbitrase yang bekerja dengan Facebook Ads dan TikTok Ads sering ingin memahami data apa yang dikirimkan SDK ke server: peristiwa apa yang dicatat, bagaimana permintaan atribusi dibentuk, parameter apa yang mempengaruhi optimasi kampanye. Tanpa bypass SSL Pinning, ini tidak mungkin β kedua SDK menggunakan Certificate Pinning.
Setelah bypass melalui Frida/Objection, Anda dapat melihat di Charles semua peristiwa SDK: instalasi, pembelian, pendaftaran, β dan memastikan bahwa pelacakan diatur dengan benar. Ini sangat penting saat mengatur CAPI (Conversions API) dan memeriksa deduplikasi peristiwa.
Skenario 2: Memantau harga di Wildberries dan Ozon melalui aplikasi
Aplikasi Wildberries dan Ozon menggunakan SSL Pinning untuk melindungi API mereka. Penjual yang ingin memantau harga pesaing melalui aplikasi mobile (bukan versi web) menghadapi perlindungan ini. Setelah bypass SSL Pinning, Anda dapat mempelajari struktur permintaan API dan memahami endpoint mana yang digunakan untuk mendapatkan data tentang harga, ketersediaan, dan peringkat produk.
Penting: data yang diperoleh hanya dapat digunakan untuk analisis pribadi. Pengambilan otomatis melalui pengulangan permintaan API melanggar syarat penggunaan sebagian besar platform.
Skenario 3: Pengujian kreatif iklan dari berbagai wilayah
Pemasar yang menguji iklan di Facebook Ads dan TikTok Ads dari berbagai wilayah ingin melihat bagaimana aplikasi berperilaku saat terhubung melalui IP dari negara tertentu. Kombinasi bypass SSL Pinning + proxy residential dari wilayah yang diperlukan memungkinkan Anda melihat konten dan harga apa yang ditampilkan kepada pengguna dari wilayah tersebut.
Skenario 4: Pengujian QA aplikasi sendiri
Jika Anda mengembangkan aplikasi mobile sendiri atau bekerja dengan tim pengembangan, penyadapan lalu lintas dengan bypass SSL Pinning adalah praktik standar QA. Ini memungkinkan Anda untuk memeriksa keakuratan permintaan, menemukan kebocoran data, dan memeriksa kerja analitik serta SDK iklan dalam kondisi nyata sebelum rilis.
Skenario 5: Analisis pesaing di niche game mobile dan aplikasi
Pemasar game mobile menggunakan penyadapan lalu lintas untuk menganalisis monetisasi pesaing: tawaran apa yang ditampilkan, bagaimana sistem pembelian dalam game bekerja, jaringan iklan apa yang digunakan. Ini membantu membangun strategi UA (User Acquisition) dan monetisasi yang lebih efektif.
Checklist: periksa pengaturan sebelum pengujian
Sebelum Anda mulai menyadap lalu lintas, pastikan semuanya diatur dengan benar. Berikut adalah checklist lengkap:
β Checklist pengaturan
- Alat proxy (Charles/mitmproxy) dijalankan di komputer dan mendengarkan port yang diperlukan
- Komputer dan perangkat berada di jaringan Wi-Fi yang sama
- Di perangkat, pengaturan Wi-Fi menunjukkan IP komputer yang benar dan port proxy
- Sertifikat root alat proxy diinstal di perangkat
- Di Android: sertifikat dipindahkan ke penyimpanan sistem (jika ada root)
- Di iOS: sertifikat diaktifkan di bagian "Kepercayaan sertifikat"
- Frida-server dijalankan di perangkat (jika menggunakan Frida/Objection)
- Versi Frida di komputer cocok dengan versi frida-server di perangkat
- Objection berhasil terhubung ke proses aplikasi
- Perintah
android sslpinning disabledijalankan tanpa kesalahan - Catatan muncul di Charles/mitmproxy saat bekerja dengan aplikasi
- Permintaan HTTPS terdekripsi (tidak menunjukkan kesalahan SSL)
Masalah umum dan solusinya
| Masalah | Penyebab | Solusi |
|---|---|---|
| Lalu lintas tidak muncul di Charles | IP/port proxy salah | Periksa IP komputer dan port |
| Kesalahan SSL di Charles | Sertifikat tidak terinstal atau tidak diaktifkan | Instal ulang dan aktifkan sertifikat |
| Frida tidak terhubung | Ketidakcocokan versi frida/frida-server | Sinkronkan versi |
| Objection tidak menonaktifkan Pinning | Kode native (C/C++) dengan Pinning | Gunakan skrip Frida kustom |
| Aplikasi crash setelah bypass | Aplikasi memeriksa integritas | Nonaktifkan juga deteksi root melalui Objection |
Kesimpulan
SSL Pinning adalah perlindungan serius, tetapi tidak tak teratasi. Untuk sebagian besar tugas praktis pemasar atau arbitrase, cukup dengan kombinasi: emulator Android dengan root + Frida/Objection + Charles Proxy. Di iOS β SSL Kill Switch 2 jika ada jailbreak atau Proxyman tanpa itu. Yang terpenting adalah mengatur rantai dengan benar: alat proxy di komputer β lalu lintas melalui itu β bypass Pinning di perangkat.
Ingatlah bahwa bypass SSL Pinning di aplikasi pihak ketiga hanya diperbolehkan untuk analisis dan penelitian pribadi. Pengambilan otomatis dan pengulangan permintaan API melanggar syarat penggunaan sebagian besar platform.
Jika tugas Anda adalah menganalisis lalu lintas aplikasi mobile di berbagai wilayah atau menguji perilaku SDK iklan dari negara tertentu, Anda tidak hanya memerlukan bypass SSL Pinning, tetapi juga server proxy yang berkualitas. Untuk bekerja dengan platform iklan (Facebook Ads, TikTok Ads) dan pasar, kami merekomendasikan menggunakan proxy mobile β mereka memiliki tingkat kepercayaan tertinggi di sistem anti-fraud dan memungkinkan untuk mensimulasikan lingkungan mobile yang nyata dengan benar.
```