Membuka pin SSL di aplikasi Android

Masalah intersepsi lalu lintas

Dalam proses pengujian penetrasi aplikasi seluler di Android, seringkali perlu untuk mengetahui bagaimana aplikasi berkomunikasi dengan server, alamat apa yang berinteraksi dengannya, permintaan seperti apa, data apa yang dikirim. Tetapi tidak selalu mungkin untuk melakukan ini.





Saat ini, protokol HTTPS digunakan untuk berkomunikasi antar komponen aplikasi web, yang didasarkan pada protokol HTTP dan TLS. Ini tidak akan bekerja begitu saja untuk mencegat lalu lintas aplikasi. itu dienkripsi. Anda tentu saja dapat menggunakan server proxy, yang, dengan menggunakan sertifikatnya, akan dapat mendekripsi lalu lintas aplikasi dan melihat semua permintaan. Namun, alat perlindungan aplikasi tidak berhenti. Banyak aplikasi seluler menggunakan SSL Pinning.





SSL Pinning adalah penyematan sertifikat SSL yang digunakan di server dalam kode aplikasi seluler. Dengan demikian, aplikasi tidak menggunakan penyimpanan sertifikat perangkat dan tidak akan berfungsi dengan sertifikat yang kami masukkan ke dalamnya.





Kesalahan yang terjadi saat menggunakan rangkaian Burp untuk menghalangi lalu lintas dengan sertifikatnya sendiri
Kesalahan yang terjadi saat menggunakan rangkaian Burp untuk menghalangi lalu lintas dengan sertifikatnya sendiri

Metode perlindungan aplikasi

Untuk memahami cara melewati perlindungan, Anda harus terlebih dahulu mencari tahu dengan cara apa perlindungan ini dilakukan. Ada beberapa cara untuk melakukannya.





  • Manajer kepercayaan





Untuk metode ini, Anda perlu menambahkan file sertifikat ke file aplikasi, lalu membuat KeyStore dan menambahkan sertifikat kami ke sana.





Setelah itu, kami membuat TrustManager itu sendiri, yang akan berfungsi dengan KeyStore kami, yang berisi sertifikat yang diperlukan.





Selanjutnya, kami membuat SSLConteks yang digunakan TrustManager kami. Kemudian kami menentukan SocketFactory untuk URLConnetction dari SSLContext yang dibuat.





Esensi utama dari metode ini adalah kami secara langsung menggunakan file sertifikat itu sendiri dalam proyek, lalu membuat TrustManager yang hanya akan berfungsi dengan sertifikat ini.





API , .





  • OkHttp CertificatePinner





OkHttp. CertificatePinner, fingerprint .





fingerprint , , .





.





  • Network Security Configuration





Android 7.0 . res/xml/ network_security_config.xml, fingerprints, OkHttp.





AndroidManifest.xml android:networkSecurityConfig.





, .





  • Frida





Frida – . , , .





SSL Pinning Frida , TrustManager, . .





CertificateFactory X509Certificate .





 FileInputStream BufferedInputStream .





KeyStore – KeyStore, .





TrustManagerFactory TrustManager, KeyStore.





SSLcontext – SSL, factory sslSocketFactory.





cert-der.crt, , .





keyStore, .





trustManager, keyStore .





Frida. SSLContext. , , . . , , TrustManager . , .





, TrustManager, , ( a , b TrustManager).





Frida , . Frida , OkHttp CertificatePinner.





apk . , .





, Frida, frida-server , .





  • apk





, , SSL Pinning, .





apk . smali . Smali – android-. .smali , .





apktool. apk, Visual Studio Code ApkLab.





smali, Java-, . , .





ApkLab . .





: checkClientTrusted, checkServerTrusted, getAcceptedIssuers.





, , , , , . Java- .





, . mo9499a ( - ), , . , , , , . . , , .





getAcceptedIssuers . , , . : , keyStore ( m7931a), .





, .. . , - , , , smali. . - -.





OkHttp CertificatePinner. , OkHttpClient CertificatePinner. smali , , CertificatePinner OkHttpClient.





  • NSC (Network Security Configuration)





SSL Pinning.





, NSC, . NSC base-config domain-config.





base-config , .





domain-config .





<domain-config>.





ApkLab NSC .





, AndroidManifest.xml.









, TrustManager, KeyStore, . KeyStore . .apk KeyStore /res/raw, /assets.





, .





, SSL Pinning , , , . , , , , , .





Frida , , . , Frida.





apk , SSL Pinning. . , , .





Network Security Configuration , . SSL Pinning , .





KeyStore . , , - (, -).









,





Frida





TrustManager, OkHttp CertificatePinner





APK





TrustManager, OkHttp Certificate Pinner, NSC





NSC





NSC









TrustManager

















Frida





,









, ,





Frida





APK









,





NSC









Android 7.0





,





Kesulitan juga dapat muncul jika aplikasi dilindungi dari modifikasi.





Spoofing file sertifikat





Mudah diimplementasikan





Dan metode ini juga tidak nyaman dalam hal melindungi aplikasi dari perubahan.








All Articles