Mobil Uygulama Test Metodolojisi


 Mobil Uygulama Test Metodolojisi

Kıdemli Siber Güvenlik Uzmanı / Meftun Göktepe 

Giriş

Sızma testi ekipleri, uygulamaların güvenlik testini yaparken uygulama kodunu en ince ayrıntısına kadar incelemekte ve manipüle yollarını aramaktadır. Bunu hem statik kod analizi, hem de dinamik kod enstrümansyonu yöntemlerinin ikisini de kullanarak ifa etmektedir. Bu yetkinlik bize uygulama içerisindeki kod karartma, emülatorün devre dışı bırakılması, root / jailbreak keşfi, hash denetimi, SSL Pinning denetimi gibi birçok güvenlik önleminin (ihtiyaç duyulduğunda) sabırla atlatılmasını sağlamaktadır. Bu yazımızda, mobil uygulama penetrasyon testi metodolojisini kısaca özetleyeceğiz.

Metodoloji

Mobil güvenlik metodolojisi, tipik olarak uygulama güvenlik metodolojisinin bir uzantısıdır. Geleneksel uygulama güvenliğinde tehdit İnternet üzerindeki birçok farklı kaynaktan gelirken, mobil uygulama güvenliğinde tehdit istemci tarafından, dosya sistemi, donanım ve ağ güvenliğine ilişkin hususlarda yoğunlaşır.

Keşif

Değerlendirme/ Analiz

Ele geçirme / sömürme

Raporlama

·   Açık kaynak istihbaratı

·   Platformun keşfi

·   İstemci ve sunucu tabanlı senaryolar

·   Statik analiz

·   Arşiv analizi

·   Yerel dosya analizi

·   Ağ ve web trafik analizi

·   Prosesler arası iletişim

·   Zafiyetin sömürülmeye çalışılması

·   Hak yükseltme

·   Risk değerlendirme ve bulgular

·   Nihai rapor

 

Keşif

Bilgi toplama, güvenlik testi sürecinde en önemli aşamalardan biridir:

  • Açık Kaynak İstihbaratı: Bir uygulama hakkında erişilebilir kaynaklardan düşünüldüğünden daha fazla veriye ulaşmak mümkün olmaktadır. Özellikle kullanılan açık kaynak kütüphaneler, bunların zafiyetlerine ilişkin forum ve güncellemeler, github depoları gibi ortamlar dikkatli gözler için çok ciddi kaynak sunarlar.
  • Platformun Keşfi: Platformun mimarisinin ve altyapısının anlaşılması güvenlik testi açısından en temel konulardan biridir. Bu anlayış hazırlanacak tehdit modelini de şekillendirecektir.
  • İstemci ve Sunucu Tabanlı Senaryolar: Uygulamanın istemci tarafında sahip olduğu / kısıtlandığı yetenekler ile sunucu tarafına aktardığı verilerin anlaşılması güvenlik testinin başarısı anlamında kritik öneme sahiptir.

Değerlendirme / Analiz

Mobil uygulamaların kendine özgü değerlendirme ve analiz yöntemleri vardır. Testçiler uygulamanın kurulum öncesi ve sonrasını ayrıca değerlendirmelidirler.

  • Statik Analiz: Statik analiz, kodu etkin olarak çalıştırmadan, kaynak kodu üzerinde analiz yapma yöntemidir. Çoğu defa kaynak kodu hazır olarak gelmez ve onu tersine derlemek (decompile) gerekir.
  • Arşiv Analizi: Uygulamanın çalıştırılabilir dosyasının dışındaki diğer yapılandırma ve kurulum dosyalarının incelenmesidir. İçlerinde beklenmedik değerde verilere ulaşmak mümkün olabilir.
  • Yerel Dosya Analizi: Uygulama kurulduğunda, dosya yapısı içinde kendisine özel bir dizin tahsis edilir. Kullanım esnasında bu dizin altındaki dosyalar üzerinden işlemleri yürütür. Uygulamanın bu yerel dosyaları, özellikle veri tabanları ve cache arabellek dosyaları çok kritik bilgiler içerebilmektedirler.
  • Tersine Mühendislik: Statik analizin bir uzantısı olarak kaynak kod üzerinde tek tek analizler ve gerektiğinde yamalar yapılarak uygulamanın güvenlik önlemlerini atlatma ve uygulama akışını yönlendirme süreçlerini kapsar.
  • Dinamik Analiz: Dinamik analiz, uygulama cihaz üzerinde çalışırken yapılır. Bu çalışan fonksiyon ve proseslere kanca atılarak (hook yapılarak) fonksiyonların akışını yönlendirme tabanlı olarak da gerçekleştirilebilir.
  • Ağ ve Web Trafik Analizi: Ağ trafiğinin akışını takip etmek ve incelemektir. Buna yönelik olarak özellikle HTTPS trafiğini dinleyebilmek maksadıyla SSL Pinning önlemini atlatmak gerekebilir.
  • Prosesler-arası İletişim Sonnokta Analizi: Android mobil uygulamalar çeşitli son noktalardan oluşmaktadırlar. Bunlar; Intent, Activities, Content Providers, Services ve Broadcast Receivers gibi adlara sahiptirler.

Sömürü

