Serangan MITM di Aplikasi Seluler — apa itu, jenis dan perlindungan dari penyadapan

Penulis: IT Sectr Diterbitkan: 2026-04-04 Waktu membaca: 10 mnt

Man-in-the-Middle (MITM) — serangan "manusia di tengah", di mana penjahat cyber menyadap, membaca atau mengubah lalu lintas antara dua pihak tanpa sepengetahuan mereka. Menurut data Kaspersky, 2025, jumlah serangan MITM pada perangkat seluler meningkat 35% dalam dua tahun terakhir. Masalah utama penyadapan lalu lintas adalah bahwa pengguna tidak melihat tanda-tanda serangan — koneksi terlihat normal.

Poin Utama

  • Serangan MITM — penyadapan komunikasi antara klien dan server untuk mencuri atau memodifikasi data tanpa sepengetahuan peserta.
  • ARP Spoofing — pemalsuan alamat MAC gateway untuk mengarahkan lalu lintas melalui perangkat penyerang di jaringan lokal.
  • SSL Stripping — penurunan koneksi HTTPS yang aman menjadi HTTP yang tidak aman melalui penyadapan permintaan pertama.
  • Public Wi-Fi — lingkungan utama untuk serangan MITM: titik akses tidak aman memungkinkan penyadapan lalu lintas semua perangkat yang terhubung.
  • Certificate Pinning — metode perlindungan paling efektif: aplikasi memeriksa sertifikat server di tingkat kode.

Apa itu serangan MITM?

Man-in-the-Middle (MITM) — jenis serangan cyber di mana penjahat cyber diam-diam menyusup ke saluran komunikasi antara dua pihak. Penjahat cyber dapat menyadap, membaca, dan memodifikasi data yang dikirimkan, tetap tidak terlihat oleh kedua pihak.

Di aplikasi seluler, serangan MITM sangat berbahaya karena perangkat terus-menerus terhubung ke berbagai jaringan — rumah, kantor, Wi-Fi publik di kafe dan bandara. Setiap pergantian jaringan berpotensi menciptakan celah untuk serangan. Menurut Verizon Mobile Security Index (2025), 43% organisasi setidaknya pernah mengalami serangan MITM pada perangkat seluler perusahaan.

Bahaya utama MITM — kerahasiaan: pengguna dan server tidak menerima sinyal tentang penyadapan. Sesi terlihat normal, data dikirimkan, tidak ada kesalahan sertifikat (jika penyerang menggunakan sertifikatnya sendiri). Deteksi serangan hanya mungkin dilakukan di tingkat infrastruktur jaringan atau dengan alat khusus.

Pengembang harus memahami mekanisme serangan MITM untuk merancang perlindungan di tingkat aplikasi, tidak hanya mengandalkan keamanan lapisan transportasi.

Jenis utama serangan MITM

Klasifikasi serangan MITM mencakup beberapa jenis yang berbeda dalam metode penyusupan ke saluran komunikasi. Dalam pengembangan seluler, tiga jenis paling relevan.

ARP Spoofing di jaringan lokal

ARP Spoofing — teknik di mana penyerang mengirimkan paket ARP palsu ke jaringan lokal, menghubungkan alamat MAC-nya dengan alamat IP gateway. Setelah itu, semua lalu lintas korban diarahkan melalui perangkat penyerang, yang meneruskannya ke gateway, tetap tidak terlihat.

Untuk melakukan serangan, alat seperti Ettercap atau BetterCAP yang mengotomatiskan ARP-spoofing sudah cukup. Serangan hanya mungkin dilakukan dalam satu subnet, sehingga pengguna jaringan Wi-Fi publik paling rentan. Jaringan modern dengan inspeksi ARP dinamis (DAI) pada switch terkelola memblokir jenis serangan ini.

Perlindungan di tingkat aplikasi dari ARP Spoofing tidak mungkin — ini masalah infrastruktur jaringan. Namun, aplikasi dapat mendeteksi anomali dalam koneksi jaringan dengan bantuan perpustakaan seperti TrustKit untuk iOS atau Network Security Config untuk Android.

