Pada tulisan ini aku akan share writeup dari challenge yang berjudul “Mobile Pentesting” pada group Bhineka Tech.

Seperti yang ditulis pada deskripsi, kita ditugaskan untuk melakukan hacking dan reverse engineering pada file .apk yang diberikan, secara sederhana apk atau singkatan dari android package kit merupakan zip archive dan mengandung semua data yang diperlukan untuk dijalankan pada operating system android.

Kalian bisa download pada URL https://siber-tech.web.id/chall.apk dan setelah di install kita akan lihat tampilan aplikasi setelah dijalankan

Disini aku memakai android emulator dan kita bisa melihat tampilan setelah di install terdapat 2 input form yang digunakan untuk login dan jika kita menginputkan suatu string asal maka menampilkan pesan toast

Jadi disini untuk mempelajari cara kerja dan behaviour dari aplikasi kita akan melakukan reverse engineering dan melihat dari sisi code base dimana hal ini kita kenal dengan static analysis. Dan disini aku menggunakan JADX yaitu salah satu tools yang cukup powerfull untuk unpacking dan decompile pada suatu file apk

Kita mulai pada AndroidManifest.xml yang merupakan file krusial yakni berisi semua konfigurasi utama pada aplikasi, disini kita mendapatkan package name com.example.challenge_bhitech dan pada konfigurasi juga terdapat suatu permission INTERNET artinya aplikasi ini membutuhkan akses ke internet yang bisa diasumsikan kemungkinan aplikasi ini berkomunikasi dengan server/host external.

Masuk pada com -> example.challenge_bhitech -> MainActivity untuk mulai membaca pseudo code pada class utama

Okeyy jadi ada fungsi onCreate dan decrypt yang jika kita mengacu pada Android Activity LifeCycle, fungsi onCreate merupakan suatu fungsi yang pertama kali dijalankan saat activity dipanggil dan code disini tampak sederhana yang dimana pada fungsi onCreate melakukan deklarasi TextView dan Button dan jika button ditekan menggunakan method setOnClickListener akan ada 2 validasi menggunakan if statement

2 variable yang dibandingkan yaitu obj dan obj2 yang pada variable obj memanggil id dari R.id.username sementara pada ob2 memanggil id R.id.password

Secara sederhana deklarasi variable tampak seperti kode diatas, kemudian pada validasi if melakukan komparasi menggunakan method equals dari string Uf/mOpF136yF5Lmd05TjBQ== dan string hI147+XcKYxg4HK9bzQe0kkRpay5p3t4sCuTwqjqkDU= dengan inputan user dan disitu juga terlihat jika string yang dibandingkan di bungkus dengan function decryptCredential

Dan pada fungsi decryptCredential terkait dengan AES encryption

AES sendiri merupakan suatu algoritma enkripsi dengan operasi symteric cryptography artinya key yang digunakan untuk encrypt dan decrypt itu menggunakan key yang sama jadi disini kita memerlukan key untuk melakukan dekripsi

Dan jika kita melihat function decryptCredential memerlukan 2 arguments yaitu ciphertext dan key yang dimana pada saat instansiasi terlihat key dipanggil dari

jadi R.string.aes_key mengambil dari resource string pada attribute aes_key jadi kita bisa mencari string yang dicompile pada resources.arsc -> res -> values -> strings.xml

dan jika kita CTRL + F dengan keyword aes_key maka ditemukan name aes_key dengan value Bh1tecH_AES_KeYs yang merupakan key untuk melakukan decrypting jadi disini kita akan membuat simple script sederhana menggunakan python

lalu jika kita run

maka akan menampilan result plaintext dan lanjut kita inputkan di form login yang terdapat pada file apk

Saat berhasil terlihat kita berpindah intent atau activity yang lain yang juga pada activity ini terdapat suatu button get flag dan jika kita click maka akan redirect ke messaging apps / sms

Dan menampilkan suatu flag bhitech{wh0aa_thisIs_m0b1le_RE_coyy!}

Penutup

Jadi pada challenge ini kita belajar bagaimana melakukan RE dan decompile pada mobile apps untuk membypass suatu validasi tertentu, dimana yang ditulis pada write up ini merupakan cara klasik dan masih ada banyak teknik lain untuk solve challenge ini seperti yang tertulis pada deskripsi “ingat kata mas Jon Erickson dimana hacking itu seni jadi untuk mendapatkan flagnya banyak teknik yang bisa digunakan“, karena hanya untuk writeup dan aku tidak membahas keseluruhan teknik seperti hooking pada validasi login dan function menggunakan frida atau bisa juga melakukan patching dengan memodifikasi intruksi smali pada apk serta bisa juga langsung melakukan hit endpoint ke server untuk mendapatkan flagnya jadi tergantung dari kreativitas masing masing dan sekian itu saja semoga bermanfaat

 “Investasi dalam pengetahuan adalah hal terpenting.” -Benjamin Franklin

By xpl0dec

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *