Mobile Sistemler ve Uygulama Güvenliği @2014 Örnek Eğitim Notu bilgi@bga.com.tr
Güvenlik Perspektifleri Hacking Saldırgan gözü, izinsiz Denetim Saldırgan gözü, izinli Önlem Sistem yöneticileri, geliştiriciler
Eğitim İçeriği Doğrulama Eğilimi Bazı Web Standartları Demo Ortamı Detayları Android Uygulama Güvenliği Dalvik Virtual Machine SDK/Emülatör/ADB/Sandbox APK Yapısı ve Analizi HTTP/S Trafik Araya Girme APK / (De)compile / İmzalama Smali Injection LogCat / Shared_Prefs / IPC Memory ve Kaynak Kod Analizi ios Uygulama Güvenliği Jailbreak w/ Redsn0w Cihaza erişim (SSH/VNC) HTTP/S Trafik Araya Girme Tcpdump / Adhoc WI-FI / VPN ios Uygulama Cracking Objective-C Header Dump Cycript ile Runtime Analiz IPA Yapısı ve Analizi NSLog / UserDefaults / Plist Memory ve Kaynak Kod Analizi Android/iOS Denetim Adımları
Dama Gölge İlüzyonu
Doğrulama Eğilimi Kişinin yeni bir bilgiyi önceki inançlarına ters düşmeyecek şekilde yorumlamasıdır. Örnekler; akışkan ve saydam bir sıvının su olma öngörüsü, id isimli değişkenin tamsayı alması öngörüsü. Bir Cognitive Science terimidir.
7-14-16 Problemi
Falsification Bias Denetimlerde en kritik davranış biçimi şüphe ile yaklaşmak
Geliştirme Evrelerinde Güvenlik Gereksinimler & Senaryolar Geliştirme Kaynak Kod Analizi Prod Sonrası Dizayn Kalite Kontrol Tehdit Modelleme Güvenli Dizayn Pentest
Penetration Test Hedef uygulamalar üzerinde dinamik olarak güvenlik zafiyeti bulma metodudur. Hedefin ne kadar güvenli olduğunu değil, ne kadar güvensiz olduğunu gösterir. Üç yönteme ayrılabilirler; Whitebox Blackbox Greybox iç güveysinden hallice berbat fikrim yok
Mobil Uygulama Penetration Test Mobil pentest ile aranan güvenlik zafiyetleri aşağıdaki şekilde sınıflandırılabilir; İstemci taraflı güvenlik bulguları Güvensiz bilgi işleme ve depolama (db/config/temp) XSS, SQLi ve mantıksal açıklıklar Sunucu taraflı güvenlik bulguları Klasik OWASP Top 10 açıklıkları İstemci-Sunucu bağlantısı güvenlik bulguları Kimlik doğrulama/yetkilendirme/oturum/ssl bulguları
Mobil Uygulama Güvenlik Riskleri Top 10 listeleri güvenlik için vazgeçilmez öğeler haline gelmiştir. Mobil dünyanın getirdiği riskler için oluşturulan Top 10 listeleri; OWASP Top 10 Mobile Risks Veracode Mobile App Top 10 Risks Enisa Top Ten Smartphone Risks
Mobil Uygulama Diagram
1. Güvensiz Veri Depolama Hassas verilerin mobil uygulamalarda güvensiz depolanması Risk: Mobil cihazların büyüklükleri ve değerleri göz önüne alındığında kaybedilmesi ve çalınması olasılığı laptop lara göre daha yüksektir. Örnek: Remember Me? özelliği
2. Güvensiz Sunucu Uygulamaları Mobil uygulamalar genellikle bir sunucu ile iletişim kurarlar. Sunucu taraflı uygulamaların güvenliği önemlidir. Risk: Arka uç sunuculara yapılabilecek saldırılar. Bu saldırılara sebebiyet verebilecek zafiyetler web uygulama güvenliğinin konularının bir alt kümesidir. Örnek: SQL Injection, DOS, Yetersiz Auth/z
3. Yetersiz Bağlantı Güvenliği Mobil uygulama ve sunucu (veya başka cihazlar) arasında iletişim için WI-FI, 3G, NFC, Bluetooth bağlantı standartları kullanılır. Bu bağlantıların veri gizliliğini ve bütünlüğünü koruması için güvenli olmaları gerekir. Risk: ağ izleme ve araya girme saldırıları Örnek: Blackhat 2009 da bir katılımcı sahte bir WI-FI AP ile 20 e-posta şifresi çalmıştır.
4. İstemci Taraflı Injection Mobil uygulamalar da veritabanları ve web sayfaları kullanmaktadırlar. Risk: SQL Injection ve XSS gibi saldırılar Örnek: 2011 yılında Skype ios uygulamasında kullanıcı ismi alanındaki Stored XSS kullanılarak, mobil cihazdaki kontak bilgisi veritabanı çalınabilmiştir.
5. Yetersiz Yetkilendirme/Kimlik Doğrulama Arka uç uygulamalar, mobil kullanıcıları tanıyabilmek ve yetkilendirmek için IMEI, IMSI, UUID gibi güvensiz bilgileri kullanmaktadırlar. Risk: IMEI, IMSI, UUID gibi bilgiler çalınabilir ve sahteleri rahatlıkla üretilebilir. Örnek: AntiSec hacker grubu 2012 yılında 1,000,001 adet UUID yayınladı.
6. Güvensiz Oturum Bilgisi Mobil uygulamalar kullanıcılara tekrar tekrar şifre sormamak için uzun süreli ve geçerli oturum bilgilerini cihazda saklarlar. Risk: Çalınma veya kaybolma durumunda saldırganlar, kurbanmış gibi uygulamaları kullanabilirler. Extreme Bir Örnek: 3G bağlantılarda şifre sormayan uygulamalar
7. Güvensiz Girdilerin Tetiklediği Hassas İşlemler Mobil uygulamalar bazı girdileri kontrol etmeden işlemler gerçekleştirebilmektedirler. Risk: Bir web sayfasındaki URL schema sına göre arama yapılabilmesi veya bir uygulamanın diğer uygulamaya SMS attırabilmesi Örnek: <iframe src="tel:1-408-555-5555"></iframe> içerikli sayfayı ziyaret eden ios cihazın ilgili numarayı araması
8. Yan Kanal Veri Kaçağı Mobil cihazlar bir çok şekilde kullanıcıların bilgilerini cihaz üzerinde saklayabilirler. Risk: Çalınma veya kaybolma durumunda cihaz üzerindeki hassas bilgilerin elde edilebilmesi Örnek: Kullanıcı adı, şifrelerin cihaz kayıt dosyalarında bulunması, yazılan text lerin cihazda kaydedilmesi, otomatik alınan screenshot lar
9. Yetersiz Kriptografi Uygulama geliştiricileri kriptografi konusunda kendi yeteneklerini denemekte veya algoritmaları yanlış kullanmakta bonkördürler Risk: Uygulamada kullanılan şifreleme algoritmalarının kırılabilmesi Örnek: Şifreleme işlemi sonrası kullanılan anahtarın şifrelenmiş text in önüne eklenmesi
10. Gizlenmeye Çalışılan Gömülü Bilgiler Mobil uygulamalar decompile edilebilir veya runtime analizleri gerçekleştirilebilir. Risk: Kaynak kod içerisindeki hassas bilgiler (URL/Şifre) öğrenilebilir veya gizli metotlar çağrılabilir. Örnek: ios uygulamalaırnda cycript ile process lere bağlanılarak şifre deaktivasyon metotları çağrılıp şifre kontrolü atlatılabilir.
Diğer Önemli Mobil Güvenlik Riskleri Kötücül uygulamalar Uzaktan Yönetme, AndroRat Premium SMS gönderme Online bankacılık OTP çalma, Zitmo Trojan Phishing saldırıları Sahte bankacılık uygulamaları, 09Droid GSM Altyapısına Yönelik Saldırılar Konuşma, SMS şifrelemeleri, DoS
GSM - Örnek Bir Zafiyet 1 Bir baz istasyonu bir telefon çağrısı geldiğinde 1. Etrafına, ilgili cihazın kodunu içeren broadcast mesajı gönderir 2. Cihaz kendi kodunu farkeder, uyanır ve baz istasyonuna cevap döner 3. Baz istasyonu ve cihaz arasında kimlik doğrulama olur 4. Başarılı kimlik doğrulama sonrası özel bir radyo kanalı oluşturulur. Cihaz çalar Yukarıda süreçte bir DoS saldırısı nasıl yapılır?
GSM - Örnek Bir Zafiyet 2 56-bit lik DES şifreleme algoritmasını kullanan SIM kartlarda bulunan zafiyet ile SIM kartlarda değişiklik yapılabilmekte Uygulama kurulabilmekte Mobil ödeme uygulamalarında yetkisiz satın alım yapılabilmektedir. Yaklaşık 750 milyon cihaz, zafiyeti barındıran SIM kartları taşımaktadır.
GSM - Örnek Bir Zafiyet 2 GSM Association 1995 te kurulan ve telekom şirketlerinden oluşmuş bir organizasyondur. SIM kartlarda Triple DES veya AES anahtarlarının kullanılmasını tavsiye eder.
BYOD - Kendi Cihazını Getir Bring Your Own Device Bring Your Own Phone Bring Your Own PC Özellikle şirket kullanıcılarına tanınan seçim özgürlüğü olarak tanımlanabilir. Kullanıcıların kendi cihazlarını kurumsal ağlarda kullanmalarıdır.
Halihazırda Kurum içi Laptop/PC Kurum kullanıcılarına çalışma alanlarında verilen cihazlara uygulanan kontroller; Yerel yönetici haklarının verilmemesi Her uygulamanın kurul(a)maması Her ağ kaynağına ulaşılamaması (Internet) Anti-virus/firewall/host-based IPS/URL filtreleme Otomatik yama yönetimi
Halihazırda Kurum içi Akıllı Cihazlar Jailbreak yapılmamış iphone cihazlar Root lanmamış Android cihazlar Bu tür kırma işlemlerinin yapılmadığı Blackberry veya Windows Phone cihazları Şirket e-postalarına ulaşabilmek için konulması zorunlu olan PIN kilit mekanizmaları
BYOD ile Gelen Riskler Kullanıcıların kendi cihazlarında bu kısıtlamaların bir çoğu uygulanmamaktadır. İçerik filtreleme Anti-virüs koruması Güvenlik yama yönetimi OS Browser Flash/Adobe/Java Otomatik ekran kilitleri v.b.
BYOD Motivasyon En temelde dünyadaki yeni trend in engellenememesi Kurum çalışanlarının daha üretken olmaları Kurum çalışanlarının kendilerini daha rahat hissederek, şirketlerini çalışmaya elverişli bir yer olarak düşünmeleri Kurumları yeni iş arayanlar için daha cazip bir konuma getirmesi
BYOD Örnekleri Havayolu şirketlerinden akıllı cihazlar için görüntü ve ses desteği Otellerden akıllı cihazlar için pay-per-view desteği
Sayılarla BYOD ve BYOD Riskleri Kurumların %82 si çalışanların hepsinin veya bir kısmının kendi cihazlarını kullanmalarına izin vermektedir. Kurumların %50 si güvensiz yapılandırılan ve kullanılan cihazlar nedeniyle veri hırsızlığı saldırısına uğramıştır.
Daha Az Kontrol, Daha Az Kaza? Hans Monderman ın Paylaşılan Alan deneyi
BYOD Politikası Kendi cihazını kuruma getiren çalışanların mobil cihazlarını kullanım politikası Oyunun kuralları Mobil anayasası Politika olmadan kurum, cihazlar ve kullanımları üzerinde herhangi bir kontrol veya riskler konusunda yaptırım uygulayamaz
BYOD Politikası Maddeleri Uzaktan silme yetkisi Cihaz kaybolduğunda veya çalındığında işveren cihaz verilerinden bir kısmını veya tümünü korumak için silebilir Çalışan sorumlulukları Politikada listelenmiş ve MDM platformunun desteklediği cihazların kullanılması
BYOD Politikası Maddeleri İşveren sorumlulukları Mobil cihazlar bozulduğunda zararı, güvenlik açısından, karşılayarak sorumluluğu alması Cihaz ile yapılabilecek işlemlerin belirlenmesi Çalışanlar cihazları ile hangi verilere erişebilir, hangi verilere erişemezler Jailbreak veya rooting yapılamaması Hangi sitelere girilip, girilememesi
Mobile Device Management BYOD un getirdiği güvenlik kaygılarının gidermeye çalışan platform Uygulamaların kurulması Cihazların yapılandırılmaları Uzaktan silme Yamaların uygulanmaları MS Windows ortamlarındaki Active Directory ve Group Policy olarak düşünülebilir.
Android ve ios Eğitim Android ve ios uygulamalarının güvenlik denetim adımlarını içermektedir. İki platform, mobil işletim sistemleri pazarının %90 ın üzerinde paya sahiptir.
Android vs. ios - Telefon
Android vs. ios - Tablet
Android vs. ios - Uygulama
HTTP Giriş Web de dokümanların transfer edilme standardı.
HTTP İki tür HTTP mesaj çeşidi mevcuttur. İstek (Request) Cevap (Response) Genel HTTP mesaj yapısı şu şekildedir: istek veya cevap için değişen ilk satır[cr][lf] bir veya daha fazla başlık (header) [CR][LF] boş bir satır[cr][lf] opsiyonel bir mesaj bölümü[cr][lf]
HTTP İstek Örnek GET /index.jsp HTTP/1.1 User-Agent: Mozilla/4.0 (MSIE 6.0;... Accept: text/plain Content-Length: 0 Host: en.wikipedia.org Proxy-Connection: Keep-Alive Connection: Keep-Alive
HTTP İstek (Request) GET GET /index.jsp HTTP/1.1 User-Agent: Mozilla/4.0 (MSIE 6.0;... Host: en.wikipedia.org Proxy-Connection: Keep-Alive
HTTP İstek (Request) POST POST /login.jsp HTTP/1.1 User-Agent: Mozilla/4.0 (MSIE 6.0;... Host: en.wikipedia.org Cookie: JSESSIONID=ad5138754bcef Connection: Keep-Alive Content-Length: 30 login=webappsec&passwd=1g4olm#
HTTP Cevap (Response) 200 OK HTTP/1.1 200 OK Date: Fri, 31 Mar 2006 10:08:00 GMT Server: Apache/2.47 Set-Cookie: JSESSIONID=ad5138754bcef Content-Length: 92 <html> <head></head><body> </html>
HTTP Cevap (Response) 404 Not Found HTTP/1.1 404 Not Found Date: Fri, 31 Mar 2006 10:08:00 GMT Server: Apache/2.47 Content-Length: 96 Connection: close <html> <head></head><body> </html>
HTTP Cevap (Response) 302 Found HTTP/1.1 302 Found Date: Fri, 31 Mar 2006 10:08:00 GMT Server: Apache/2.47 Content-Length: 91 Location: http://www.google.com/a.jsp Connection: close <html> </html>
HTTP Cevap (Response) bazı kodlar 200 OK : istenilen kaynak bulundu 404 Not Found : istenilen kaynak bulunamadı 302 Found : kaynak başka yerde 500 Server Error : dahili sunucu hatası...
HTTP Proxy Tarayıcı ve web sunucu arasına girerek HTTP / HTTPS trafiginin yakalanmasına, değiştirilebilmesi için kullanılırlar. Kullanılma prensipleri bakımından; Tarayıcı ile tümleşik Tarayıcıdan bağımsız
HTTP Proxy
OWASP Zed Attack Proxy
Burp Proxy Free
Oturum Yönetimi HTTP protokolü durum bilgisini tutmaz. Durum bilgisi web uygulamalarında genellikle "SessionID" ile tutulur. Oturum yönetimi genellikle HTTP Cookie ile gerçekleştirilir. Cookie'ler SessionID'yi taşırlar. JSESSIONID PHPSESSID ASPSESSIONID ASP.NET_SessionId.ASPXAUTH
Oturum Yönetimi HTTP Cookie İsmini daha önce bilgisayarlarda kullanılan Magic Cookie'den almıştır. Lou Montulli, ilk e-ticaret sitesini geliştirirken sanal alış-veriş sepetini oluşturmak için kullanmıştır. RFC 6265, Nisan 2011
BGA İletişim www.bga.com.tr blog.bga.com.tr twitter.com/bgasecurity facebook.com/bgakademisi bilgi@bga.com.tr egitim@bga.com.tr