AizuDemy

Panduan Reverse Engineering APK Android: Deteksi Kebocoran API Key

Panduan Reverse Engineering APK Android: Deteksi Kebocoran API Key
IKLAN
IDCloudHost
🎧
Dengarkan Artikel Ini
Suara AI Otomatis β€’ 4 mnt baca baca
⚑ TL;DR

Poin Kunci Artikel Ini:

  • Periksa package util, network, atau config.
  • [ ] Menggunakan backend proxy untuk request yang butuh kredensial.
  • [ ] Menggunakan enkripsi/obfuscation jika terpaksa menyimpan rahasia di klien.
πŸ“‹ Daftar Isi Materi Tutup β–΄
Coba bayangkan: Anda sudah susah payah bikin aplikasi Android, deploy ke Play Store, lalu tiba-tiba tagihan API key Google Maps Anda melonjak gila-gilaan. Ternyata ada orang yang mengunduh APK Anda, membalikkan kodenya, mengambil API key, lalu pakai seenaknya. Bukan skenario yang enak, kan? Kejadian seperti ini lebih sering terjadi dari yang kita kira. Banyak aplikasi Android menyimpan rahasia sensitifβ€”seperti API key, token OAuth, private key, atau URL databaseβ€”langsung di dalam kode. Padahal APK itu seperti ZIP: siapa pun bisa membongkarnya. Dalam artikel ini, kita akan belajar cara mengecek APK sendiri untuk menemukan kebocoran tersebut sebelum orang lain melakukannya. Ini bukan tutorial meretas, tapi pandangan defensif: bagaimana developer bisa mengaudit aplikasinya sendiri.

Kenapa Hardcoded Secret Berbahaya?

APK pada dasarnya adalah arsip ZIP. Di dalamnya ada file classes.dex, resources.arsc, AndroidManifest.xml, dan library native. Karena bytecode Android tidak dikompilasi ke mesin native, ia masih bisa dikembalikan mendekati kode Java/Kotlin aslinya. Beberapa konsekuensi yang umum terjadi:
  • Kuota API disalahgunakan. API key Google Maps, Firebase, atau OpenAI yang bocor bisa dipakai orang lain hingga tagihan Anda membengkak.
  • Akses backend terbuka. Kredensial database atau token admin memungkinkan peretas membaca atau mengubah data.
  • Data pengguna bocor. Token akses bisa digunakan untuk mencuri informasi pribadi pengguna.
  • Layanan pihak ketiga disalahgunakan. Kredensial Stripe, Midtrans, Twilio, atau SendGrid yang terexpose bisa digunakan untuk aktivitas ilegal.

Peralatan yang Kita Butuhkan

Sebelum mulai, siapkan tiga tools ini:
  • Jadx / Jadx-GUI β€” decompiler APK ke Java.
  • ADB β€” untuk mengambil APK dari perangkat.
  • Apktool β€” untuk membongkar resource XML.

Langkah 1: Ambil APK dari Perangkat

Aktifkan USB Debugging di HP Android Anda, sambungkan ke komputer, lalu jalankan perintah berikut:
adb shell pm list packages | grep targetapp
adb shell pm path com.example.targetapp
adb pull /data/app/~~random_hash/com.example.targetapp-random_hash/base.apk target_app.apk
Sekarang kita sudah punya file APK di komputer.

Langkah 2: Bongkar APK dengan Jadx

Buka file APK di Jadx:
jadx-gui target_app.apk
Jadx akan menampilkan struktur kode Java hasil decompile. Untuk mencari API key atau token, tekan Ctrl + Shift + F dan cari kata seperti api_key, apikey, token, secret, password, atau firebase. Tips pencarian cepat:
  • Perhatikan file strings.xml dan AndroidManifest.xml.
  • Cek class yang namanya BuildConfig atau Constants.
  • Periksa package util, network, atau config.

Langkah 3: Periksa String dengan Terminal

Selain Jadx, Anda juga bisa memakai perintah strings dari terminal untuk menyaring string yang terdapat di APK:
unzip -p target_app.apk classes.dex | strings | grep -iE 'apikey|api_key|token|secret|password'
Ini cara cepat meskipupun tidak selalu rapi. Hasilnya bisa dipakai untuk memastikan tidak ada string sensitif yang terekspos.

Cara Melindungi Aplikasi

Setelah menemukan masalah, berikut beberapa pendekatan untuk mengurangi risiko:

1. Jangan Simpan Rahasia di Kode

Solusi paling ideal adalah tidak menyimpan API key di kode. Gunakan backend proxy yang memegang kredensial di server. Aplikasi Android hanya mengirim request ke backend Anda, bukan langsung ke layanan pihak ketiga.
// Jangan begini
const val API_KEY = "AIzaSyD-EXAMPLE_KEY" // bahaya!

// Lebih baik begini
suspend fun getNearbyPlaces(query: String) = apiService.searchPlaces(query)
// Rahasia disimpan di server backend

2. Native Library + Obfuscation

Kalau memang terpaksa menyimpan rahasia di klien, pindahkan ke native C/C++ dan obfuscat string. Tetapi ingat, ini hanya mempersulit, bukan membuat aman sepenuhnya.

3. Secrets Gradle Plugin

Untuk development, gunakan plugin ini agar kredensial tetap berada di local.properties dan tidak ikut masuk ke Git.
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1"
}
Dan file local.properties:
MAPS_API_KEY=AIzaSyD-EXAMPLE_SECURE_KEY_LOCAL
PAYMENT_API_SECRET=sec_live_998123123
Jangan lupa tambahkan local.properties ke .gitignore.

Checklist Keamanan Kredensial Android

  • [ ] local.properties dan file sensitif sudah masuk .gitignore.
  • [ ] Tidak ada API key atau token di strings.xml dan AndroidManifest.xml.
  • [ ] Menggunakan backend proxy untuk request yang butuh kredensial.
  • [ ] Menggunakan enkripsi/obfuscation jika terpaksa menyimpan rahasia di klien.
  • [ ] Terintegrasi secret scanner seperti Gitleaks di CI/CD.

Integrasi Secret Scanner di CI/CD

Tambahkan pemindai otomatis di pipeline. Contoh dengan GitHub Actions dan Gitleaks:
name: Security Code Scan

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  gitleaks-scan:
    name: Detect Hardcoded Secrets
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run Gitleaks Scanner
        uses: gitleaks/gitleaks-action@v2
        env:
          GITHUB_TOKEN: {{ secrets.GITHUB_TOKEN }}

Kesimpulan

Reverse engineering APK bukan hal yang harus ditakuti. Malah, sebaiknya kita sendiri yang melakukannya secara berkala untuk memastikan tidak ada rahasia sensitif yang tertinggal di kode. Ingat: semakin mudah aplikasi Anda dibongkar, semakin besar risiko kebocoran. Lakukan audit sederhana ini sebelum rilis ke produksi. Kombinasikan dengan backend proxy yang aman dan secret scanner di CI/CD. Dengan begitu, Anda tidak hanya menjaga aplikasi, tetapi juga menjaga reputasi dan dompet Anda.
A
Aizu Dev

Tim penulis AizuDemy yang menyajikan tutorial teknologi, cloud, dan pengembangan perangkat lunak dalam Bahasa Indonesia.

πŸ’¬ Komentar (0)

Tulis Komentar

πŸ“– Artikel Terkait