DETEKSI ROOTING MENGGUNAKAN JAVA FUNCTION HOOKING

 

Oleh: Agung Suwandaru dan Benfano Soewito

 

Android adalah mobile operating system yang paling banyak digunakan saat ini dengan lebih dari 85% dari total mobile device yang digunakan dan diperkirakan akan tumbuh sampai 87% di tahun 2024 (idc.com). Android memilki kontrol keamanan yang melarang aplikasi untuk mengakses user root yang dapat disalahgunakan atau digunakan dengan tidak benar sehingga membahayakan keseluruhan sistem. Sistem keamanan android akan membuat user untuk setiap aplikasi sehingga setiap aplikasi hanya memiliki akses ke sandbox miliknya.

Rooting adalah proses untuk mendapatkan akses root pada android. Untuk dapat mengakses dan mengeksplorasi sistem android dengan bebas, dan memanfaatkan fungsionalitas android dengan kemampuan penuh. Beberapa keuntungan yang didapat pengguna setelah melakukan rooting antara lain untuk melakukan full backup, menghapus bloatware, menjalankan aplikasi di external memory, merubah user interface, menjalankan background service, overclock hardware, menjalankan aplikasi berbayar secara gratis, bahkan meng-install custom OS untuk mendapatkan fitur dan update terbaru.  Oleh karena itu, banyak pengguna dengan suka rela melakukan rooting.

Dengan berkembangnya metode rooting saat ini, rooting dapat dilakukan dengan aman dan mudah. Saat ini beberapa OEM memberikan cara untuk membuka bootloader mereka (miui.com), bahkan google memberikan image yang berisi binary file su yang dapat digunakan untuk rooting google nexus (developers.google.com).

Disamping keuntungan melakukan rooting, rooting ternyata mengakibatkan permasalahan keamanan pada android. Pada device yang telah dilakukan rooting, malware tidak harus mengeksploitasi kelemahan pada kernel, tapi dapat dengan mudah meminta pengguna untuk memberikan akses root. Karena banyak pengguna yang tidak menghiraukan peringatan keamanan pemberian akses ketika instalasi aplikasi, malware lebih mudah masuk dan memiliki akses root. Hal ini diperparah dengan instalasi aplikasi yang dilakukan dari store yang tidak resmi. Secara umum, malware dibuat untuk berusaha mendapatkan akses root, hal ini terlihat bahwa 37% malware menggunakan root exploit untuk mendapatkan akses root. Oleh karena itu, banyak IT manager tidak mengizinkan penggunaan device yang dilakukan rooting karena bisa saja malware masuk tidak sengaja melalui instalasi aplikasi tidak resmi (insights.samsung.com) yang kemudian meminta akses root dan tidak sengaja diizinkan oleh pengguna. Apabila malware telah mendapatkan akses root, malware dapat memperoleh data sensitif dari sandbox aplikasi lain atau system folder, mendapatkan input user, merubah method call ketika aplikasi berjalan. Apabila pengguna sadar akan keamanan sehingga melakukan unrooting device-nya, malware bisa saja tetap memiliki akses root karena sebelumnya telah membuat backdoor ketika dalam kondisi rooting. Tabel 1 memperlihatkan persentase device yang dilakukan rooting dan ranking serangan pada mobile malware tahun 2017 dan diperkirakan jumlahnya semakin bertambah.

Tabel 1 Persentase Rooted Device dan Ranking Serangan Mobile Malware (kaspersky.com, 2017)

Negara Persentase Rooted Device Urutan Serangan Mobile Malware di Dunia
Venezuela 26% 13
Algeria 19% 7
Moldova 15% 22
Bangladesh 13% 2
Nigeria 13% 9
Indonesia 12% 3
Italy 12% 66

 

Karena device yang dilakukan rooting dinilai tidak aman, aplikasi yang membutuhkan tingkat keamanan yang tinggi (aplikasi sensitif) sebaiknya tidak diperbolehkan berjalan pada device yang sudah dilakukan rooting. Pengembang aplikasi dapat memanfaatkan Google SafetyNet Attestation API untuk mengecek integritas sistem dan custom ROM (developer.android.com) yang dapat mengindikasikan atau mendeteksi apakah sebuah device sudah dilakukan rooting. Pengembang aplikasi juga dapat memanfaatkan Google API untuk mengecek rooting kemudian aplikasi akan merespon keadaan device. OWASP MASVS (Mobile AppSec Verification) pada poin 8.1 merekomendasikan untuk mendeteksi dan merespon perangkat yang telah dilakukan rooting dengan memperingatkan pengguna atau menutup aplikasi. OEM merespon dengan memperingkatkan pengguna terkait keamanan ketika akan melakukan unlock bootloader dan akan menghapus data pengguna untuk mencegah kebocoran data sensitif setelah dilakukan rooting.

Pengecekan rooting dengan memanggil google API dapat dilakukan dengan mengecek apakah terdapat jejak rooting yang ditinggalkan.

Tetapi ada kalanya pengguna dapat menghindar dari deteksi rooting ini. Jika pengguna ingin menggunakan aplikasi yg terinstall yang berhubungan dengan rooting maka pengguna dapat menipu aplikasi deteksi sehingga aplikasi menganggap device tidak pernah dilakukan rooting. Pengguna tetap dapat menggunakaan aplikasinya. Teknik yang digunakan Teknik bypass deteksi rooting saat ini cukup mudah dilakukan karena sebagian besar pengecekan rooting masih menggunakan java.

Secara garis besar, terdapat empat teknik yang digunakan untuk menghindari deteksi rooting yaitu: melakukan hooking pada method call saat runtime, melakukan reverse engineering, melakukan binary patching, menonaktifkan rooting sementara, dan melakukan debugging.

Melakukan hooking pada method call dapat dilakukan dengan mempelajari source code aplikasi kemudian melakukan perubahan pada method call dengan merubah return value dari metode yang melakukan pengecekan rooting sehingga aplikasi menganggap device tidak dilakukan rooting. Apabila di dalam device yang dilakukan rooting di-install aplikasi sensitif dan dilakukan bypass pengecekan rooting terhadap aplikasi tersebut. Apabila di saat yang sama terdapat malware yang telah miliki akses root, malware tersebut dapat membaca data sensitif dari aplikasi tersebut. Malware dapat membaca data sensitif dari method call, dari sandbox aplikasi, dapat melakukan perubahan lainnya termasuk bypass SSL pinning. Teknik hooking adalah teknik yang paling berbahaya karena memiliki success rate yang lebih tinggi dari teknik lain dan paling mudah digunakan. Untuk melakukan melakukan hooking, teknik yang sebelumnya dilakukan adalah dengan trial and error berdasarkan hasil pengamatan source code. Source code bisa saja telah di-obfuscate sehingga semakin mempersulit mempelajari source code hasil reverse engineering. Teknik Hooking dapat dibagi menjadi dua yaitu: hooking pada native API dan hooking pada java API.

Untuk lebih detail bagaiman mengembangkan Teknik deteksi pada device yang sudah dilakukan rooting dapat dibaca pada https://www.sciencedirect.com/science/article/pii/S1319157820304201

 

Benfano Soewito