Mobil Uygulamalarda MITM Saldırıları — Nedir, Türleri ve Dinlemeye Karşı Koruma

Yazar: IT Sectr Yayınlanma: 2026-04-04 Okuma süresi: 10 dk

Man-in-the-Middle (MITM) — saldırganın iki taraf arasındaki trafiği onların bilgisi olmadan dinlediği, okuduğu veya değiştirdiği bir “ortadaki adam” saldırısıdır. Kaspersky, 2025'e göre, mobil cihazlara yönelik MITM saldırılarının sayısı son iki yılda %35 arttı. Trafik dinlemesinin temel sorunu, kullanıcının saldırı belirtisi görmemesidir — bağlantı normal görünür.

Önemli Noktalar

  • MITM saldırısı — katılımcıların bilgisi olmadan veri çalmak veya değiştirmek için istemci ve sunucu arasındaki iletişimin dinlenmesi.
  • ARP Spoofing — yerel ağda saldırganın cihazı üzerinden trafiği yönlendirmek için ağ geçidi MAC adresinin taklit edilmesi.
  • SSL Stripping — ilk isteği dinleyerek güvenli HTTPS bağlantısını güvensiz HTTP'ye düşürme.
  • Genel Wi-Fi — MITM saldırıları için birincil ortam: güvensiz erişim noktaları, bağlı tüm cihazların trafiğini dinlemeye olanak tanır.
  • Certificate Pinning — en etkili koruma yöntemi: uygulama, sunucu sertifikasını kod düzeyinde doğrular.

MITM saldırısı nedir?

Man-in-the-Middle (MITM), saldırganın iki taraf arasındaki iletişim kanalına gizlice sızdığı bir siber saldırı türüdür. Saldırgan, her iki taraf için de görünmez kalarak iletilen verileri dinleyebilir, okuyabilir ve değiştirebilir.

Mobil uygulamalarda MITM saldırıları özellikle tehlikelidir çünkü cihazlar sürekli olarak çeşitli ağlara bağlanır — ev, ofis, kafelerde ve havalimanlarında genel Wi-Fi. Her ağ değişimi potansiyel olarak saldırı için bir pencere oluşturur. Verizon Mobile Security Index (2025)'e göre, kuruluşların %43'ü en az bir kez kurumsal mobil cihazlarda MITM saldırılarıyla karşılaşmıştır.

MITM'nin ana tehlikesi gizliliktir: kullanıcı ve sunucu dinleme sinyali almaz. Oturum normal görünür, veriler iletilir, sertifika hatası yoktur (saldırgan kendi sertifikasını kullanıyorsa). Saldırı yalnızca ağ altyapısı düzeyinde veya özel araçlarla tespit edilebilir.

Bir geliştiricinin, yalnızca taşıma katmanı güvenliğine güvenmek yerine uygulama düzeyinde koruma tasarlamak için MITM saldırı mekanizmalarını anlaması gerekir.

MITM saldırılarının ana türleri

MITM saldırılarının sınıflandırması, iletişim kanalına sızma yöntemine göre farklılık gösteren birkaç tür içerir. Mobil geliştirmede, üç tür en önemlisidir.

Yerel ağda ARP Spoofing

ARP Spoofing, saldırganın yerel ağa sahte ARP paketleri göndererek kendi MAC adresini ağ geçidinin IP adresiyle ilişkilendirdiği bir tekniktir. Bundan sonra, mağdurun tüm trafiği, görünmez kalarak ağ geçidine ileten saldırganın cihazı üzerinden yönlendirilir.

Saldırıyı gerçekleştirmek için ARP sahteciliğini otomatikleştiren Ettercap veya BetterCAP gibi araçlar yeterlidir. Saldırı yalnızca tek bir alt ağ içinde mümkündür, bu da genel Wi-Fi ağı kullanıcılarını en savunmasız hale getirir. Yönetilen anahtarlarda Dynamic ARP Inspection (DAI) ile modern ağlar bu tür saldırıyı engeller.

ARP Spoofing'ten uygulama düzeyinde korumak mümkün değildir — bu bir ağ altyapısı sorunudur. Ancak uygulama, iOS için TrustKit veya Android için Network Security Config gibi kitaplıkları kullanarak ağ bağlantısındaki anormallikleri tespit edebilir.

DNS Spoofing ve trafik dinleme

DNS Spoofing (veya DNS önbellek zehirleme), istemciden DNS sunucusuna giden yolda DNS kayıtlarının değiştirilmesidir. Saldırgan, uygulamanın DNS isteğini dinler ve sahte bir IP adresi döndürerek trafiği meşru sunucu yerine kendi sunucusuna yönlendirir.

Saldırı, DNS sunucusunun DHCP aracılığıyla otomatik olarak atandığı genel ağlarda özellikle etkilidir. Saldırgan, hedef alan adları için sahte IP adresleri döndüren kendi DNS sunucusunu kurabilir. Kullanıcı tarayıcıda meşru bir URL görür ancak saldırganın sunucusuna bağlanır.

