Hai! Saya Roman, CTO di Techvice. Terkadang saya merekayasa balik aplikasi seluler untuk mengakses API dan mereproduksi kueri dalam kode Python atau NodeJS. Ini diperlukan untuk membuat pengikis data. Saya memperhatikan jejak penggunaan IBM MobileFirst di salah satu aplikasi yang baru saja di-crack.
IBM MobileFirst (atau IBM Mobile Foundation) adalah platform untuk mengembangkan, mengoptimalkan, mengintegrasikan, dan mengelola aplikasi seluler yang aman.
Daftar Isi
Penafian
-
Saya tidak akan menyebutkan nama aplikasinya di sini.
-
Dokumentasi situs IBM mencatat bahwa perlindungan ini tidak memberikan enkripsi yang tidak dapat dipecahkan, melainkan tingkat kebingungan dasar.
Analisis aplikasi
Pertama saya mencoba mencegat lalu lintas antara aplikasi seluler dan server menggunakan Mitmproxy. Namun, saya menerima pesan kesalahan karena aplikasi menggunakan pin SSL.
Untuk menonaktifkan penyematan SSL saya menggunakan utilitas Frida. Berikut adalah salah satu contoh skrip Frida untuk melewati pin SSL - https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/.
Saya mencoba menggunakan skrip Frida yang kami buat untuk aplikasi yang kami selidiki sebelumnya, tetapi tidak ada yang berhasil. Aplikasi ini mungkin memiliki implementasi penyematan SSL khusus yang pendekatan saya sebelumnya tidak berfungsi.
Dekompilasi aplikasi
Untuk mendekompilasi aplikasi Android saya menggunakan JADX.
techvice@MacBook-Pro-techvice some_app % jadx -d ./source_code ./some_app.apk
INFO - loading ...
INFO - processing ...
ERROR - finished with errors, count: 25
Saat mengeluarkan, JADX memberi kami dua direktori: Sumber Daya dan Sumber. Mari kita lihat sumbernya.
techvice@MacBook-Pro-techvice some_app % ls -la source_code/sources
total 0
drwxr-xr-x 18 techvice staff 576 Jun 27 15:18 .
drwxr-xr-x 5 techvice staff 160 Jun 27 15:19 ..
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 a
drwxr-xr-x 4 techvice staff 128 Jun 27 15:18 android
drwxr-xr-x 5 techvice staff 160 Jun 27 15:18 androidx
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 b
drwxr-xr-x 33 techvice staff 1056 Jun 27 15:18 c
drwxr-xr-x 19 techvice staff 608 Jun 27 15:18 com
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 cordova
drwxr-xr-x 23 techvice staff 736 Jun 27 15:18 d
drwxr-xr-x 4 techvice staff 128 Jun 27 15:18 de
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 defpackage
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 e
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 im
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 net
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 nl
drwxr-xr-x 5 techvice staff 160 Jun 27 15:18 org
drwxr-xr-x 3 techvice staff 96 Jun 27 15:18 uk
Ada direktori Cordova di direktori sumber aplikasi yang didekompilasi. Ya, kami tahu apa yang sedang kami hadapi sekarang.
Aplikasi yang dibangun di Cordova adalah aplikasi web biasa yang berjalan di mesin Chromium. File JS, CSS dan HTML yang diperlukan untuk pekerjaan aplikasi terletak di “resources/assets/www
` Direktori. Saya membuka direktori ini dan melihat...
Kejutan! Alih-alih file HTML, CSS, dan JS yang diharapkan, saya melihat arsip zip dipecah menjadi beberapa bagian.
Tentu saja saya mencoba membongkarnya, tetapi seperti yang diharapkan, saya mendapat pesan kesalahan yang mengatakan pengarsip tidak dapat melakukannya.
Dapatkan kode sumber
Pertama saya mencari kunci enkripsi dan mencoba mencari tahu cara kerja algoritma enkripsi/dekripsi. Beberapa jam kemudian aku sadar...
Sebelumnya saya katakan bahwa aplikasi Cordova adalah aplikasi web biasa yang berjalan di mesin Chromium. Namun Chromium tidak dapat mendekompresi dan mendekripsi arsip zip! Sebelum aplikasi dimulai, arsip ini harus dibongkar di suatu tempat.
Saya meluncurkan aplikasi di emulator Android. Menggunakan SSH saya terhubung ke shell emulator dan menjalankan beberapa perintah bash seperti find . -name index.html
. Setelah beberapa menit saya berhasil menemukan lokasi di sistem file tempat arsip zip terenkripsi dibongkar.
Seperti inilah tampilan kode sumbernya.
Pikiran terakhir
Saya mengklik index.html yang dibuka di browser Chrome. Kemudian di tab Jaringan di Chrome Dev Tools (tekan F12 untuk membuka) saya menemukan semua permintaan yang dibuat aplikasi ke server.