Gelecegi yazanlar logo

Bloga geri dön

Android

Mobsf İle Android Uygulamalarda Dinamik Analiz

Dinamik analiz, bir uygulamanın çalışma anındaki davranışlarını inceleyerek güvenlik açıklarını tespit etme yöntemlerinden biridir. Bu yöntem sayesinde uygulamanın hangi izinleri kullandığını, hangi API’leri çağırdığını ve hangi verileri işlediğini analiz edebiliriz. Bu yazıda, Mobile Security Framework (MobSF) aracı kullanılarak mobil uygulamalarda dinamik analiz adımlarını ele alacağım.
Blog image

MobSF arayüzüne erişim sağladıktan sonra, analiz edeceğimiz APK dosyasını öncelikle MobSF'ye yüklememiz gerekiyor. Dinamik analizden önce, uygulamanın temel yapısını ve olası güvenlik açıklarını anlamak için statik analiz yapılır. Statik analiz tamamlandıktan sonra ise dinamik analiz aşamasına geçebiliriz.




MobSF, hem Android hem de iOS uygulamaları için dinamik analiz yapmaya olanak tanır. iOS uygulamaları için Corellium platformu üzerinden API key kullanarak dinamik analiz gerçekleştirebiliriz. İlerleyen yazılarda iOS uygulamaları için dinamik analiz sürecini detaylı şekilde anlatacağım.

Android uygulamalarında ise dinamik analiz yapabilmek için belirli Android sürümlerini ve emülatörleri destekleyen bir ortam gereklidir. MobSF'nin desteklediği dinamik analiz ortamları şunlardır:

  • Genymotion Android VM: 4.1 - 11.0 (arm64, x86, x86_64, API 30’a kadar)
  • Android Emulator AVD (non-production): 5.0 - 11.0 (arm, arm64, x86, x86_64, API 30’a kadar)
  • Corellium Android VM (userdebug builds): 7.1.2 - 11.0 (arm64, API 30’a kadar)



Bu araçlardan birini kullanarak Android uygulamalar için dinamik analiz gerçekleştirebiliriz. Bu yazıda, dinamik analiz için Genymotion üzerinden ayağa kaldırdığım bir cihazı kullanarak testleri gerçekleştireceğim.



Dinamik analiz yapacağımız cihazın IP ve port bilgilerini MobSF üzerinden ayarladıktan sonra arka planda şu adımlar gerçekleşir:

  1. ADB daemon’ı root yetkisiyle yeniden cihazı başlatılır.
  2. Genymotion Android VM olup olmadığı kontrol edilir ve cihaz bilgileri (Android API seviyesi, sürümü, mimarisi) belirlenir.
  3. Dinamik analiz için Frida aracı cihaza yüklenir.
  4. MobSF tarafından oluşturulan güvenlik sertifikası yüklenerek HTTPS trafiği analiz edilebilir hale getirilir.



Dinamik analiz için IP ve port bilgisini ayarladıktan sonra, MobSF’nin dinamik analiz sayfasında incelemek istediğimiz uygulama için Start Dynamic Analysis butonuna tıklayarak analizi başlatabiliriz. MobSF, uygulamanın çalışma zamanı davranışlarını izlemeye başlar ve aşağıdaki verileri toplar:

  • Uygulamanın hangi API’leri çağırdığı ve bu çağrıların detayları.
  • Uygulamanın gönderdiği ve aldığı ağ istekleri.
  • Uygulamanın dosya sisteminde hangi işlemleri gerçekleştirdiği.
  • Uygulamanın çalışma sırasında oluşturduğu loglar.



Start Dynamic Analysis  butonuna tıkladığımızda MobSF'nin ayarladığı adımlar;



  1. ADB Yeniden Başlatıldı: Android Debug Bridge (ADB) yeniden başlatılarak cihazla bağlantı sağlandı.
  2. Cihaz Bağlantısı: Belirtilen IP ve port üzerinden Android cihaz veya emülatörle bağlantı kuruldu.
  3. ADB Root Modu: ADB, root yetkisiyle yeniden başlatıldı.
  4. Genymotion VM Tespiti: Genymotion Android sanal makinesi (VM) tespit edildi.
  5. Sistem Kontrolleri: Android API seviyesi (30) ve sürümü (11.0) belirlendi.
  6. MobSF RootCA Yüklendi: HTTPS trafiğini analiz etmek için MobSF kök sertifikası yüklendi.
  7. HTTPS Proxy Başlatıldı: 1337 portunda HTTPS proxy başlatıldı.
  8. Global Proxy Ayarları: Cihazda global proxy ayarları yapıldı.


Bu adımların manuel olarak nasıl yapıldığını, daha önceki dinamik analiz yazımda ADB komutlarıyla anlatmıştım. İhtiyacınız olması durumunda bu ayarları manuel olarak da yapabilirsiniz.