DNS Spoofing'ten uygulama tarafında koruma, DNS sorgularını şifreleyen DNS-over-HTTPS (DoH) veya DNS-over-TLS (DoT) aracılığıyla uygulanır. Android 9+ ve iOS 14+ sistem düzeyinde DoH'yi destekler ve uygulama bu seçeneği açıkça etkinleştirebilir.

SSL Stripping — HTTPS'yi atlatma

SSL Stripping, saldırganın güvenli bir HTTPS bağlantısını güvensiz HTTP'ye düşürdüğü bir saldırıdır. Teknik, birçok kullanıcının https://example.com yerine manuel olarak example.com yazması ve ilk bağlantının HTTP üzerinden kurulması gerçeğini kullanır.

sslstrip (Moxie Marlinspike, 2009) ve bettercap gibi araçlar otomatik olarak HTTP isteklerini dinler, kendi adlarına sunucuyla HTTPS bağlantısı kurar ve şifresi çözülmüş trafiği HTTP üzerinden istemciye iletir. Tarayıcı kilit simgesini göstermez — kullanıcı bağlantının güvenli olmadığını bilmez.

Modern koruma — HTTP Strict Transport Security (HSTS): sunucu, tarayıcıya tüm gelecekteki bağlantıların yalnızca HTTPS kullanması gerektiğini bildirir. HSTS Preload List ayrıca ilk saldırıya karşı da korur, ancak alan adının önceden kaydedilmesini gerektirir.

Mobil uygulamalarda MITM saldırısı nasıl çalışır

Bir mobil uygulamaya yönelik tipik bir MITM saldırısı dört aşamadan geçer. Her aşama farklı güvenlik açıklarını kullanır ve tam koruma için tüm vektörlerin kapsanması gerekir.

Birinci aşama — sızma: saldırgan, cihaz ve sunucu arasındaki trafik yoluna yerleşir. Bu, yerel ağda ARP Spoofing, sahte bir Wi-Fi erişim noktası (Evil Twin) veya sağlayıcının DNS sunucusunun ele geçirilmesi olabilir. Mobil cihazlar, açık ağlara otomatik olarak bağlandıklarında özellikle savunmasızdır.

İkinci aşama — dinleme: sızmadan sonra, saldırgan uygulama ve sunucu arasında değiş tokuş edilen tüm paketleri okumaya başlar. Bu aşamada meta veri toplar: istek URL'leri, paket boyutları, çerezler, başlıklar. Veriler şifrelenmiş olsa bile, meta veri uygulama yapısını ve iş mantığını ortaya çıkarabilir.

Üçüncü aşama — şifre çözme (trafik şifrelenmişse): saldırgan iki TLS bağlantısı kurar — biri sunucuyla (sahte sertifika kullanarak), diğeri istemciyle. Uygulama bağlantıyı güvenli olarak görür, ancak saldırgan tüm verileri düz metin olarak görür. Certificate Pinning olmadan, bu sistem deposunda yüklü herhangi bir sertifika için çalışır.

Dördüncü aşama — değiştirme ve sızdırma: saldırgan yalnızca iletilen verileri okumakla kalmaz, aynı zamanda değiştirebilir. Finansal uygulamalarda bu, alıcının hesap numarasını değiştirmek anlamına gelebilir; API isteklerinde, yetkilendirme parametrelerini değiştirmek. iOS ve Android, uygulama düzeyinde yanıt bütünlüğü kontrolleri uygulamayı önerir.

Kod örnekleri: Android ve iOS'ta dinlemeye karşı koruma

Kotlin ve Swift'te Certificate Pinning kullanarak MITM saldırılarına karşı korumanın pratik örneklerine bakalım. Bu örnekler, sistem deposu ele geçirilmiş olsa bile sertifika değişimini engeller.

Android'de Certificate Pinning (OkHttp)

OkHttp, CertificatePinner'ı destekleyen Android için standart HTTP kitaplığıdır. Sunucunuzun sertifikasının SHA-256 hash'ini belirtin — diğer tüm sertifikalar reddedilecektir.

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()

iOS'ta Certificate Pinning (URLSession)

iOS'ta, sunucu sertifikasını manuel olarak doğrulamak için URLSessionDelegate kullanın. SecCertificateRef'i yerel olarak saklanan bir kopyayla karşılaştırın.

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)
        }
    }
}

Android'de Network Security Config

Android, kod yazmadan işletim sistemi düzeyinde trafiği engelleyen network_security_config.xml dosyası aracılığıyla bildirimsel korumayı destekler.

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>

Mobil uygulamaları MITM'den koruma yöntemleri

MITM saldırılarına karşı kapsamlı koruma, uygulama, sunucu ve ağ altyapısı düzeyinde önlemler içerir. Aşağıda Android ve iOS için ana öneriler bulunmaktadır.

Certificate Pinning kullanın — uygulama kodunda sunucu sertifikasını bağlama. Sistem deposundaki herhangi bir sertifikaya güvenen standart TLS doğrulamasının aksine, Certificate Pinning belirli bir sertifikayı veya açık anahtarını kontrol eder. Android'de OkHttp ve iOS'ta TrustKit, bu mekanizmanın hazır uygulamalarını sağlar.

