Skip to content

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

  1. Mendeteksi Kerentanan Keamanan

    • Kode rentan terhadap eksploitasi (misalnya SQL injection, insecure data storage)
    • Penggunaan enkripsi lemah (MD5, SHA1)
  2. Menemukan Izin Mencurigakan

    • Izin berlebihan seperti akses kontak, lokasi, atau SMS
    • Komponen yang diekspor (exported activity/service)
  3. Mendeteksi Hardcoded Data

    • Password, API keys, token autentikasi disimpan dalam source code
  4. Memverifikasi Praktik Pengembangan Aman

    • Tidak adanya obfuscation kode (menggunakan ProGuard/R8)
    • Penggunaan fungsi berbahaya seperti loadUrl() di WebView

Tahapan Analisis Statis

TahapDeskripsi
1. Ekstraksi APKMenggunakan tools seperti APKTool untuk mengekstrak file .apk menjadi file sumber daya dan kode assembly (.smali)
2. Analisis AndroidManifest.xmlMemeriksa izin yang diminta, komponen yang diekspor, dan konfigurasi aplikasi
3. Pemeriksaan Kode Sumber/BytecodeMelihat apakah ada hardcoded credentials, enkripsi lemah, atau fungsi berbahaya
4. Analisis Library & DependensiMemastikan tidak ada library pihak ketiga yang memiliki kerentanan
5. Laporan Hasil TemuanMendokumentasikan 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:

xml
<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 MobSF atau SonarQube untuk analisis otomatis.


4. Struktur dan Aset Aplikasi

Termasuk file .dex, resource (res/), dan aset (assets/).

Hal yang Diperiksa

  • File .dex yang 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

ToolFungsi Utama
JADXDecompiler untuk mengubah file .dex ke bentuk Java yang mudah dibaca
APKToolDigunakan untuk mengekstrak dan memodifikasi APK
MobSF (Mobile Security Framework)Platform analisis otomatis untuk keamanan aplikasi mobile
Bytecode ViewerIDE untuk reverse engineering aplikasi Android
SonarQube + PluginsAnalisis 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

  1. Ekstraksi APK menggunakan APKTool:

    bash
    apktool d app-release.apk
  2. Analisis AndroidManifest.xml:

    • Cari aktivitas yang diekspor
    • Periksa apakah debugging aktif
  3. Lihat Kode Sumber menggunakan JADX:

    • Cari hardcoded password atau API key
    • Periksa validasi input login
  4. 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.