iOS Güvenlik Mekanizmaları - UNISIP Siber Güvenlik Sempozyumu 2014

  • View
    784

  • Download
    2

  • Category

    Mobile

Preview:

Citation preview

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ı

Recommended