- Banyak aplikasi mengintegrasikan model AI langsung ke perangkat. Ini menguntungkan ketika inferensi cepat dan akses offline penting
- Namun, keberadaan file model di dalam perangkat juga berarti pengguna bisa mengekstrak dan menganalisis file tersebut
Tujuan
- Aplikasi Seeing AI dari Microsoft adalah "kamera yang berbicara" untuk penyandang tunanetra, yang mengenali objek, dokumen, uang, dan lainnya lalu menjelaskannya lewat suara
- Secara khusus, fitur pengenalan mata uang mendukung lebih dari 17 mata uang dan mengenali 225 lembar uang kertas yang unik
- Model disertakan di dalam file APK sebagai format distribusi aplikasi, tetapi hadir sebagai file terenkripsi (
currency)
- Jika file hanya dienkripsi secara sederhana, file tersebut bisa diekstrak dengan melacak memori atau proses dekripsi saat aplikasi berjalan
Investigasi awal
- Aplikasi Android didistribusikan sebagai file APK, yaitu arsip yang berisi semua yang diperlukan untuk menjalankan aplikasi.
- Model AI biasanya disimpan bersama aset-aset ini
- Dengan
apktool, APK dapat didekompilasi dan strukturnya dianalisis
- Di folder
assets, ditemukan file bernama currency, tetapi dalam keadaan terenkripsi
Melangkah lebih jauh
- Kita bisa melakukan rekayasa balik untuk melihat bagaimana aplikasi mendekripsi file
currency
- Dikonfirmasi bahwa TensorFlow Lite digunakan di
com.microsoft.seeingai
org.tensorflow.lite.NativeInterpreterWrapper dapat digunakan untuk memuat model *.tflite
Menggunakan Frida
- Frida adalah alat instrumentasi dinamis yang dapat berjalan di hampir semua sistem operasi, dan bisa terhubung ke proses yang sedang berjalan untuk mengubah perilakunya
- Dengan menempel ke proses saat berjalan, kita bisa melacak pemanggilan metode, memeriksa argumen dan nilai kembalian, atau menimpa isi metode dengan logika yang diinginkan
- Contoh:
checkKey(key) bisa diubah agar selalu mengembalikan true
- Objection adalah alat CLI yang mengumpulkan skrip Frida dan berguna untuk riset aplikasi seluler
- Dengan melacak pemanggilan fungsi
org.tensorflow.lite.NativeInterpreterWrapper, model dapat di-dump ke disk
- Saat aplikasi berjalan,
.createModelWithBuffer(java.nio.ByteBuffer, long) dipanggil, dan ByteBuffer yang dikirim saat itu kemungkinan besar adalah model .tflite yang sudah didekripsi
- Dengan hooking dan mengganti metode ini dengan kode untuk dump, model tersebut bisa disimpan ke disk
- Dengan perintah
adb pull, model .tflite yang diekstrak (currency.tflite) diambil ke perangkat lokal
- Muat dengan alat seperti Netron untuk memverifikasi bahwa itu benar-benar model TensorFlow Lite (layer, bobot, bias, dan sebagainya)
- Berhasil melakukan dump lengkap model pengenalan mata uang
CTRL + C; CTRL + V
- Serangan ini dapat diterapkan pada aplikasi yang menggunakan TensorFlow Lite
- Misalnya, Adobe Scan adalah aplikasi keren yang benar-benar sering saya gunakan, dan fitur terbaiknya adalah memindai dokumen dengan kamera ponsel
Hal yang perlu diperhatikan
- Model yang diekstrak dilindungi hak cipta, sehingga penggunaan/modifikasi tanpa izin yang sah sebaiknya dihindari
- Metode dalam postingan ini ditujukan untuk penelitian, dan saat diterapkan secara nyata perlu mempertimbangkan regulasi terkait serta isu hak kekayaan intelektual
3 komentar
Bahkan modelnya juga direkayasa balik,,
Wah, mengekstrak file weight dari file apk??
Meski terbatas pada library tertentu, ini tetap luar biasa..
Komentar Hacker News