
1. Giriş
apk-mitm, Android APK’larını otomatik olarak “MITM (man-in-the-middle)” için hazır hâle getiren komut satırı araçlarından biridir. Genel amaç, uygulamanın TLS/HTTPS trafiğini analiz edebilmek için uygulamada yapılan güvenlik kontrollerini (ör. ağ güvenlik konfigürasyonu, pinning kontrolleri, bazı yerel pinning uygulamaları) tespit edip gerekli yamaları otomatik uygulamaktır. Projenin popüler implementasyonlarından biri GitHub üzerinde niklashigi/apk-mitm olarak bulunur; bu araç bir APK’yı decode/patch/rebuild/sign zinciriyle işler.
Mobil uygulamalarda HTTPS trafiğini analiz etmek; API tasarım hatalarını, hassas veri sızmalarını veya kötü yapılandırılmış kimlik doğrulama akışlarını tespit etmek için gereklidir.
2. Teknik Arka Plan
HTTPS, TLS ve Sertifika Pinning
- HTTPS/TLS: İstemci-sunucu arasında şifreli kanal sağlar. TLS, sertifika zinciri (CA → leaf sertifika) doğrulamasını temel alır.
- Sertifika pinning: Uygulama, yalnızca belirli bir sertifikaya veya anahtar parmak izine (pin) güvenecek şekilde yapılandırılır; böylece cihazın sistem CA deposuna eklenen proxy CA’ları işe yaramaz. OWASP ve MASTG rehberleri pinning kavramını ve test tekniklerini açıklar. cheatsheetseries.owasp.org+1
Pinning’in Zorluğu
Pinning, MITM tabanlı proxy’lerin (mitmproxy, Burp) işe yaramasını engeller çünkü uygulama beklenmeyen/eklenen CA’ları kabul etmez. Bu nedenle sadece cihazın CA deposuna ekleme genellikle yeterli olmaz; uygulamanın içindeki pin doğrulama mantığı (Java/Native/okHttp/conscrypt vb.) devre dışı bırakılmalıdır.
apk-mitm’in Yaklaşımı
apk-mitm şu adımları otomatikleştirir:
- APK’yı decompile eder (apktool).
network_security_configve ilgili kaynakları değiştirerek kullanıcı eklemeli CA’yı kabul eder hâle getirir.- Bilinen pinning implementasyonlarına yönelik smali/Java/katman yamaları uygular veya ilgili çağrıları pasifleştirir.
- Yeniden paketler ve imzalar.
Bu otomasyon, manuel smali/Frida/objection yaklaşımlarına kıyasla hızlı bir başlangıç sağlar.
3. Kurulum ve Kullanım Adımları
Gerekenler
- Node.js & npm
apk-mitm(CLI)mitmproxyveyaBurp Suite(HTTP(S) proxy uygulaması)adb(Android cihaz/emülatör erişimi)
Hızlı Kurulum
npm install -g apk-mitmBasit patch örneği
# APK'yi patchle
apk-mitm example.apk
✔ Decoding APK file
✔ Modifying app manifest
✔ Replacing network security config
✔ Disabling certificate pinning
✔ Encoding patched APK file
✔ Signing patched APK file
Done! Patched APK: ./example-patched.apkBu işlem apktool ile decompile, yamaları uygular, yeniden paketleyip imzalar)
4. Alternatif Araçlar ve Karşılaştırma
- Frida / Objection: Runtime hooking ile pinning fonksiyonlarını dinamik olarak devre dışı bırakma imkânı verir; daha esnek ama bazen daha karmaşık.
- Burp Suite / Charles: GUI tabanlı güçlü proxy araçları (scripting, repeater, intruder).
- apk-mitm: Otomatik patch + rebuild süreciyle hızlı başlangıç; statik patching tercih edilen senaryolarda kolaylık sağlar.
- android-unpinner ve benzeri projeler farklı yaklaşımlar sunar (farklı yöntemler, non-root çözümler vb.). GitHub+1
5. Sonuç ve Öneriler
apk-mitm, izinli testlerde HTTPS trafiğini incelemek için hızlı bir başlangıç sunar; fakat kapsamlı analiz için Frida/objection gibi runtime araçları ve manuel geri mühendislik gerekebilir.
Sık Sorulan Sorular (FAQ)
- apk-mitm root gerektirir mi?
Hayır — çoğu senaryoda root gerekmeden APK patchleyip yeni bir APK oluşturarak çalıştırabilirsiniz. - apk-mitm her pinning türünü çözer mi?
Hayır — otomatik yamalar yaygın implementasyonları hedefler; native/obfuscation/yalın-hash pinning durumlarında ek manuel inceleme veya Frida gerekebilir.