Bu adımlar gerçekleştikten sonra, bizi aşağıdaki görseldeki gibi bir ekran karşılıyor olacaktır. Şimdi bu alanları incelemeye başlayalım.



1- Show Screen

Emülatörde yapacağınız işlemleri web arayüzünden de gerçekleştirmenize olanak tanır. Ancak bu özellik biraz yavaş çalıştığı için, uygulamayı analiz ederken doğrudan emülatör üzerinden ilerlemek işlemleri daha hızlı hale getirecektir.



2- Remove- Install Root CA

MobSF, HTTPS trafiğini analiz edebilmek için kendi oluşturduğu Root CA sertifikasını cihaza yükler. Bu sayede, cihaz MobSF'nin sertifikasını güvenilir olarak kabul eder ve şifreli trafik (HTTPS) MobSF tarafından çözülebilir. "Install" butonu üzerinden MobSF sertifikasını yükleme ve kaldırma işlemlerini otomatik olarak gerçekleştirebilirsiniz.



3- Unset HTTP(S) Proxy

Bu fonksiyon, Android cihazda global HTTP(S) proxy ayarlarını yapmak için kullanılır. MobSF, dinamik analiz sırasında uygulamanın ağ trafiğini yakalamak için bu proxy'yi kullanır. Bu aşamada MobSF, aşağıdaki ADB komutunu kullanarak proxy ve port bilgisini ayarlar:

  • adb shell settings put global http_proxy <proxy_ip>:<proxy_port>


Proxy IP ve Port Belirleme:

a. proxy_ip: Proxy'nin IP adresi. Bu, settings.PROXY_IP veya get_proxy_ip() fonksiyonu ile belirlenir.

b. proxy_port: Proxy'nin portu. Bu, settings.PROXY_PORT değeridir.

Bu bilgileri, Mobile-Security-Framework-MobSF/mobsf/MobSF/settings.py dosyasından güncelleyebilirsiniz.



4- MobSF ile TLS/SSL Güvenlik Testleri

Mobil uygulamaların güvenliğini sağlamak için ağ bağlantılarının doğru şekilde yapılandırılması kritik öneme sahiptir. MobSF, mobil uygulamaların TLS/SSL yapılandırmalarını analiz ederek güvenlik açıklarını tespit etmek amacıyla TLS/SSL Security Tests özelliğini sunar. Bu testler, aşağıdaki adımları içerir:



a)TLS Misconfiguration Test:

Bu test, uygulamanın TLS/SSL bağlantılarında hatalı yapılandırmalar olup olmadığını kontrol eder. Özellikle, sertifika hatalarını göz ardı eden veya WebView gibi bileşenlerde SSL/TLS hatalarına neden olan yanlış yapılandırmaları tespit eder.

b)Certificate Pinning ve Certificate Transparency Testi:

Bu test, uygulamanın certificate pinning ve certificate transparency gibi güvenlik önlemlerini uygulayıp uygulamadığını değerlendirir. Certificate pinning, uygulamanın yalnızca önceden tanımlanmış güvenilir sertifikaları kabul etmesini sağlar. Certificate transparency ise, SSL/TLS sertifikalarının şeffaf bir şekilde kaydedilmesini ve izlenmesini amaçlar. Bu test, MobSF RootCA'nın cihaza yüklenmesi ve uygulamanın çalıştırılmasıyla gerçekleştirilir.

c)Certificate Pinning ve Certificate Transparency Bypass Testi:

Bu test, uygulamanın certificate pinning ve certificate transparency önlemlerini atlatmanın mümkün olup olmadığını kontrol eder. MobSF RootCA'nın cihaza yüklenmesinin ardından, Frida gibi dinamik analiz araçları kullanılarak bu güvenlik önlemlerinin devre dışı bırakılması denenir. d)Cleartext Traffic Test:

Bu test, uygulamanın şifrelenmemiş (HTTP) trafik kullanıp kullanmadığını kontrol eder. Test, uygulamanın ağ isteklerini inceleyerek cleartext  bir trafik olup olmadığını tespit eder.



5-Get Dependencies 

Bu adımı, MobSF'nin düzgün çalışması için gerekli olan 3rd party yazılımları, kütüphaneleri ve araçları indirir ve yapılandırır. Bu adım, bağımlılıkların otomatik olarak kurulmasını sağlar.


6- Logcat Stream

Android cihazlarda veya emülatörlerde çalışan bir uygulamanın log kayıtlarını gerçek zamanlı olarak izlemek ve analiz etmek için kullanılan bir işlemdir. MobSF (Mobile Security Framework), dinamik analiz sırasında bu özelliği kullanarak uygulamanın çalışma zamanı davranışlarını detaylı bir şekilde incelememizi sağlar.



7- Default Frida Scripts



Frida, güvenlik testlerinde işimizi kolaylaştırmak için önceden tanımlanmış bir dizi script sunar. Bu scriptler, temel güvenlik kontrollerini atlamak ve uygulamanın davranışlarını izlemek için kullanılır. Default Frida Scripts alanında bulunan bazı scriptler:


