ios güvenlik mekanizmaları - unisip siber güvenlik sempozyumu 2014
TRANSCRIPT
iOS Güvenlik MekanizmalarıCode Signing, ASLR, DEP, Sanboxing, iOS Data Protection API…
# UNISIPSiberGüvenlikSempzyumu’14 !
@OguzhanTopgul
# whoamiOğuzhan Topgül
Uzman Araştırmacı @Siber Güvenlik Enstitüsü
• Mobil Güvenlik
• Mobil Zaralı Yazılımlar
• Web Güvenliği
OWASP-Türkiye - webguvenligi.org
BGK - bilgiguvenligi.gov.tr
Blog - oguzhantopgul.com
iOS Kullanıcı KısıtlamasıEn temelde 2 kullanıcı var:
• root: iOS kernel user ve kernel daemon’ları
• mobile: Kullanıcının çalıştırdığı tüm uygulamalar, bazı temel uygulamalar (SMS, Phone) ve diğer tüm işlemler
Code SigningTüm kütüphane ve binary’ler
Kod parçaları,
HTML dosyaları, resimler, plist dosyaları vs.
Apple tarafından veya Apple Authorized bir sertifika ile imzalanıyor.
JailBreak yapınca Code Signing devre dışı kalıyor.
Data Execution Prevention DEP
Bellekte çalıştırılabilir kod ve data birbirinden ayrılıyor.XDEP bypass için: Return Oriented Programming - ROP ROP: Halihazırdaki kod parçalarının tekrar kullanılarak olağan dışı ve işlemler yapılması. (Reusing code snippets) Bu sayede istenmeyen kötü amaçlı işlemler yaptırılabilir.
Address Space Layout Randomization - ASLR
ROP’un en büyük düşmanı.
ROP’da kullanılacak kodun bellekteki lokasyonunu bilmemiz gerekiyor.
Binary’ler, kütüphaneler, dinamik linker’lar, stack ve heap bellek adresleri randomize ediliyor.
Memory Leak’ler ASLR bypass için kritik öneme sahip.
SandBoxingKullanıcı Hakları kontrolüne ek güvenlik katmanı
Aynı user haklarıyla çalışsalar dahi, her uygulama kendi sandbox’ında.
SMS App ve Web Browser App: mobile
• SMS, browser cookie’sine erişemez.
• Browser, sms gönderemez.
Uygulamalar aynı hakla çalışıyor: Sandbox’un doğru çalışması gerek
iOS Güvenliği
CODE SIGNINGDEP
SANDBOX
ASLRROP ILE KOD CALISTIR
DRM korumasıDRM: Digital Rigths Management
Apple DRM = FairPlay
Apple Store’dan indirilen uygulamalar iTunes hesabı ile şifreleniyor.
İki farklı hesaptan aynı uygulamayı indirip kurabilirsin.
Uygulama binary’si Master Key ile şifrelenir.
Master Key, bir random key ile şifrelenir.
Random key iTunes hesabı ile ilişkilendirilip Appe Sunucularından tutulur.
Herhangi bir cihazda iTunes hesabı aktive edildiğinde bütün key’ler AppleStore uygulamasına gönderilir.
Uygulama binary’si cihazda DRM encrypted tutulur. Statik analiz için DRM encryption’un decrypt edilmesi gerekiyor.
iOS Data Protection API Dosya Sistemi Koruması
Hangi dosya ve Keychain elemanları hassas
Hassas elemanlar hangi durumda erişilebilir.
File Key: Dosyanın şifrelendiği anahtar.
Class Key: File Key’i şifreleyen Anahtar
File System Key: Dosya sistemini şifreleyen anahtar
iOS Data Protection API Dosya Sistemi Koruması
UID: Cihaza özel bir numara. Direk olarak erişilemez.
User Passcode: Kullanıcının device lock parolası
File System Key: Cihaz ilk kurulduğunda veya wipe edildiğinde yeniden oluşturulur.
iOS Data Protection API Dosya Sistemi Koruması
Bir dosya oluşturulduğunda bir protection class ile ilişkilendirilir:
NSFileProtectionComplete: Şifre girildiğinde Class Key belleğe alınır. Tekrar lock edildiğinde bellekten silinir.!NSFileProtectionCompleteUntilFirstUserAuthentication: Şifre girildiğinde Class Key belleğe alınır.Cihaz yeniden başlayana kadar bellekte kalır.!NSFileProtectionNone: Class Key sadece UID değerinden üretilir.
Keychain: Parola ve sertifika gibi hassas verilerin tutulduğu bir sqlite veritabanı.
Keychain dosya sisteminde NSFileProtectionNone tipinde.
Keychain güvenliği Keychain Protection Class’lar ile sağlanır.
Her uygulamanın bir app id’si ve Keychain Access grubu var.
Her uygulama kendi id’sinin erişim izni olan elemanlara erişebilir.
Aynı Keychain Access Gruba ait uygulamalar birbirlerinin Keychain elemanlarına erişebilir. (Aynı developera ait app’ler)
XXXThisDeviceOnly : UID + Parola
iOS Data Protection API Keychain Koruması
iOS Data Protection API Keychain Koruması
JailBreak
Tüm disk partitionlarına w+x hakkı vermek (iOS7 ??)
AFC ile / dizinine erişim hakkı vermek
Code Signing’i devre dışı bırakmak
Shell ve gerekli araçları, programları yüklemek
APR (/usr/lib) APT 0.7 (apt-key) APT 0.7 Strict (lib)
Base Structure Big Boss Icon Set
Bourne-Again SHell bzip2
Core Utilities (/bin) evasi0n 6.0-6.1.2 Untether
Cydia Installer Cydia Translations
Darwin Tools Debian Packager Debian Utilities Tape Archive UI Kit Tools
Diff Utilities Find Utilities
GNU Privacy Guard grep gzip
LZMA Utils New Curses PAM (Apple)
PAM Modules pcre
Profile Directory readline
sed shell-cmds
system-cmds
iOS Zararlı Yazılımlar
2009 2014
Unflod Baby Panda
Kitaplar ve Kaynaklar
http://images.apple.com/ipad/business/docs/iOS_Security_Feb14.pdfhttp://www.amazon.com/iOS-Hackers-Handbook-Charlie-Miller/dp/1118204123
http://www.amazon.com/Hacking-Securing-iOS-Applications-Hijacking/dp/1449318746http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651
Teşekkürler…OWASP Türkiye Sponsorları