Alat dan Bahan
- Vulnerable Android App
- Nox Android Emulator
- Apktool
- JD-GUI
- JADX-GUI
- ADB
Langkah-langkah
Extract berkas re1-e7e4ad1a.zip, terdapat file re1-e7e4ad1a.apk.
Buka Nox emulator dan pasang aplikasi tersebut.
Cara 1
Bongkar file re1-e7e4ad1a.apk dengan menggunakan apktool dengan perintah:
apktool d -s re1-e7e4ad1a.apk
Kemudian konversi file dex menjadi jar dengan d2j-dex2jar.
d2j-dex2jar classes.dex
Maka akan menghasilkan file baru classes-dex2jar.jar.
Buka file classes-dex2jar.jar dengan JD-GUI.
Cara 2
Buka berkas re1-e7e4ad1a.apk dengan JADX-GUI.
Amati setiap Class dan pelajari alur programnya.
Selain menggunakan Java, aplikasi Android menggunakan fungsi melalui library lain.
static {
System.loadLibrary("plokm");
}
Amati juga berkas string.xml dan public.xml, anda akan menemukan username login ke aplikasi ini.
...
<string name="username">secl-007</string>
...
Debug
Sekarang debug library tersebut menggunakan ADB dan IDA Pro. Aktifkan root pada pengaturan Nox.
Hubungkan ADB dengan Nox.
Unggah file android_server pada Nox agar IDA Pro bisa terhubung dengan aplikasi.
Masuk ke dalam shell sebagai root dan jalankan berkas android server sebagai background process.
Ternyata gagal, arsitektur android_server berbeda dengan Nox player.
Android ARM Emulator
Coba dengan arsitektur ARM.
Pasang vulnerable Android app ke emulator.
Lakukan port forwarding agar IDA Pro pada komputer Host bisa terhubung dengan device Guest.
adb forward tcp:23946 tcp:23946
Buka IDA Pro (32 bit), Pilih Menu -> Debugger -> Attack -> Remote ARM Linux/Android Debugger
Kotak dialog akan muncul seperti ini.
Cari com.ssctf.seclreg
melalui fitur Search.
Masuk ke mode Debug.
Pilih Menu -> Debugger -> Debugger windows -> Module list
Cari library plokm
dengan Quick Filter (Ctrl+F).
Double click pada item library plokm
sehingga muncul kotak dialog berisi fungsi-fungsi yang ada dalam library tersebut.
Amati fungsi getpl
yang berkaitan dengan class Seclo0o.
package com.ssctf.seclreg;
public class Seclo0o {
public native boolean getpl(String str, String str2);
}
Pada kotak dialog IDA View PC, tekan F5 agar menampilkan kotak dialog Pseudocode.
Amati alur program melalui Pseudocode.
Atur breakpoint pada kode dibawah ini.
Panjang password sesuai kode diatas adalah 39 karakter. Untuk mendapatkan password yang benar maka atur input password pada aplikasi Android sebanyak 39 karakter. Tujuan akhirnya adalah mendapatkan password yang ada dalam memori aplikasi Android.
Tekan button Play debug, kemudian isi username secl-007
dan password abcdef0123456789abcdef0123456789abcdef0
pada aplikasi Android.
Pilih button Sign.
Ketika breakpoint sudah sampai kode ini.
((void (__fastcall *)(unsigned int, _DWORD))unk_AFBF5B28)(0xAFC050C9, &v49);
Tekan button Play lagi, agar breakpoint berhenti pada kode sehingga password sudah mengisi memori program pada alamat 0xAFC050C9
.
v12 = (unsigned int)((int (__fastcall *)(unsigned int, int))unk_AFBF5B48)(0xAFC050C9, v16) <= 0;
Kembali ke IDA Pro, pada Hex View lakukan jump address untuk menginspeksi variabel 0xAFC050C9
. Pada IDA Pro, tekan G dan isikan alamat variabel 0xAFC050C9
.
Password yang benar sudah muncul pada Hex View.
AFC050C9 53 53 43 54 46 7B 6F 74 79 33 65 61 50 24 67 39 SSCTF{oty3eaP$g9
AFC050D9 38 36 69 77 68 77 33 32 6A 25 4F 4A 29 67 30 6F 86iwhw32j%OJ)g0o
AFC050E9 37 4A 2E 43 47 3A 7D 00 00 00 00 00 00 00 00 00 7J.CG:}.........