Hi guys. pada kesempatan kali ini saya akan melakukan pentesting statis & dinamis pada aplikasi open source "AndroGoat.apk" yang bersumber dari https://github.com/satishpatnayak/AndroGoat. Beberapa tools yang saya gunakan antara lain:

  • Jadx-gui
  • Frida

A. Root Detection Bypass

None

Objectives dalam challenge ini meliputi:

  • Memahami rooting
  • Bagaimana aplikasi mendeteksi jika perangkat di root
  • Membypass deteksi root menggunakan tools yang disarankan
None

Bagaimana aplikasi mendeteksi jika perangkat di root ?

  • Pemeriksaan Binary su Aplikasi memindai direktori sistem untuk mendeteksi file su yang menandakan adanya akses root.
  • Deteksi Aplikasi Root Manager Aplikasi memeriksa paket aplikasi yang terinstal untuk menemukan aplikasi pengelola root seperti Magisk, SuperSU, atau KingoRoot.
  • Pemeriksaan System Properties Aplikasi membaca properti sistem menggunakan perintah getprop untuk mendeteksi modifikasi sistem.
  • Verifikasi Integritas Perangkat Menggunakan Google Play Integrity API untuk memeriksa integritas perangkat melalui server Google.
  • Pemeriksaan Izin Direktori Aplikasi mencoba menulis file di direktori sistem yang seharusnya terlindungi untuk mendeteksi akses root.
None
AndroidManifest.xml

Jika melihat pada file AndroidManifest.xml Root Detection mempunyai nama activity RootDetectionActivity jika melihat ke dalam logic kode-nya

None
RootDetectionActivity
None
Method isRooted

Pada bagian ini dapat dilihat bahwa aplikasi melakukan pemeriksaan apakah perangkat dalam kondisi rooted atau tidak. Jika perangkat terdeteksi root, maka aplikasi akan menampilkan pesan "Device is rooted", sedangkan jika tidak, akan muncul pesan "Device is not rooted".

Untuk melakukan pengujian lebih lanjut, saya menggunakan tool Frida serta sebuah script open-source bernama fridaantiroot yang tersedia di CodeShare. Script tersebut digunakan untuk melakukan bypass mekanisme Root Detection pada aplikasi AndroGoat.

None
frida -U -f owasp.sat.agoat -l rootbypass.js

Frida kemudian akan menjalankan aplikasi dan mengirimkan payload untuk membypass sistem deteksi aplikasi tersebut

None

Setelah payload dikirimkan aplikasi sudah berhasil di bypass dan tidak mendeteksi bahwa perangkat tidak di rooted.

B. Hardcode Issues

Objectives dalam challange ini:

  • Memahami konsep secret dan proses secret scanning
  • Mengidentifikasi secret yang tersimpan di dalam aplikasi
  • Mengetahui risiko dari hardcoded secret di dalam kode aplikasi

Shopping Cart

None

Objectives dalam challange ini:

  • Menemukan lokasi promocode yang di-hardcode di dalam aplikasi.
  • Menggunakan promocode tersebut untuk mendapatkan produk secara gratis.

Dalam file AndroidManifest.xml kita dapat melihat Activity dari tantangan kali ini

None
AndroidManifest.xml

Melihat ke dalam kode file HardCodeActivity kita menemukan promocode terlihat jelas dalam bentuk Hardcoded

None
HardCodeActivity
None

AI Chat

None

Objectives dalam challange ini

  • Menemukan lokasi OpenAI API Key yang di-hardcode dalam aplikasi.
  • Menggunakan tools secret scanning untuk mengidentifikasi keberadaan API key.

Dengan memeriksa file AndroidManifest.xml dan Activity dari fitur AI Chat, dapat ditemukan API Key yang di-hardcode di dalam aplikasi.

None
AndroidManifest.xml
None
AIChatActivity
None

API key yang bocor bisa dimanfaatkan oleh attacker dan menyebabkan developer membayar bill yang mahal dari OpenAI (Quota Theft).

View Cloud Services

None

Objectives dalam challenge ini:

  • Menemukan lokasi AWS Access Key dan Secret Key yang di-hardcode dalam aplikasi.
  • Menggunakan tools secret scanning untuk mengidentifikasi keberadaan kunci tersebut.

Dengan memeriksa file AndroidManifest.xml dan Activity dari fitur View Cloud Services, dapat ditemukan Key ID dan Access Key yang di-hardcode di dalam aplikasi

None
AndroidManifest.xml
None
CloudServicesActivity

Dengan kredensial tersebut attacker dapat menggunakan AWS CLI untuk mendownload data pribadi pelanggan, menghapus backups, atau menambang cryptocurrency di website perusahaan

Sekian, Terimakasih.