Mungkin beberapa dari kalian ada yang penasaran, tools apa saja yang sering saya gunakan selama proses reverse engineering, bug bounty, atau penetration testing kan? Disini saya akan kasih tau beberapa tools yang sering saya gunakan. Tapi saya tidak akan menjelaskan detail lengkap penggunaannya ya. Mungkin akan dibahas di artikel lain aja biar gak terlalu panjang.

1. apktool#

image-20241212180128870

Yaps.. ini adalah tool hukumnya wajib😁 bagi saya. Dengan apktool, bisa menjadi awal untuk mengetahui isi dari kode sebuah file .apk. Tool ini sangat berguna sekali untuk menjadi langkah awal dalam memulai analisis sebuah aplikasi Android.

2. JADX/JADX-GUI#

jadx

JADX adalah alat dekompilasi yang mengonversi bytecode Dalvik dari berkas APK, DEX, AAR, AAB, dan ZIP menjadi source code Java yang dapat dibaca. Alat ini tersedia dalam dua versi: antarmuka baris perintah (CLI) dan antarmuka grafis pengguna (GUI), yang dikenal sebagai jadx-gui.

Fitur:

  • Decompile Bytecode Dalvik: Mengonversi bytecode Dalvik dari berkas APK, DEX, AAR, AAB, dan ZIP menjadi source code Java.
  • Decode Resource Android: Mendecode berkas seperti AndroidManifest.xml dan resource dari resources.arsc.
  • Integrated Deobfuscator: Menyediakan fitur deobfuscasi untuk meningkatkan keterbacaan kode yang telah obfuscated.

3. Frida#

image-20241212181055472

Hmm.. mungkin beberapa dari kalian baru mendengar nama dari tool ini. Frida adalah alat luar biasa untuk melakukan dynamic instrumentation, yang memungkinkan kita untuk menganalisis dan memodifikasi perilaku aplikasi secara langsung saat aplikasi berjalan. Dengan kata lain, Frida memberikan kekuatan untuk “mengintip” dan bahkan memanipulasi jalannya suatu aplikasi, tanpa harus memodifikasi file asli dari aplikasi tersebut.

Fitur Utama Frida:

  • Hooking Real-Time: Frida memungkinkan kita untuk “menyambungkan” fungsi tertentu dalam aplikasi, sehingga kita bisa melihat atau bahkan mengubah data yang diproses aplikasi tersebut.
  • Mendukung Multi-Platform: Selain untuk Android, Frida juga mendukung berbagai platform seperti iOS, Windows, macOS, dan Linux.
  • Injection Scripting: Kita bisa menulis skrip menggunakan JavaScript untuk memanfaatkan kemampuan Frida dalam memanipulasi aplikasi.

Kapan Frida Digunakan?

Frida sangat berguna ketika kita ingin melakukan reverse engineering, debugging, atau bahkan analisis keamanan aplikasi yang lebih dalam. Contohnya, ketika kita ingin memahami proses enkripsi/dekripsi di dalam sebuah aplikasi Android, kita bisa menggunakan Frida untuk mem-hook fungsi yang relevan dan memeriksa data secara langsung.

4. Objection#

objection

Nah, kalau kamu sudah mulai nyaman dengan Frida, Objection bisa jadi teman yang ideal! Objection adalah framework yang dibangun di atas Frida, yang dirancang khusus untuk pengetesan aplikasi mobile. Dengan menggunakan Objection, kita bisa melakukan berbagai hal seperti bypass SSL pinning, dumping database, dan lain sebagainya—tanpa perlu akses root pada perangkat.

Fitur Utama Objection:

  • SSL Pinning Bypass: Memungkinkan kita melewati mekanisme SSL pinning pada aplikasi Android maupun iOS.
  • File System Interaction: Memberikan akses mudah untuk menelusuri dan mengekstrak file dari aplikasi.
  • Runtime Exploration: Kita bisa mempelajari struktur internal aplikasi selama runtime, termasuk akses ke fungsi internal atau variabel aplikasi.

Objection ini sangat cocok untuk pentester atau reverse engineer yang menginginkan solusi praktis tanpa harus menulis skrip dari awal.

5. Ghidra#

GHIDRA

Ghidra adalah software reverse engineering framework yang dikembangkan oleh National Security Agency (NSA). Tenang, alat ini open-source kok! 😁 Dengan Ghidra, kita bisa menganalisis binary file dari aplikasi, termasuk aplikasi Android, untuk memahami logika atau mencari celah keamanan.