HTTPS ve HSTS'yi zorunlu kılın: tüm ağ istekleri HTTPS üzerinden gitmeli ve sunucu Strict-Transport-Security başlığını döndürmelidir. Android için manifest dosyasına android:usesCleartextTraffic="false" ekleyin — bu, işletim sistemi düzeyinde HTTP bağlantılarını engeller. iOS, iOS 9'dan itibaren App Transport Security (ATS) aracılığıyla varsayılan olarak HTTP'yi engeller.

Yanıt bütünlüğü kontrolleri uygulayın: sunucu yanıtlarını, uygulamanın doğruladığı dijital imzayla imzalayın. Bir saldırgan HTTPS trafiğini dinlese bile (sertifika yeniden yükleme ile proxy üzerinden), sunucunun özel anahtarı olmadan imzayı taklit edemez. Kritik işlemler için RS256 veya HMAC imzalı JWT kullanın.

Sunucu tarafında, HTTP Public Key Pinning (HPKP)'i etkinleştirin — tarayıcıya veya uygulamaya belirli bir alan adı için hangi sertifikanın geçerli sayılacağını söyleyen bir yönerge. Ancak HPKP dikkat gerektirir: yanlış yapılandırma, uygulamaya erişimi uzun süre engelleyebilir. Google, HPKP'yi yalnızca yedek sertifikalarla birlikte kullanmayı önerir.

NIST SP 800-52 Rev. 2 (2024)'ye göre, TLS 1.3, Certificate Pinning ve HSTS kombinasyonu, mobil uygulamalardaki bilinen MITM saldırı vektörlerinin %99'unu ortadan kaldırır. Geliştiricilerin, uygulamayı yayınlamadan önce mitmproxy gibi araçlarla korumayı test etmeleri önerilir.

Sıkça Sorulan Sorular

MITM yoluyla saldırıya uğradığımı nasıl anlarım?

MITM saldırısının belirtileri arasında ani bağlantı yavaşlaması, güvenilmeyen sertifika uyarıları (daha önce olmayan), URL ile sayfa içeriği arasında uyuşmazlık bulunur. Mobil uygulamalarda — Network Security Config hataları veya Certificate Pinning'in tetiklenmesi.

VPN, MITM saldırılarına karşı koruyabilir mi?

VPN, VPN sunucusuna kadar trafiği şifreler ve bu da yerel ağda dinlemeye karşı korur. Ancak VPN, saldırgan VPN sunucusunu kontrol ediyorsa veya MITM saldırısı sağlayıcı tarafında gerçekleşiyorsa korumaz. Uygulama düzeyinde Certificate Pinning daha güvenilir bir yöntem olmaya devam eder.

Evil Twin saldırısı nedir ve MITM'den nasıl farklıdır?

Evil Twin, meşru bir ağı taklit eden sahte bir Wi-Fi erişim noktasıdır (örneğin, “Airport_Free_WiFi”). Bu, MITM'nin ayrı bir türü değil, bir sızma yöntemidir: Evil Twin'e bağlanarak, tüm trafik saldırgandan geçtiği için kullanıcı otomatik olarak MITM saldırısının kurbanı olur.

Certificate Pinning, uygulama çalışmasını nasıl etkiler?

Certificate Pinning güvenliği artırır ancak sunucu sertifikası değiştiğinde uygulamanın güncellenmesini gerektirir. Bir değil, birden fazla yedek sertifika (backup pins) belirtilmesi önerilir. Birincil sertifikanın süresi dolduğunda, uygulama güncelleme gerektirmeden bir yedek kullanacaktır.

Bilgisayar korsanları MITM saldırıları için hangi araçları kullanır?

En popüler araçlar: mitmproxy — HTTP/HTTPS trafiğini dinleme ve değiştirme, BetterCAP — ARP sahteciliği ve yerel ağda dinleme, Wireshark — paket analizi, sslstrip — HTTPS'den HTTP'ye düşürme. Bu araçları bilmek, geliştiricilerin uygulamalarının korumasını test etmesine yardımcı olur.

Özet

  • MITM saldırısı — istemci ve sunucu arasındaki trafiğin gizlice dinlenmesi, tarafların bilgisi olmadan verilerin okunmasına ve değiştirilmesine olanak tanır.
  • ARP Spoofing, yerel ağda ağ geçidi MAC adresini taklit ederek trafiği saldırgan üzerinden yönlendirir.
  • DNS Spoofing, DNS kayıtlarını değiştirerek trafiği sahte bir sunucuya yönlendirir; koruma — DNS-over-HTTPS.
  • SSL Stripping, HTTPS'yi HTTP'ye düşürür, HSTS ve manifest'te HTTP trafiğini engelleyerek önlenir.
  • Certificate Pinning — uygulama düzeyinde birincil koruma yöntemi, OkHttp (Android) ve URLSession (iOS) aracılığıyla kullanılabilir.
  • TLS 1.3, HSTS ve Certificate Pinning kombinasyonu, NIST'e göre MITM saldırı vektörlerinin %99'unu ortadan kaldırır.
  • Koruma testi, hassas verilerle çalışan uygulamalar için yayınlamadan önce mitmproxy ve BetterCAP ile zorunludur.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun