Bloga geri dön
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:
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:
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:
Start Dynamic Analysis butonuna tıkladığımızda MobSF'nin ayarladığı adımlar;
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
Bu alan, uygulamanın çalışma zamanında enjekte edilen kodları ve bu kodların nasıl çalıştığını gösterir.
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.
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.
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.
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.
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.
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.