a)API Monitoring:Bu script, uygulamanın yaptığı API çağrılarını izler. Özellikle güvenlikle ilgili API'lerin (örneğin, SSL pinning, root tespiti, debugger kontrolü) nasıl çalıştığını analiz etmek için kullanılır.

b)SSL Pinning Bypass: Uygulamanın SSL pinning mekanizmasını atlamak için kullanılır. Bu, uygulamanın şifreli trafiğinin analiz edilmesini sağlar.

c)Root Detection Bypass: Uygulamanın root'lu cihazları tespit etme mekanizmasını atlamak için kullanılır.

d)Debugger Check Bypass: Uygulamanın debugger bağlı olup olmadığını kontrol eden mekanizmaları atlamak için kullanılır.

e)Clipboard Monitor: Bu script, uygulamanın panoya (clipboard) erişimlerini izler. Özellikle kullanıcıların panoya kopyaladığı hassas verilerin (örneğin, şifreler, token'lar) uygulama tarafından ele geçirilip geçirilmediğini kontrol etmek için kullanılır.



8-Auxiliary Frida Scripts

Auxiliary Frida Scripts, daha gelişmiş analizler için kullanılan scriptlerdir. Bu scriptler, uygulamanın iç işleyişini daha derinlemesine incelemek için kullanılır. Kullanılan scriptler:

a)Enumerate Loaded Classes:

Bu script, uygulamanın yüklediği sınıfları listeler. Bu sayede, uygulamanın hangi sınıfları kullandığını analiz etmemizi sağlar

b)Capture Strings: Uygulama içinde kullanılan string'leri  yakalar. Bu, özellikle hassas verilerin (örneğin, API anahtarları, şifreler) uygulama içinde açık metin olarak bulunup bulunmadığını tespit etmek için kullanılır.

c)Capture String Comparisons: Uygulamanın yaptığı string karşılaştırmalarını izler. Bu, özellikle şifre veya token doğrulama işlemlerinin nasıl çalıştığını anlamak için kullanılır.

d)Enumerate Class Methods:

Bu script, belirli bir sınıfın içindeki metodları listeler. Özellikle java.io, java.net, java.lang.String gibi temel Java sınıflarının metodlarını incelemek için kullanılır.

e)Search Class Pattern: Belirli bir sınıf pattern’ini arar. Bu, özellikle uygulamanın kullandığı özel sınıfları tespit etmek için kullanılır.



9- Instrumentation

Bu alan, uygulamanın çalışma zamanında enjekte edilen kodları ve bu kodların nasıl çalıştığını gösterir.


10-User Interface

Bu alan, uygulamanın kullanıcı arayüzü (UI) bileşenlerini listeler. Özellikle Activities kısmında, uygulamanın hangi ekranları (activities) kullandığı gösterilir. Bu, uygulamanın kullanıcı arayüzü akışını anlamak için kullanılır.



11-Frida Code Editor

Bu alan, kullanıcıların özel Frida scriptleri yazmasına olanak tanır. Özellikle Java.perform fonksiyonu kullanılarak, uygulamanın çalışma zamanında özel kodlar enjekte edilebilir.



12- Available Scripts

Bu alan, kullanıcıların kullanabileceği diğer Frida scriptlerini listeler.



Uygulama analizi sırasında cihazda komut çalıştırmak, dosya sistemine erişmek veya uygulamanın çalışma zamanı davranışlarını incelemek gibi işlemler için kullanılır.



13-Application Data

Android uygulamalarında, /data/data/ dizini, cihaza yüklenen her uygulamanın kurulum ve veri depolama dizinlerini içerir. MobSF, dinamik analiz sırasında bu dizine erişim sağlayarak uygulamanın veri depolama yapısını analiz etmemize olanak tanır. Özellikle Application Data alanı, uygulamanın dahili bellekte sakladığı verileri incelemek için kullanılır.



14-SQLite Databases

Bu alan, uygulamanın SQLite veritabanlarını incelememizi sağlar. Bu veri tabanlarında, uygulamanın yapılandırılmış verileri (örneğin, kullanıcı bilgileri, oturum token'ları veya ayarlar) saklanır. MobSF, /data/data/{paket-ismi}/databases dizinindeki veri tabanlarını tespit eder ve içeriklerini analiz etmemizi sağlar.



15- HTTPTools

Uygulamanın HTTP/HTTPS trafiğini analiz etmek için kullanılır. Bu araç, uygulamanın ağ isteklerini ve yanıtlarını yakalayarak, bu trafiği detaylı bir şekilde incelemenizi sağlar. Ayrıca, yakalanan trafiği bir fuzzer'a (örneğin, Burp Suite) göndererek daha derinlemesine analiz yapma imkanı da sunar.



Ahmet Buğra Demirel

|

29 Temmuz 2025

© 2025 Copyright Turkcell

Bizi Takip Edin