DNS Spoofing dan penyadapan lalu lintas

DNS Spoofing (atau DNS Cache Poisoning) — pemalsuan catatan DNS di jalan dari klien ke server DNS. Penyerang menyadap permintaan DNS aplikasi dan mengembalikan alamat IP palsu, mengarahkan lalu lintas ke servernya sendiri alih-alih ke server yang sah.

Serangan sangat efektif di jaringan publik di mana server DNS ditetapkan secara otomatis melalui DHCP. Penyerang dapat mengkonfigurasi server DNS sendiri yang mengembalikan alamat IP palsu untuk domain target. Pengguna melihat URL yang sah di browser, tetapi terhubung ke server penyerang.

Perlindungan dari DNS Spoofing di sisi aplikasi dilakukan melalui DNS-over-HTTPS (DoH) atau DNS-over-TLS (DoT), yang mengenkripsi permintaan DNS. Android 9+ dan iOS 14+ mendukung DoH sistem, aplikasi dapat secara eksplisit mengaktifkan opsi ini.

SSL Stripping — menghindari HTTPS

SSL Stripping — serangan di mana penyerang menurunkan koneksi HTTPS yang aman menjadi HTTP yang tidak aman. Teknik ini mengeksploitasi fakta bahwa banyak pengguna secara manual mengetik example.com alih-alih https://example.com, dan koneksi pertama dibuat melalui HTTP.

Alat seperti sslstrip (Moxie Marlinspike, 2009) dan bettercap secara otomatis menyadap permintaan HTTP, membuat koneksi HTTPS dengan server atas nama mereka sendiri, dan mengirimkan lalu lintas yang didekripsi ke klien melalui HTTP. Browser tidak menampilkan ikon gembok — pengguna tidak tahu bahwa koneksi tidak aman.

Perlindungan modern — HTTP Strict Transport Security (HSTS): server memberi tahu browser bahwa semua koneksi masa depan harus melalui HTTPS. HSTS Preload List juga melindungi dari serangan pertama, tetapi memerlukan pendaftaran domain sebelumnya.

Bagaimana serangan MITM bekerja di aplikasi seluler

Serangan MITM tipikal pada aplikasi seluler melalui empat tahap. Setiap tahap menggunakan kerentanan yang berbeda, dan untuk perlindungan penuh, semua vektor harus diblokir.

Tahap pertama — penyusupan: penyerang berada di jalur lalu lintas antara perangkat dan server. Ini bisa berupa ARP Spoofing di jaringan lokal, titik Wi-Fi palsu (Evil Twin), atau kompromi server DNS penyedia. Perangkat seluler sangat rentan saat terhubung secara otomatis ke jaringan terbuka.

Tahap kedua — penyadapan: setelah penyusupan, penyerang mulai membaca semua paket yang dipertukarkan aplikasi dan server. Pada tahap ini, ia mengumpulkan metadata: URL permintaan, ukuran paket, cookie, header. Bahkan jika data dienkripsi, metadata dapat mengungkapkan struktur aplikasi dan logika bisnis.

Tahap ketiga — dekripsi (jika lalu lintas dienkripsi): penyerang membuat dua koneksi TLS — satu dengan server (menggunakan sertifikat palsu), satu dengan klien. Aplikasi menganggap koneksi aman, tetapi penyerang melihat semua data dalam bentuk terbuka. Tanpa Certificate Pinning, ini berfungsi untuk sertifikat apa pun yang diinstal di penyimpanan sistem.

Tahap keempat — modifikasi dan eksfiltrasi: penyerang tidak hanya dapat membaca, tetapi juga memodifikasi data yang dikirimkan. Di aplikasi keuangan, ini dapat berarti mengubah nomor rekening penerima, di permintaan API — mengubah parameter otorisasi. iOS dan Android merekomendasikan implementasi pemeriksaan integritas respons di tingkat aplikasi.

