Pengantar dan Pengenalan Frida Mode Operation, Gadget Frida dan Tool Stalker Frida
Pada artikel kali ini saya akan membahas tentang pengantar dan pengenalan Frida seperti Mode Operation, Gadget Frida, dan Tool Stalker Frida.
Frida adalah toolkit instrumentasi dinamis yang dapat digunakan untuk mengeksekusi skrip sendiri dalam perangkat lunak.
Instrumentasi pada Frida mengacu pada proses memodifikasi atau memanipulasi kode sumber atau instruksi mesin dari aplikasi atau proses yang sedang berjalan.
Frida dapat digunakan untuk berbagai tujuan seperti reverse engineering, pengujian keamanan, debugging, dsb.
Fitur-fitur Frida:
- Dapat menyuntikan skrip sendiri ke dalam proses black box untuk menjalankan logika debugging khusus. Hook fungsi apa pun, atau melacak kode aplikasi pribadi, Frida tidak memerlukan akses ke kode sumber dan dapat digunakan pada perangkat iOS dan Android yang tidak di-jailbreak atau di-root.
- Multi-platform (portabel): Bekerja di Windows, macOS, Linux, iOS, Android.
- Memiliki rangkaian uji coba yang komprehensif dan telah melalui pengujian selama bertahun-tahun di berbagai kasus penggunaan.
- Gratis dan open source
Mode operation frida:
Frida menyediakan instrumentasi dinamis melalui Gum inti instrumentasinya yang ditulis dalam C. Kita biasanya ingin menulisnya dalam bahasa scripting sehingga mendapatkan loop back singkat saat mengembangkan dan memeliharanya. Di sinilah GumJS berperan. Dengan hanya beberapa baris C kita dapat menjalankan sepotong JavaScript di dalam runtime yang memiliki akses penuh ke API Gum, memungkinkan kita untuk mengaitkan fungsi, menghitung library yang dimuat, fungsi yang diimpor dan diekspor, membaca dan menulis memori, memindai memori untuk pola , dll.
GUM adalah singkatan dari “GUniversal Module,” yang merupakan komponen inti dalam kerangka kerja Frida. GUM memungkinkan kita untuk memodifikasi instruksi mesin yang ada pada aplikasi target secara dinamis. Ini adalah aspek yang kuat dalam Frida yang memungkinkan kita melakukan instrumen dan intervensi pada aplikasi atau proses secara efisien.
Beberapa Mode operasi
- Injected
Injection Mode: Dalam mode ini, kita menyuntikkan script Frida ke dalam aplikasi yang sedang berjalan. Script ini dieksekusi pada runtime aplikasi. - Embedded
Embedded Mode: Dalam mode ini, kita memasukkan kode Frida ke dalam aplikasi sebelum dikompilasi. Ini memungkinkan Frida berjalan sebagai bagian dari aplikasi. - Preloaded
Preloaded memungkinkan kita untuk memuat pustaka (library) tambahan sebelum pustaka yang lain dimuat saat menjalankan suatu program. Ini memungkinkan kita untuk “memaksakan” pustaka tertentu untuk dimuat sebelum program lainnya dimulai.
Mirip dengan LD_PRELOAD atau DYLD_INSERT_LIBRARIES.
LD_PRELOAD: Ini adalah variabel lingkungan yang memungkinkan kita untuk menentukan pustaka tambahan yang akan dimuat sebelum pustaka standar yang diperlukan oleh program. Dengan menggunakan LD_PRELOAD, kita dapat menggantikan fungsi-fungsi tertentu yang digunakan oleh program dengan implementasi kustom dari fungsi-fungsi tersebut.
Gadget frida
Gadget Frida adalah library bersama yang dimaksudkan untuk dimuat oleh program yang akan diinstrumentasi saat mode operasi Injected tidak sesuai. Hal ini dapat dilakukan dengan:
- Memodifikasi kode sumber program.
- Menambal program atau salah satu pustaka, misalnya dengan menggunakan alat seperti insert_dylib.
- Menggunakan fitur linker dinamis seperti LD_PRELOAD atau
DLD_INSERT_LIBRARIES.
Tool stalker frida
Stalker adalah mesin penelusuran kode Frida. Mesin ini memungkinkan sebuah proses untuk diikuti, menangkap setiap fungsi, setiap blok, bahkan setiap instruksi yang dieksekusi.
Stalker dapat dipanggil langsung melalui antarmuka Gum aslinya, sebagian besar pengguna akan memanggilnya melalui JavaScript API yang akan memanggil metode Gum ini atas nama mereka.
Beberapa hal yang dapat Anda lakukan dengan Stalker:
1. Memantau setiap instruksi yang dieksekusi oleh aplikasi, memungkinkan kita melihat bagaimana aplikasi bekerja dari dalam.
2. Stalker memungkinkan kita mendeteksi pola tertentu dalam alur eksekusi, seperti deteksi perulangan atau pembuatan objek.
3. Menganalisis alur eksekusi aplikasi untuk mengidentifikasi bagian kode yang dieksekusi dan alur kontrol yang diambil oleh program.
4. Melihat kapan suatu fungsi dipanggil dan bagaimana alur eksekusi masuk dan keluar dari fungsi tersebut.