Fitur Utama Ghidra:

  • Decompile Native Code: Ghidra mampu menganalisis kode biner (native) dan mengubahnya menjadi pseudo-code yang lebih mudah dipahami.
  • Disassembler Powerful: Dengan kemampuan analisisnya, Ghidra dapat menampilkan struktur dan alur kode dengan sangat detail.
  • Support Multi-Platform: Ghidra mendukung berbagai arsitektur seperti ARM, x86, dan lain-lain.

Ghidra biasanya digunakan untuk aplikasi yang memiliki library native, seperti aplikasi dengan file .so yang mengimplementasikan fungsi penting.


Itu adalah beberapa tools yang sering saya gunakan dalam proses analisa sebuah aplikasi. Mungkin kalian bertanya-tanya, terus BurpSuite? NMAP? Metasploit? kok gak dibahas bang? Tools seperti itu tidak perlu dijelaskan sepertinya sudah menjadi bahasan umum untuk para pentester. Tools seperti itu sudah pasti saya gunakan juga.

Tapi pernahkah kalian mendapati kasus ketika mencoba melakukan packet capture dari sebuah aplikasi Android menggunakan BurpSuite, entah itu dalam bentuk websocket atau HTTP biasa, malah aplikasinya blank? Itu bisa terjadi karena aplikasi tersebut menggunakan SSL Pinning. Nah, menggunakan frida bisa menjadi solusi untuk mem-bypass nya. Saya sarankan juga, jika emang niat mendalami reverse engineering atau penetration-testing, kalian mungkin bisa melakukan root pada perangkat Android.

“Di emulator bisa bang?” Oh tentu bisa. Tapi di beberapa kasus, tools Dynamic Instrumentation seperti frida mungkin tidak bekerja dengan sempurna. Ini dikarenakan:

  1. Ketidaksesuaian Arsitektur
  • Frida umumnya dirancang untuk mendukung arsitektur ARM karena mayoritas perangkat Android menggunakan arsitektur ini. Emulator Android berbasis x86 menggunakan instruksi berbeda yang tidak sepenuhnya kompatibel dengan library native yang dibuat untuk ARM.
  • Ketika aplikasi menggunakan shared library (.so) yang dikompilasi untuk ARM, emulator x86 membutuhkan proses translasi instruksi (emulasi) agar library ARM bisa berjalan. Proses ini dapat menyebabkan ketidakcocokan saat Frida mencoba mem-hook fungsi atau memuat library tambahan.
  1. Hilangnya Library ARM di Emulator x86
  • Banyak aplikasi Android menyertakan shared library dalam format ARM (armeabi-v7a, arm64-v8a) saja, tanpa menyediakan versi untuk x86.
  • Emulator tidak selalu menyediakan translasi yang sempurna untuk library ARM ke x86. Hal ini menyebabkan Frida gagal memanfaatkan API native atau mem-hook fungsi yang spesifik ke libc atau library ARM lainnya.
  1. Translasi ABI pada Emulator
  • Emulator Android menggunakan Houdini (library translasi ABI) untuk menjalankan aplikasi berbasis ARM di x86. Namun, translasi ini hanya bekerja untuk menjalankan aplikasi, bukan untuk mendukung hooking atau instrumentation.
  • Ketika Frida mencoba mengakses fungsi native menggunakan dlopen atau memanipulasi pointer di memory, translasi Houdini sering kali gagal memberikan hasil yang sesuai.
  1. Masalah Kernel Emulator
  • Emulator x86 biasanya menggunakan kernel Linux yang berbeda dari perangkat asli. Beberapa syscall atau fitur low-level mungkin tidak tersedia atau berfungsi berbeda di emulator.
  • Frida bergantung pada kemampuan kernel untuk memanipulasi proses menggunakan ptrace. Jika kernel emulator tidak mengimplementasikan syscall yang dibutuhkan Frida, hooking akan gagal.
  1. Proteksi Tambahan pada Aplikasi
  • Beberapa aplikasi memiliki proteksi yang mendeteksi perbedaan lingkungan runtime. Proteksi ini dapat mendeteksi emulator berdasarkan arsitektur atau environment yang berbeda dari perangkat asli.
  • Aplikasi mungkin memblokir library instrumentation seperti Frida dengan mengecek integritas proses atau sistem file.

Itu aja dulu untuk artikel kali ini. Udah bingung saya mau ngetik uneg-uneg apalagi. Jika ada saran artikel lain, silahkan tulis di kolom komentar. Ekspresikan kualitas artikel ini menggunakan vote emoji dibawah jika berkenan ya.