Contoh kode: perlindungan dari penyadapan di Android dan iOS

Mari kita lihat contoh praktis perlindungan dari serangan MITM menggunakan Certificate Pinning di Kotlin dan Swift. Contoh-contoh ini memblokir penggantian sertifikat bahkan dengan penyimpanan sistem yang dikompromikan.

Certificate Pinning di Android (OkHttp)

OkHttp — perpustakaan HTTP standar untuk Android yang mendukung CertificatePinner. Tentukan hash SHA-256 sertifikat server Anda — sertifikat lain akan ditolak.

kotlin
import okhttp3.CertificatePinner
import okhttp3.OkHttpClient

val certificatePinner = CertificatePinner.Builder()
    .add(
        "api.example.com",
        "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    )
    .build()

val client = OkHttpClient.Builder()
    .certificatePinner(certificatePinner)
    .build()

Certificate Pinning di iOS (URLSession)

Di iOS, gunakan URLSessionDelegate untuk verifikasi manual sertifikat server. Bandingkan SecCertificateRef dengan salinan yang disimpan secara lokal.

swift
class SessionDelegate: NSObject, URLSessionDelegate {
    func urlSession(
        _ session: URLSession,
        didReceive challenge: URLAuthenticationChallenge,
        completionHandler: @escaping (
            URLSession.AuthChallengeDisposition,
            URLCredential?
        ) -> Void
    ) {
        guard let serverTrust = challenge.protectionSpace
            .serverTrust else { return }

        let pinnedCert = SecCertificateCreateWithData(
            nil,
            pinnedCertData as CFData
        )

        let serverCerts = (0..<SecTrustGetCertificateCount(serverTrust))
            .compactMap { SecTrustGetCertificateAtIndex(serverTrust, $0) }

        if serverCerts.contains { CFEqual($0, pinnedCert) } {
            completionHandler(.useCredential, URLCredential(trust: serverTrust))
        } else {
            completionHandler(.cancelAuthenticationChallenge, nil)
        }
    }
}

Network Security Config di Android

Android mendukung perlindungan deklaratif melalui file XML network_security_config.xml, yang memblokir lalu lintas di tingkat OS tanpa menulis kode.

xml
<!-- network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">api.example.com</domain>
        <pin-set expiration="2027-07-01">
            <pin digest="SHA-256">AAAAAAAAAAAAAAAAAAAAAAAAAAAA</pin>
        </pin-set>
    </domain-config>
</network-security-config>

Metode perlindungan aplikasi seluler dari MITM

Perlindungan komprehensif dari serangan MITM mencakup langkah-langkah di tingkat aplikasi, server, dan infrastruktur jaringan. Di bawah ini adalah rekomendasi utama untuk Android dan iOS.

Gunakan Certificate Pinning — pengikatan sertifikat server dalam kode aplikasi. Berbeda dengan verifikasi TLS standar yang mempercayai sertifikat apa pun dari penyimpanan sistem, Certificate Pinning memeriksa sertifikat tertentu atau kunci publiknya. OkHttp di Android dan TrustKit di iOS menyediakan implementasi siap pakai dari mekanisme ini.

Paksakan HTTPS dan HSTS: semua permintaan jaringan harus melalui HTTPS, dan server harus mengembalikan header Strict-Transport-Security. Untuk Android, tambahkan android:usesCleartextTraffic="false" ke manifes — ini melarang koneksi HTTP di tingkat OS. iOS secara default melarang HTTP sejak iOS 9 melalui App Transport Security (ATS).

Implementasikan pemeriksaan integritas respons: tandatangani respons server dengan tanda tangan digital yang diperiksa aplikasi. Bahkan jika penyerang menyadap lalu lintas HTTPS (melalui proxy dengan instalasi ulang sertifikat), ia tidak dapat memalsukan tanda tangan tanpa kunci privat server. Gunakan JWT dengan RS256 atau tanda tangan HMAC untuk operasi kritis.

Di sisi server, aktifkan HTTP Public Key Pinning (HPKP) — direktif yang memberi tahu browser atau aplikasi sertifikat mana yang dianggap valid untuk domain tertentu. Namun, HPKP memerlukan kehati-hatian: konfigurasi yang salah dapat memblokir akses ke aplikasi untuk waktu yang lama. Google merekomendasikan penggunaan HPKP hanya dalam kombinasi dengan sertifikat cadangan.

Menurut NIST SP 800-52 Rev. 2 (2024), kombinasi TLS 1.3, Certificate Pinning dan HSTS menghilangkan 99% vektor serangan MITM yang diketahui pada aplikasi seluler. Pengembang disarankan untuk menguji perlindungan dengan alat seperti mitmproxy sebelum mempublikasikan aplikasi.

Pertanyaan yang Sering Diajukan

Bagaimana cara mengetahui bahwa saya diserang melalui MITM?

Tanda-tanda serangan MITM meliputi perlambatan koneksi yang tiba-tiba, peringatan tentang sertifikat yang tidak tepercaya (yang sebelumnya tidak ada), ketidakcocokan URL dan konten halaman. Di aplikasi seluler — kesalahan Network Security Config atau aktivasi Certificate Pinning.

Bisakah VPN melindungi dari serangan MITM?

VPN mengenkripsi lalu lintas hingga server VPN, yang melindungi dari penyadapan di jaringan lokal. Namun, VPN tidak melindungi jika penyerang mengontrol server VPN, atau jika serangan MITM terjadi di sisi penyedia. Certificate Pinning di tingkat aplikasi tetap menjadi metode yang lebih andal.

Apa itu serangan Evil Twin dan apa bedanya dengan MITM?

Evil Twin — titik Wi-Fi palsu yang meniru jaringan yang sah (misalnya, "Airport_Free_WiFi"). Ini bukan jenis MITM yang terpisah, tetapi metode penyusupan: dengan terhubung ke Evil Twin, pengguna secara otomatis menjadi korban serangan MITM, karena semua lalu lintas melewati penyerang.

Bagaimana Certificate Pinning mempengaruhi kinerja aplikasi?

Certificate Pinning meningkatkan keamanan, tetapi memerlukan pembaruan aplikasi saat sertifikat server berubah. Disarankan untuk menentukan tidak hanya satu, tetapi beberapa sertifikat cadangan (backup pins). Saat sertifikat utama kedaluwarsa, aplikasi akan menggunakan sertifikat cadangan tanpa perlu pembaruan.

Alat apa yang digunakan peretas untuk serangan MITM?

Alat paling populer: mitmproxy — penyadapan dan modifikasi lalu lintas HTTP/HTTPS, BetterCAP — ARP spoofing dan penyadapan di jaringan lokal, Wireshark — analisis paket, sslstrip — penurunan HTTPS ke HTTP. Pengetahuan tentang alat-alat ini membantu pengembang menguji perlindungan aplikasi mereka.

Kesimpulan

  • Serangan MITM — penyadapan tersembunyi lalu lintas antara klien dan server, memungkinkan pembacaan dan modifikasi data tanpa sepengetahuan pihak.
  • ARP Spoofing bekerja di jaringan lokal, memalsukan alamat MAC gateway untuk mengarahkan lalu lintas melalui penyerang.
  • DNS Spoofing memalsukan catatan DNS, mengarahkan lalu lintas ke server palsu, perlindungan — DNS-over-HTTPS.
  • SSL Stripping menurunkan HTTPS ke HTTP, dicegah oleh HSTS dan larangan lalu lintas HTTP di manifes.
  • Certificate Pinning — metode perlindungan utama di tingkat aplikasi, tersedia melalui OkHttp (Android) dan URLSession (iOS).
  • Kombinasi TLS 1.3, HSTS dan Certificate Pinning menghilangkan 99% vektor serangan MITM menurut NIST.
  • Pengujian perlindungan dengan mitmproxy dan BetterCAP sebelum publikasi wajib untuk aplikasi yang bekerja dengan data rahasia.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga