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. |