Aplikasi CLI yang secara otomatis menyiapkan file APK Android untuk inspeksi HTTPS
Memeriksa lalu lintas HTTPS aplikasi seluler menggunakan proxy mungkin merupakan cara termudah untuk mengetahui cara kerjanya. Namun, dengan diperkenalkannya Konfigurasi Keamanan Jaringan di Android 7 dan pengembang aplikasi mencoba mencegah serangan MITM menggunakan penyematan sertifikat, membuat aplikasi berfungsi dengan proxy HTTPS menjadi sangat membosankan.
apk-mitm
mengotomatiskan seluruh proses. Yang harus Anda lakukan adalah memberikan file APK dan apk-mitm
akan:
Anda juga dapat menggunakan apk-mitm
untuk menambal aplikasi menggunakan Android App Bundle dan tidak diperlukan rooting pada ponsel Anda.
Memodifikasi perilaku reguler aplikasi untuk mengatasi fitur keamanan seperti penyematan sertifikat memerlukan modifikasi kode sumber aplikasi sebelum menjalankannya atau "mengaitkan" aplikasi saat sedang berjalan untuk mencegat panggilan fungsi.
apk-mitm
saat ini mengambil pendekatan sebelumnya yaitu memodifikasi kode aplikasi dengan terlebih dahulu "membongkar" aplikasi menggunakan Apktool, membuat perubahan pada beberapa file, dan kemudian merakitnya kembali (sekali lagi menggunakan Apktool).
Pendekatan ini memiliki keuntungan karena tidak memerlukan perangkat yang di-rooting tetapi juga memiliki beberapa kelemahan. Masalah terbesarnya adalah aplikasi tidak dimaksudkan untuk dibongkar. Apktool tetap mencoba mencapainya, tetapi, terutama dengan aplikasi yang besar dan kompleks, sering kali mengalami masalah.
Masalah lain dengan pendekatan ini adalah beberapa metode penyematan sertifikat, seperti pemeriksaan yang dilakukan dalam biner asli (seperti halnya framework seperti Flutter), sangat sulit atau tidak mungkin untuk dihindari. Oleh karena itu, akan bermanfaat jika mencoba pendekatan lain untuk aplikasi yang lebih rumit.
Secara khusus, saya ingin menyoroti proyek android-unpinner
mitmproxy dan skrip frida-interception-and-unpinning
yang mendasarinya dengan HTTP Toolkit. Pendekatan mereka menerapkan patch saat runtime menggunakan Frida, yang jauh lebih kuat tetapi juga berarti perangkat tersebut tidak dapat digunakan atau lebih sulit digunakan tanpa perangkat yang di-rooting.
Jika Anda memiliki Node.js (14+) dan Java (8+) versi terbaru, Anda dapat menginstal apk-mitm
dengan menjalankan:
npm install -g apk-mitm
Setelah terinstal, Anda dapat menjalankan perintah ini untuk menambal aplikasi:
apk-mitm < path-to-apk >
Menambal file APK bernama example.apk
mungkin terlihat seperti ini:
$ apk-mitm example.apk
✔ Decoding APK file
✔ Modifying app manifest
✔ Replacing network security config
✔ Disabling certificate pinning
✔ Encoding patched APK file
✔ Signing patched APK file
Done ! Patched APK: ./example-patched.apk
Anda sekarang dapat menginstal file example-patched.apk
di perangkat Android Anda dan menggunakan proxy seperti Charles atau mitmproxy untuk melihat lalu lintas aplikasi.
Anda juga dapat melakukan patch aplikasi menggunakan Android App Bundle dengan apk-mitm
dengan menyediakan file *.xapk
(misalnya dari app) atau file *.apks
(yang dapat Anda ekspor sendiri menggunakan SAI). Jika Anda melakukan ini di Linux, pastikan zip
dan unzip
sudah diinstal.
Terkadang Anda perlu melakukan perubahan manual pada aplikasi agar dapat berfungsi. Dalam kasus ini, opsi --wait
adalah yang Anda perlukan. Mengaktifkannya akan membuat apk-mitm
menunggu sebelum meng-enconding ulang aplikasi, memungkinkan Anda membuat perubahan pada file di direktori sementara.
Jika Anda ingin bereksperimen dengan berbagai perubahan pada APK, penggunaan --wait
mungkin bukan pilihan yang paling nyaman karena memaksa Anda untuk memulai dari awal setiap kali menggunakannya. Dalam hal ini Anda mungkin ingin melihat APKLab. Ini adalah meja kerja rekayasa balik Android yang dibangun di atas VS Code yang dilengkapi dengan dukungan apk-mitm
dan memungkinkan Anda melakukan iterasi lebih cepat.
Di beberapa perangkat (seperti Android TV) Anda mungkin tidak dapat menambahkan sertifikat baru ke sertifikat root sistem. Dalam kasus tersebut, Anda masih dapat menambahkan sertifikat proksi langsung ke Konfigurasi Keamanan Jaringan aplikasi karena sertifikat tersebut dapat berfungsi pada perangkat apa pun. Anda dapat melakukannya dengan menjalankan apk-mitm
dengan tanda --certificate
yang disetel ke jalur sertifikat (file .pem
atau .der
) yang digunakan oleh proksi Anda.
Jika aplikasi menggunakan Google Maps dan peta rusak setelah dipatch, kunci API aplikasi mungkin terbatas pada sertifikat pengembang. Anda harus membuat kunci API sendiri tanpa batasan dan menjalankan apk-mitm
dengan opsi --wait
agar dapat mengganti nilai com.google.android.geo.API_KEY
di file AndroidManifest.xml
aplikasi.
Jika apk-mitm
mogok saat mendekode atau menyandikan, masalahnya mungkin terkait dengan Apktool. Periksa masalah mereka di GitHub untuk menemukan kemungkinan solusinya. Jika Anda menemukan versi Apktool yang tidak terpengaruh oleh masalah ini, Anda dapat menginstruksikan apk-mitm
untuk menggunakannya dengan menentukan jalur file JAR-nya melalui opsi --apktool
.
MIT © Niklas Higi