Android APK Tersine Mühendislik (Reverse Engineering)

Siber Güvenlik

Android APK Tersine Mühendislik

Android ekosisteminde bir uygulama mağazaya yüklendiği anda, dağıtılan APK dosyası fiilen “kullanıcının cihazına” iner. Bu gerçeklik, geliştiriciler için iki önemli sonucu beraberinde getirir: birincisi, uygulamanın istemci tarafındaki kodu ve kaynakları belli ölçüde incelenebilir; ikincisi, uygulama güvenliği yalnızca sunucu tarafına bırakıldığında risk büyür.

Tersine mühendislik (reverse engineering), bu noktada hem saldırganların hem de savunma tarafının kullandığı bir yaklaşımdır. Saldırganlar zayıf noktaları ve gizli anahtarları ararken; güvenlik ekipleri aynı teknikleri kullanarak uygulamanın risklerini ölçebilir ve iyileştirme planı çıkarabilir.

APK Tersine Mühendislik Nedir?

APK (Android Package), bir Android uygulamasının dağıtım paketidir. İçinde derlenmiş bytecode (DEX), uygulama manifesti (AndroidManifest.xml), kaynaklar (resources), yerel kütüphaneler (.so dosyaları) ve imza bilgileri bulunur. Tersine mühendislik, bu paket içeriğini inceleyerek uygulamanın nasıl davrandığını, hangi izinleri istediğini ve hangi ağ uçlarıyla (endpoints) konuştuğunu anlamayı amaçlar.

Analiz iki ana boyutta yapılır:

  1. Statik Analiz: APK içeriğini çalıştırmadan, kod yapılarını ve konfigürasyonları incelemek.

  2. Dinamik Analiz: Uygulamayı bir emülatör veya fiziksel cihazda çalıştırıp; ağ trafiği, dosya erişimi ve bellek (runtime) davranışını gözlemlemek.

Analiz Süreci: Adım Adım Yaklaşım

APK tersine mühendislik çalışmaları genellikle şu aşamalarla ilerler:

  • Paket ve İzin İncelemesi: Manifest dosyası üzerinden istenen izinler ve dışarıya açık (exported) bileşenler haritalanır.

  • Kod ve Kaynak Analizi (Statik): Bytecode, okunabilir Java/Kotlin koduna dönüştürülür (Decompilation). Burada sabit gömülmüş (hardcoded) şifreler, API anahtarları ve hatalı kriptografik kullanımlar aranır.

  • Yerel Kütüphaneler (Native Code): C/C++ ile yazılmış .so dosyaları analiz edilerek bellek güvenliği ve gizli iş mantıkları incelenir.

  • Trafik Analizi (Dinamik): Uygulama çalışırken giden HTTP/HTTPS istekleri bir vekil sunucu (Proxy) ile yakalanır. TLS yapılandırması ve veri iletim güvenliği doğrulanır.

Yaygın Bulgular ve Risk Alanları

Tersine mühendislik sonucunda en sık karşılaşılan güvenlik açıkları şunlardır:

  • Hardcoded Secret: Uygulama kodunun içine unutulmuş yönetici şifreleri veya bulut servis anahtarları.

  • Zayıf Sertifika Doğrulaması: Sertifika sabitleme (SSL Pinning) eksikliği nedeniyle araya girme (MITM) saldırılarına açık olunması.

  • Güvensiz Yerel Depolama: Hassas verilerin (token, kullanıcı bilgisi) cihazın hafızasında şifrelenmeden saklanması.

  • Exported Bileşenler: Diğer uygulamaların erişebildiği ve yetkisiz işlem tetikleyebileceği açık kapılar.

  • İş Kurallarının İstemciye Taşınması: “Premium üye mi?” gibi kritik kontrollerin sunucu yerine uygulama içinde yapılması (kolayca manipüle edilebilir).

Risk Azaltma ve Uygulama Sertleştirme

APK’nın incelenebilir olması gerçeği karşısında kurumlar şu “sertleştirme” (hardening) adımlarını atmalıdır:

  • Kod Karartma (Obfuscation): Kodun mantığını değiştirmeden okunabilirliğini zorlaştırmak (ProGuard/R8).

  • Secret Yönetimi: Kritik anahtarları istemcide saklamak yerine sunucudan dinamik olarak almak ve kapsamını daraltmak.

  • Android Keystore Kullanımı: Hassas verileri donanım destekli güvenli depolama alanlarında saklamak.

  • Sunucu Tarafı Yetkilendirme: Uygulamanın her isteğini sunucu tarafında tekrar doğrulamak; istemciyi her zaman “güvenilmez” kabul etmek.

  • Root ve Emülatör Tespiti: Uygulamanın güvensiz ortamlarda çalışmasını engelleyen kontroller eklemek.

Sonuç

Android APK tersine mühendislik, uygulamanın zayıf noktalarını saldırganlardan önce fark etmek için paha biçilemez bir yöntemdir. Güçlü bir savunma, kodun gizlenebileceği yanılgısına düşmek yerine; kodun her zaman okunabileceğini varsayıp, kritik kontrolleri sunucu tarafına taşıyan bir mimari kurmaktır.

Tags :
AndroidSecurity,APKAnalysis,ReverseEngineering,TersineMühendislik
Share This :

Diğer Yazılar

Bize Soru Sorun

Soru ve görüşleriniz için bizimle iletişime geçebilirsiniz.