Analisis Statis Aplikasi Android
Pengantar Keamanan Aplikasi Mobile
Apa Itu Android Static Analysis?
Android Static Analysis adalah teknik dalam pengujian keamanan aplikasi Android yang dilakukan tanpa menjalankan aplikasi secara langsung. Teknik ini bertujuan untuk mendeteksi potensi kerentanan, kode mencurigakan, atau pelanggaran kebijakan keamanan dengan menganalisis:
- Source code
- File biner atau bytecode
- Konfigurasi aplikasi
- Library pihak ketiga
Menurut OWASP:
"Static analysis adalah bagian penting dari proses pengujian keamanan aplikasi mobile karena dapat mengidentifikasi isu sebelum aplikasi dijalankan."
Tujuan Android Static Analysis
Mendeteksi Kerentanan Keamanan
- Kode rentan terhadap eksploitasi (misalnya SQL injection, insecure data storage)
- Penggunaan enkripsi lemah (MD5, SHA1)
Menemukan Izin Mencurigakan
- Izin berlebihan seperti akses kontak, lokasi, atau SMS
- Komponen yang diekspor (exported activity/service)
Mendeteksi Hardcoded Data
- Password, API keys, token autentikasi disimpan dalam source code
Memverifikasi Praktik Pengembangan Aman
- Tidak adanya obfuscation kode (menggunakan ProGuard/R8)
- Penggunaan fungsi berbahaya seperti
loadUrl()di WebView
Tahapan Analisis Statis
| Tahap | Deskripsi |
|---|---|
| 1. Ekstraksi APK | Menggunakan tools seperti APKTool untuk mengekstrak file .apk menjadi file sumber daya dan kode assembly (.smali) |
| 2. Analisis AndroidManifest.xml | Memeriksa izin yang diminta, komponen yang diekspor, dan konfigurasi aplikasi |
| 3. Pemeriksaan Kode Sumber/Bytecode | Melihat apakah ada hardcoded credentials, enkripsi lemah, atau fungsi berbahaya |
| 4. Analisis Library & Dependensi | Memastikan tidak ada library pihak ketiga yang memiliki kerentanan |
| 5. Laporan Hasil Temuan | Mendokumentasikan semua temuan keamanan beserta rekomendasi remediasi |
Bagian Utama yang Dianalisis
1. AndroidManifest.xml
File ini berisi informasi penting tentang struktur dan izin aplikasi.
Hal yang Perlu Diperhatikan
- Izin yang diminta:
Contoh:INTERNET,READ_EXTERNAL_STORAGE,CAMERA - Komponen yang diekspor:
Activity, Service, Broadcast Receiver, Content Provider yang bisa diakses oleh aplikasi lain. - Pengaturan Debugging:
android:debuggable="true"bisa menjadi celah keamanan jika dibiarkan aktif di versi produksi.
💡 Tips Belajar: Cari izin berikut dalam manifest:
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>2. Kode Sumber atau Bytecode
Analisis dilakukan baik pada kode sumber (Java/Kotlin) maupun bytecode hasil dekompilasi (.smali).
Hal yang Dicari
- Hardcoded Credentials
Contoh: password, token API, URL internal - Penggunaan Enkripsi Lemah
Contoh: MD5, SHA1, Base64 tanpa salt - Fungsi Berbahaya
Contoh:WebView.loadUrl(),Runtime.getRuntime().exec()untuk eksekusi shell
💡 Tips Belajar: Gunakan JADX untuk melihat kode Java dari APK.
3. Library & Dependensi
Banyak aplikasi menggunakan library pihak ketiga yang bisa membawa risiko keamanan.
Risiko Umum
- Library usang dengan CVE (Common Vulnerabilities and Exposures) dikenal
- Dependency Confusion
- Penggunaan API tidak aman
💡 Tips Belajar: Gunakan tools seperti
MobSFatauSonarQubeuntuk analisis otomatis.
4. Struktur dan Aset Aplikasi
Termasuk file .dex, resource (res/), dan aset (assets/).
Hal yang Diperiksa
- File
.dexyang bisa mengandung kode berbahaya - Gambar, XML, atau file konfigurasi yang menyimpan informasi sensitif
- Konfigurasi jaringan (seperti file
network_security_config.xml)
Tools Umum untuk Android Static Analysis
| Tool | Fungsi Utama |
|---|---|
| JADX | Decompiler untuk mengubah file .dex ke bentuk Java yang mudah dibaca |
| APKTool | Digunakan untuk mengekstrak dan memodifikasi APK |
| MobSF (Mobile Security Framework) | Platform analisis otomatis untuk keamanan aplikasi mobile |
| Bytecode Viewer | IDE untuk reverse engineering aplikasi Android |
| SonarQube + Plugins | Analisis kode untuk kepatuhan keamanan dan coding standards |
Kelebihan dan Kekurangan Android Static Analysis
✅ Kelebihan
- Tidak perlu menjalankan aplikasi – analisis bisa dilakukan hanya dengan file APK
- Cepat dan efisien – cocok untuk skrining awal
- Dapat mendeteksi kesalahan konfigurasi awal seperti izin berlebihan atau debug mode aktif
- Membantu developer memperbaiki masalah sebelum deploy
❌ Kekurangan
- Tidak bisa mendeteksi kerentanan runtime seperti eksploitasi logika bisnis atau serangan jaringan
- Tidak efektif terhadap kode yang diobfuskasi
- Tidak bisa menangkap perilaku dinamis seperti interaksi jaringan atau eksekusi payload
Studi Kasus Sederhana
Target: Aplikasi Login Sederhana
Langkah-langkah
Ekstraksi APK menggunakan APKTool:
bashapktool d app-release.apkAnalisis AndroidManifest.xml:
- Cari aktivitas yang diekspor
- Periksa apakah debugging aktif
Lihat Kode Sumber menggunakan JADX:
- Cari hardcoded password atau API key
- Periksa validasi input login
Gunakan MobSF untuk analisis otomatis:
- Upload APK ke MobSF
- Tunggu laporan keamanan
Contoh Temuan
- Password disimpan sebagai string biasa
- Tidak ada enkripsi pada penyimpanan lokal
- Aktivitas login bisa diakses dari aplikasi lain
Tips dan Trik untuk Analisis Statis
🔹 Selalu gunakan alat dekompilasi modern seperti JADX atau Bytecode Viewer
🔹 Periksa semua izin yang diminta dan pastikan relevan dengan fungsi aplikasi
🔹 Hindari menggunakan API deprecated atau enkripsi lemah
🔹 Pastikan tidak ada kode debug aktif di build release
🔹 Gunakan obfuscation (ProGuard/R8) untuk melindungi kode sumber
Kesimpulan
Android Static Analysis adalah langkah penting dalam siklus pengujian keamanan aplikasi. Beberapa manfaat utamanya: ✅ Mencegah eksploitasi kerentanan sebelum aplikasi dirilis
✅ Memverifikasi konfigurasi keamanan dasar
✅ Meningkatkan kesadaran akan praktik pengembangan yang aman
Namun, tetap diperlukan Dynamic Analysis untuk menguji perilaku aplikasi saat dijalankan dan mendeteksi serangan berbasis jaringan atau logika bisnis.