88032023006 | ZICO

Praktik Minggu 5 Pentest Mobile

Decompile APK & Static Analysis

1. Pendahuluan

Artikel ini membahas praktik analisis statis aplikasi Android dengan metode decompile APK untuk mengidentifikasi potensi kelemahan keamanan tanpa menjalankan aplikasi.

2. Environment Pengujian

  • Host OS: Windows 11 (tanpa WSL, tanpa virtual machine Linux)
  • APKTool: Apktool v2.12.1
  • JADX: jadx-1.5.3
  • ADB Version: 1.0.41

3. Persiapan Awal

3.1 Mengambil File APK dari Emulator

Menentukan lokasi file APK F-Droid pada emulator:

Mengambil file APK F-Droid dari emulator ke sistem host Windows:

APK diekstrak langsung dari emulator untuk dilakukan analisis statis di sisi host Windows.

Pastikan file tersedia

Image

3.2 Decode APK dengan APKTool

Pastikan file tersedia

Image

3.3 Decompile Kode dengan JADX

Image

4. Analisis Hasil

4.1 Temuan: android:allowBackup="true"

Image

Risiko

Jika perangkat berada dalam kondisi ADB aktif atau perangkat terkompromi, attacker dapat:
- Melakukan backup data aplikasi
- Mengakses SharedPreferences, database lokal, dan file internal

Berpotensi menyebabkan kebocoran data pengguna, konfigurasi aplikasi, atau metadata sensitif.

Mitigasi

Set nilai berikut pada build production:

Jika backup memang dibutuhkan:
- Batasi data menggunakan backup_rules.xml
- Pastikan tidak ada data sensitif (token, credential) yang ikut ter-backup

4.2 Temuan: Beberapa Activity android:exported="true"

Image

Risiko

Activity yang diekspos (exported="true") dapat:
- Dipanggil oleh aplikasi lain
- Menjadi target Intent Injection

Jika tidak divalidasi dengan baik, attacker dapat:
- Mengakses fitur internal
- Memicu alur logika aplikasi tanpa otorisasi

Mitigasi

Set android:exported="false" untuk activity yang tidak perlu diakses eksternal
Jika harus true: Gunakan permission khusus

4.3 Temuan: Permission Sensitif & Berlebihan

Image Image

Risiko

MANAGE_EXTERNAL_STORAGE
- Memberikan akses luas ke seluruh storage pengguna
- Risiko kebocoran atau manipulasi file

QUERY_ALL_PACKAGES
- Memungkinkan enumerasi semua aplikasi terpasang
- Berpotensi melanggar privasi pengguna

WRITE_SETTINGS
- Dapat mengubah pengaturan sistem perangkat

Mitigasi

Terapkan principle of least privilege
- Hapus permission yang tidak benar-benar dibutuhkan
- Gunakan alternatif modern: Scoped Storage dan Storage Access Framework (SAF)
- Sertakan justifikasi jelas jika permission sensitif wajib digunakan

4.4 Temuan: android:requestLegacyExternalStorage="true"

Image

Risiko
- Menggunakan model storage lama (pre-Android 10)
- Memperluas akses file yang seharusnya dibatasi oleh Scoped Storage
- Berpotensi meningkatkan risiko kebocoran data

Mitigasi
- Migrasi penuh ke Scoped Storage
- Hapus flag ini pada target SDK modern
- Gunakan API penyimpanan resmi Android terbaru

4.5 Temuan: Banyak Intent Filter HTTP tanpa autoVerify

Risiko
- Intent dapat dipalsukan oleh aplikasi lain
- Risiko Intent Spoofing
- Pengguna bisa diarahkan ke alur aplikasi melalui URL tidak valid

Mitigasi
- Aktifkan android:autoVerify="true" untuk domain resmi
- Validasi domain dan path di sisi aplikasi
- Gunakan HTTPS saja jika memungkinkan

5. Kesimpulan

Berdasarkan hasil analisis statis dengan metode decompile APK menggunakan APKTool dan JADX pada aplikasi Android yang diuji, dapat disimpulkan bahwa aplikasi tidak menjalankan mode debug karena atribut android:debuggable tidak ditemukan pada AndroidManifest.xml, sehingga secara default berada pada kondisi produksi. Namun demikian, masih ditemukan beberapa potensi risiko keamanan, seperti allowBackup yang aktif, sejumlah activity dengan status exported="true", penggunaan permission sensitif yang cukup luas, serta penerapan legacy external storage. Konfigurasi tersebut berpotensi dimanfaatkan untuk akses tidak sah, penyalahgunaan intent, dan kebocoran data apabila aplikasi dijalankan pada perangkat yang terkompromi. Oleh karena itu, diperlukan penerapan prinsip least privilege, pembatasan komponen yang diekspos, penonaktifan backup untuk data sensitif, serta penyesuaian konfigurasi keamanan agar aplikasi lebih aman sebelum digunakan oleh pengguna umum.