Sömürü, tespit edilen güvenlik açığının sömürülmesinin somutlaştırılması aşamasıdır. Zafiyetlerin bir kısmı bu şekilde doğrulanır, bir kısmı net olarak doğrulanamasa da test raporunda yine de yer almalıdır.

  • Zafiyetin İstismara Çalışılması: Tespit edilen zafiyetlerin hazırlanan özel zararlı kod ya da yöntemlerle somutlaştırılmasıdır.
  • Hak Yükseltme: Mümkünse root kullanıcısı olacak ve kum havuzu korumalarını atlatabilecek şekilde istismarın ilerletilmesidir.

Raporlama

Doğal olarak mobil pentest süreci çok ciddi miktarda veri toplama, analiz ve istismar sürecini barındırmaktadır. Bu noktada hazırlanacak rapor her bir bulgu için aşağıdaki hususları belirtmelidir:

  • Her bir açıklığın kritiklik derecesi
  • Zafiyetin kaynağı
  • Etkisi ve sonuçları
  • Ayrıntılı açıklaması ve ekran görüntüleri
  • Önleme ve çözüm önerileri

MOBİL GÜVENLİK OWASP TOP 10

Mobil sistemlerde en çok karşılaşılan güvenlik zafiyetleri ve bunların OWASP tarafından belirlenen kategorileri aşağıdaki gibidir.

OWASP 10 MOBILE TOP 10

M1

Uygun olmayan platform kullanımı

Özellikle API ve web servislerinin mobil uygulama içinden uygun şekilde çağrılmamasından kaynaklı zafiyetlerdir.

 

Burada en çok karşılaşılan zafiyet vektörü açığa çıkan ya da tahmin edilebilir olan nitelendirmelerdir.

M2

Güvensiz Veri Depolama

Mobil uygulamalar ağırlıklı olarak istemci tabanlı çözümlerdir. Dolayısıyla mobil sistem içerisinde dolaşan bir kötü niyetli saldırgan, birçok yerel dosyaya da rahatlıkla ulaşabilmektedir. Buradaki özellikle veri tabanlı, yapılandırma dosyaları ve arabellek dosyaları kritik ve önemli verilerin sızmasına neden olabilmektedirler.

M3

Güvensiz İletişim

Verilerin SSL/TLS trafiği üzerinden gönderilmesi şarttır. Bunun dışında en çok karşılaşılan hususlardan biri, oturum jetonları gibi kritik parametrelerin de hem erişiminin, hem de tahmin ve tekrarlanabilirliğinin mümkün kılınmamasıdır.

 

M4

Güvensiz Yetkilendirme

Her uygulama türünde olduğu gibi mobil uygulamalarda da en çok karşılaşılan hatalardan biri yetkilendirmenin yeterince uygun yapılandırılmaması olabiliyor. Güvenli oturum yönetimi bu anlamda en önemli bileşenlerden biridir.

 

M5

Güvensiz Doğrulama

Mobil cihaz genellikle saldırganın elinin altındadır. Bu nedenle kriptografik korumayı atlatmak özellikle basit algoritmalarda oldukça kolay olabilmektedir. Özellikle tersine mühendislikle kriptolomaya ilişkin kodların okunabileceği ve buradaki anahtar değerin çözümlenebileceği her zaman akılda tutulmalıdır.

 

M6

Güvensiz Yetkilendirme

Yeterince özen gösterilmemiş bir yetkilendirme mekanizması, saldırganın erişmesi normalde uygun olmayan kaynaklara erişim sağlamasını mümkün kılar. Bu nedenle rol ve izinlerin tanımlanması ve bunların gerekirse bir matris vasıtasıyla yürütlmesi çok önemlidir.

 

M7

İstemci Kod Kalitesi

İstemci tarafında farklı zararlı payload girerek beklenmedik davranışlar yaratmak mümkündür. Her ne kadar bu saldırıların etkisi kısıtlı olsa da yine de uygun senaryo ile sunulduğunda sonuç alınması olasıdır.

M8

Kod Sokuşturma

Mobil uygulamaları kendi dükkanlarından indirerek açmak ve yeniden paketlemek mümkündür. Bu esnada içine zararlı kod sokuşturmak da ihtimal dahilindedir. Bu gibi saldırılara karşı kodun kendi hash değerini takip etmesi ve sahte sertifikalandırmaya müsaade etmemesi çok önemlidir. Ancak çok ileri düzey bir saldırgan tersine mühendislik yöntemleriyle bunların tamamını atlatabilir.

 

M9

Tersine Mühendislik

Tersine mühendislikte yeterince uzman bir saldırganın mobil uygulamalar üzerinde etkisi olağanüstü fazladır. Her ne kadar çok ciddi sabır ve emek gerektirse de, bu tarz saldırılar en elit koruma yöntemlerini bile atlatabilmektedir.

 

Bu kapsamda kod karartma, uygun şekilde jeton kullanımı ve koruma mimarisinin önemli bir kısmını sunucu tabanlı ve rasgele yapmak çok önemlidir.

 

M10

Harici İşlevler

Uygulamaya ait yapılandırma ve log dosyaları ile diğer yan işlevler, bazen uygulamanın istismarı anlamında yeni kapılar açabilmektedir. Bu kapsamda uygulamayı bir bütün olarak ele almak ve bütünsel güvenliğine önem vermek çok önemlidir.

 


İlginizi Çekebilecek Yazılar





İletişim | Gizlilik | Kullanım Koşulları