neděle 27. září 2020

iOS

 

iOS

Společnost Apple

Operační systém iOS, dále jen systém iOS, je mobilní operační systém, určený pro provoz přenosných zařízení typu smartphone, tablet, nebo multimediální centrum. Systém iOS byl představen v lednu roku 2007 společně s první verzí zařízení iPhone a dotykovou verzí přehrávače iPod. Do současnosti se vývoj systému posunul od první verze 1.0 do aktuální verze 7.1. Systém iOS je programován v programovacích jazycích C, C++ a Objectiv C. Aplikace jsou v systému iOS instalovány, spravovány a aktualizovány skrze obchod AppStore, který je předinstalovaný.

Společnost Apple Inc. je americká technologická společnost s mezinárodním zastoupením, která vyrábí a navrhuje spotřební elektroniku, počítače a software. Společnost byla založena 1. dubna 1976 v Cupertinu v americkém státě Kalifornii. Založena byla jejím budoucím dlouhodobým ředitelem Stevem Jobsem. Mezi nejznámější produkty společnosti patří profesionální řada osobních počítačů Macintosh, hudební přehrávač iPod, smartphone iPhone a tablet iPad. Společnost Apple se zaměřuje také na vývoj softwaru, především hudebního přehrávače iTunes, kancelářské sady aplikací iWork, profesionálního balíku pro úpravu fotografií Aperture, softwaru pro úpravu videa Final Cut Studio a aplikace pro práci s hudbou Logic Studio. V současnosti provozuje společnost Apple více než 300 prodejních poboček po celém světě. Společnost se svojí hodnotou řadí mezi deset nejhodnotnějších značek světa. Současným ředitelem je Tim Cook.

Zařízení poháněná syst. iOS

První přenosná zařízení od společnosti Apple, především hudební přehrávač iPod, byla poháněná vlastním firmwarem, vyvinutým pro konkrétní zařízení. Od uvedení první verze zařízení iPhone, které obsahovalo verzi iOS 1.0, byl systém upraven pro provoz na přenosných zařízeních typu Tablet PC iPadu. Kromě zařízení iPhone a iPad je systém využíván v hudebním přehrávači iPod a multimediální centru Apple TV. Systém iOS byl v průběhu vývoje vylepšován o nové předinstalované aplikace, s novými procesory také rychlejším a úspornějším provozem, multitaskingem a bezpečnostními prvky. Současná verze systému iOS 7.1 se od předešlých verzí systému liší grafickým rozhraním, které využívá průhledné efekty a světlejší odstíny barev. 5 První verze systému iOS poháněla zařízení s jedno jádrovým procesorem ARM.

Od iPhonu verze 4S a iPadu verze 2 byl jedno jádrový procesor nahrazen dvou jádrovým ARM Cortex procesorem. Tento krok výrazně zlepšil bezpečnost systému iOS, který byl při využití jedno jádrových procesorů vystaven útoku exploitů. Využití exploitů je v prostředí dvou jádrového procesoru problematické a exploit se stává nestabilním. U starších zařízení s jedno jádrovým procesorem byla z hlediska bezpečnosti provedena výměna setu instrukcí procesoru u modelu iPhonu 3GS, kde byl nově využit bezpečnější set instrukcí Thumb2. (3 s. 2) Zařízení iPod je hudební přehrávač, sloužící k uchovávání a přehrávání hudby, videa a obrazových prezentací. Společnost Apple nabízí ve svém sortimentu produktů řady iPod čtyři kategorie hudebního přehrávače. Nejmenší a nejzákladnější model tvoří iPod Shuffle. iPod Shuffle není vyráběn se zobrazovací jednotkou. Je tvořen ovládacím kotoučem a interní pamětí o velikosti 2 GB. Další variantou přehrávače je iPod Nano. Přehrávač je vybaven interní pamětí o velikosti 16 GB, ovládacím kotoučem a zobrazovací jednotkou. Od sedmé generace produktu je přehrávač distribuován s kapacitním dotykovým displejem o velikosti 2.5 palců a rozlišením 240 x 432 pixelů.

Zařízení iPod Classic se liší od ostatních variant použitím pevného disku pro uchovávání multimédií. Je tvořeno displejem o velikosti 2.5 palce a rozlišením 320 x 240 pixelů. Zařízení iPod Touch je jako jediné zařízení z řady přehrávačů iPod poháněno systémem iOS. Systém iOS je v případě iPodu Touch ochuzen o podporu telefonních hovorů a provozu na datových sítích. Je vybaven interní pamětí o velikosti až 64 GB a dotykovým kapacitním displejem o velikosti 4 palce a rozlišením 1136 x 640 pixelů. V současnosti je na trhu dostupná jeho pátá generace. Zařízení iPhone je produkt za kategorie smartphone. Všechny generace produktu iPhone jsou poháněny systémem iOS. Od roku 2007, kdy byla na trh uvedena první generace iPhonu, byly následně uvedeny generace iPhone 3G, 3GS, 4, 4S, 5 a 5S, resp. 5c. Zařízení iPhone je vybaveno kapacitním dotykovým displejem, interní pamětí, Wi-Fi modulem a od generace 3G také datovým modulem. Generace 5S se vyznačuje implementací nového bezpečnostního prvku skenování otisku prstu majitele pro odemčení zařízení.

Produkt iPad je zařízení z kategorie tablet PC poháněné systémem iOS. První generace tabletu iPad byla uvedena v lednu 2010. Od roku 2010 byly uvedeny generace iPad 2, 3, 4 a verze iPad mini. Zařízení iPad je vybaveno deseti palcovým kapacitním dotykovým displejem. Apple TV je multimediální zařízení, určené pro běžné televizory. Zařízení je poháněno upravenou verzí systému iOS, která je přizpůsobena ovládání skrze dálkový ovladač. 6 Multimediální centrum je dále vybaveno vestavěným pevným diskem a Wi-Fi modulem. První generace multimediálního centra byla představena v lednu 2007. V současnosti je v prodeji již čtvrtá generace zařízení Apple TV.

Verze systému iOS

Systém iOS se v současnosti nachází ve verzi 7.1. Jeho první verze spatřila světlo světa na konferenci Macworld &Expo v lednu 2007, kdy bylo současně představeno zařízení iPhone první generace. Vydávání nových verzí systému iOS je vázáno na uvádění nových generací zařízení, která iOS pohání, především zařízení iPhone. Verze iOS 1.0 byla představena v roce 2007 společně s první generací zařízení iPhone. Dostupná byla také v první generaci přehrávače iPod Touch. iOS 1.0 obsahoval sadu předinstalovaných aplikací, tj. kalendář, poznámky, záznamník a předpověď počasí. V první generaci systému byly dostupné také aplikace Google Maps, webový prohlížeč Safari a hudební aplikace iTunes. Tato verze neobsahovala obchod AppStore pro instalaci softwaru. Systém iOS 2.0 byl představen v červenci 2008 společně s iPhonem 3G. Novinkou byla přítomnost obchodu AppStore a možnost centralizované instalace aplikací. Společnost Apple vydala společně se systémem iOS SDK pro vývojáře aplikací. Systém iOS 3.0 byl vydán v červnu 2009 současně s uvedením iPhonu 3GS na trh. Verze 3.0 obsahovala notifikační centrum, funkce pro kopírování a vkládání textu, hromadné vyhledávání v zařízení a bezpečnostní aplikaci Find my iPhone pro vzdálené nalezení ztraceného, či odcizeného zařízení.

Systém iOS 4.0 byl vydán v červnu 2010 společně s iPhonem 4. Nová verze obsahovala multitasking, tj. práci s více současně spuštěnými aplikacemi, aplikaci FaceTime pro provozování video hovorů s dalšími majiteli zařízení se systémem iOS, funkci pro tvorbu složek s aplikacemi a pokročilého klienta elektronické pošty. S opravným vydáním systému iOS verze 4.2.1 byla přidána funkce AirPlay pro vzdálené přehrávání multimédií, funkce AirPrint pro vzdálený tisk na kompatibilních tiskárnách a herní aplikace Game Center. (8) Systém iOS 5.0 byl vydán v říjnu 2011 společně s iPhonem 4S. Největší novinkou verze 5.0 byl hlasový asistent Siri, který vyhledával na základě rozpoznávání řeči vlastníka zařízení. Dále bylo přidáno cloudové úložiště iCloud pro zálohování zařízení, vylepšená funkce pro 7 aktualizace zařízení a aplikace iMessage pro textovou komunikaci s ostatními majiteli zařízení se systémem iOS. Systém iOS 6.0 byl představen v září 2012 jako hromadná aktualizace pro kompatibilní modely se systémem iOS. Novinkou byla společností Apple vyvinutá mapová aplikace Maps, nový vzhled obchodu AppSTore, integrovaná sociální síť Facebook, funkce pro sdílení fotografií a aplikace Passbook pro uchovávání zakoupených vstupenek, kupónů a jiných peněžních transakcí. Systém iOS 7.0 byl vydán v září 2013 jako hromadná aktualizace kompatibilních modelů. Největší novinkou byl vzhled systému, který využívá průhledných efektů a bílých odstínů barev. V systému byl upraven multitasking, integrováno nové ovládací centrum zařízení, nová verze hlasového asistenta Siri a funkce AirDrop pro sdílení obsahu s ostatními uživateli systému iOS.

Správa systému iOS

Všechna zařízení, která pohání systém iOS, jsou centrálně spravována v aplikaci iTunes. Aplikace je dostupná také v klasické verzi pro osobní počítače a platformy Mac OS X a Windows. Aplikace iTunes slouží ke správě zařízení, zálohování aplikací a uživatelských dat, aktualizaci softwaru a synchronizaci hudby, fotografií a videí se zařízením. Aplikace AppStore je dostupná v klasické verzi pro osobní počítače pouze v systému Mac OS X od společnosti Apple. V zařízení se systémem iOS je aplikace AppStore předinstalovaná. AppStore slouží k instalaci, případně mazání aplikací v zařízení, aktualizaci aplikací a jejich správě. Aplikace AppStore umožňuje správu zařízení jen v případě, že má uživatel vytvořený aktivní účet u společnosti Apple. S účtem je možné následně spárovat platební kartu a uživatel může instalovat také placené aplikace pouhým kliknutím.

Architektura bezpečnosti iOS

Architektura iOS

Každý operační systém má v sobě bezpečnostní mechanismus, který zařízení chrání. Mechanismy jsou běžně přizpůsobeny bezpečnostnímu modelu, na kterém je založena celková bezpečnost zařízení. Bezpečnost systému iOS je vystavěna na bezpečnostním modelu a systému mechanismů, které předchází možným bezpečnostním rizikům. V této kapitole je popsána architektura zabezpečení systému iOS a způsoby, jakými je systém iOS zabezpečen proti útokům malwaru, exploitu a zásahu do systému.

Architektura systému iOS vychází z původní architektury operačního systému od společnosti Apple, tj. Mac OS X. Základní model architektury systému iOS (viz Obrázek 2.1) se skládá z pěti vrstev. Některé zdroje nezahrnují do modelu vrstvu aplikací. V našem případě je vrstva znázorněna pro větší přehlednost.

Aplikace

Rozhraní Cocoa Touch

Multimédia

Služby

Jádro systému

Obrázek 2.1 – Architektura systému iOS

Vrstva aplikací často není zahrnována do modelu architektury systému iOS. Do této vrstvy jsou řazeny pouze instalované aplikace v zařízení. Zahrnovány jsou také nativní aplikace, 10 které jsou v systému iOS předinstalované. Vrstva Cocoa Touch je důležitá pro správnou funkci grafického rozhraní systému iOS a aplikací. Je závislá na zobrazovacím frameworku UIKit, s jehož pomocí jsou následně vykreslovány aplikace, napsané v jazyce Objective-C. Nejdůležitější funkcí frameworku UIKit je rozhraní pro dotykové ovládání aplikací a rozpoznávání gest. Jazyk Cocoa je používán pro tvorbu aplikací, určených pro provoz v prostředí systému iOS. Cocoa není programovací jazyk v původním významu. Je to jen nástroj, s jehož pomocí vývojáři upravují své aplikace tak, aby bylo sjednoceno grafické rozhraní a ovládací prvky. Vrstva multimédií obsahuje grafické, video a audio nástroje pro správné zpracování multimediálního obsahu. Obsahuje grafické knihovny OpenGL a OpenAL, Core Graphics Framework pro zpracování 2D a 3D grafiky, knihovnu Assets pro zpracování fotografií a videí, knihovny pro zpracování zvukových a video formátů. Součástí vrstvy služeb jsou systémové služby, podporující správnou funkci a instalaci aplikací, cloudové úložiště, správu vnitřní paměti zařízení, databázové nástroje, nástroje pro zpracovávání skriptů a mechanismy pro zabezpečení zařízení.Jádro systému zajišťuje bezproblémový provoz systému iOS na hardwaru zařízení. Obsahuje ovladače k hardwarovým modulům pro grafiku, procesor, operační paměť a síťové připojení. Jádro systému je šifrované a dešifrování je možné pouze při znalosti šifrovacího klíče a tzv. AES inicializačního vektoru. Šifrovací klíč i inicializační vektor jsou dále šifrovány s využitím GID klíče, který je pro každé zařízení se systémem iOS unikátní.

Model bezpečnosti iOS

Bezpečnost systému iOS je navržena s pomocí základního modelu bezpečnosti, na kterém je založena bezpečnost všech verzí systému iOS. Bezpečnostní model rozděluje bezpečnost systému do čtyř základních komponent. Komponenty bezpečnostního modelu systému iOS jsou bezpečnost zařízení, datová bezpečnost, síťová bezpečnost a bezpečnost aplikací.

Bezpečnost zařízení

Komponenta bezpečnosti zařízení pomáhá ochránit zařízení před zneužitím neautorizovanou stranou. Nejběžnějším mechanismem komponenty je PIN kód a heslo pro uzamčení zařízení. Od verze iOS 7.0 bylo nově k heslu zařízení zařazeno snímání otisku prstu, které je implementované do domovského tlačítka zařízení iPhone 5S. Společnost Apple umožňuje podnikovým zákazníkům využít dalších rozšiřujících mechanismů pro vynutitelnost 11 nastavení hesla zařízení, stanovení jeho minimální délky, povinné využití alfanumerických znaků, či zadávání speciálních znaků. V podnikových podmínkách je možné nastavit dobu expirace hesla. Součástí hesla zařízení je také možnost nastavení blokace zařízení v případě zadání několika chybných pokusů o zadání hesla. Další součástí komponenty jsou profily. Podnikoví zákazníci mohou využívat ověřené bezpečnostní profily pro přístup do chráněné VPN, připojení k WI-Fi, přístup k elektronické poště. Centralizovaná konfigurace zařízení může omezit využívání konkrétních služeb zařízení, např. portálu YouTube, či kamery zařízení. Omezena může být také možnost instalace aplikací třetích stran.

Datová bezpečnost

Komponenta datové bezpečnosti zahrnuje metody, sloužící k ochraně citlivých dat v zařízení, včetně jejich ochrany v případě odcizení zařízení. Mechanismus ochrany dat zahrnuje vzdálenou správu zařízení, šifrování a ochranu dat. Vzdálená správa zařízení umožňuje uživateli nalézt zařízení v případě jeho odcizení s pomocí geolokační funkce. Současně je možné zařízení vzdáleně zablokovat, či vymazat jeho obsah. Mechanismus pro šifrování umožňuje šifrovat všechna data, uložená v zařízení. Šifrována jsou také data, která jsou zálohována s pomocí aplikace iTunes. Šifrovací klíč se vytváří v aplikaci iTunes a následně se ukládá v zařízení. Tento šifrovací klíč je následně využíván k šifrování dat v zařízení a také k šifrování zálohovaných dat. Mechanismus pro šifrování využívá harwarové akcelerace od uvedení iPhonu 3GS. Hardwarová akcelerace pro šifrování je dostupná vývojářům aplikací. Účinnost šifrování se zvyšuje při využití hesla zařízení, resp. biometrického otisku prstu, bez kterého není možné dešifrovat data. Apple doporučuje pro maximální účinnost šifrování využívat komplexní hesla zařízení, namísto pouhého PIN kódu, který se prolamuje mnohem rychleji. I přes integrovaný mechanismus pro šifrování existují způsoby, jak odcizit data v zařízení.

Síťová bezpečnost

Síťová bezpečnost je součástí systému iOS již od jeho první verze. Součástí této komponenty je funkce VPN, šifrování SSL/TLS a bezdrátové šifrování WEP/WPA/WPA2.Kromě integrovaných mechanismů pro šifrování podporuje systém iOS využívání certifikátů. Certifikáty je možné využít pro připojení k podnikové VPN, nebo vyhrazené internetové síti. Příkladem může být akademická internetová síť Eduroam, která pro svůj provoz vyžaduje 12 instalaci certifikátu v zařízení. Instalace certifikátů v zařízení se systémem iOS probíhá automaticky.

Bezpečnost aplikací

Komponenta bezpečnosti aplikací využívá testovacího prostředí k zabezpečení aplikací. Testovací prostředí, tzv. Sandbox, izoluje aplikaci, jejíž zdrojový kód je považován za nedůvěryhodný, od systémových zdrojů. Sandbox zároveň omezuje množství paměti a cyklů procesoru, které mohou aplikace využívat. Současně je omezen přístup k souborům v zařízení z domovského adresáře aplikace. Společnost Apple umožňuje vývojářům pracovat s moduly pro GPS, kameru, či pohybové sensory. Znemožňuje naopak přístup aplikací k některým modulům přímo. Společnost Apple v rámci komponenty pro aplikační bezpečnost využívá podepisování aplikací, které jsou určeny k běhu v prostředí systému iOS. Aplikace může být podepsána přímo společností Apple, nebo jinou certifikační autoritou, která musí být ověřenu u společnosti Apple. Mechanismus pro podepisování aplikací kontroluje binární kód aplikací při běhu v systému. Tento přístup znemožňuje aplikacím měnit svou strukturu. Apple využívá ke kontrole aplikací testy, které zjišťují, zda nebyla v binárním kódu aplikace provedena změna a zda se v aplikaci nevyskytuje nepodepsaný kód. Součástí komponenty je centrální úložiště šifrovacích klíčů. Úložiště umožňuje využití šifrovacích klíčů k nízko úrovňovému čtení a zápisu dat v zařízení. Data v centrálním úložišti jsou oddělena a aplikace nemohou přistupovat k datům ostatních aplikací. Společnost Apple umožňuje vývojářům šifrovat své aplikace pomocí kryptografického API. Architektura kryptografického API využívá šifer AES, 3DES a RC4. Šifrování je navíc navrženo tak, aby využívalo plně hardwarové akcelerace. Šifru AES a SHA1 hash využívá systém iOS jako součást bezpečnosti svého datového rámce.

Upravená útočná vrstva

Upravená útočná vrstva je speciální kód, který zpracovává vstupní data. Vrstva funguje na principu vyhledávání zranitelností ve zdrojovém kódu systému. V případě, že útočník nalezne potenciální zranitelnost v systému, nemůže této zranitelnosti využít k tvorbě exploitu, z důvodu průběžné kontroly kódu v systému. Množství kódu, které je potenciálním útočníkům dostupné, je omezené a klíčem k úspěchu této technologie je právě snaha o její minimalizaci. Upravená útočná vrstva se vyskytuje také v klasickém operačním systému pro počítače od 13 společnosti Apple systému Mac OS X. Pro potřeby využití v přenosných zařízeních typu iPhone, nebo iPad, byla značně upravena. Její základní princip zůstal nezměněný. Největším rozdílem je schopnost zpracovávat lokální soubory. Příkladem může být soubor „.psd“. V systému OS X, především ve webovém prohlížeči Safari, je možné spouštět tento typ souborů bez potíží. V mobilní verzi prohlížeče Safari v systému iOS již nelze. Soubory .mov systém OS X běžně podporuje. Naopak systém iOS podporuje pouze jejich upravenou verzi, která je silně okleštěná o původní funkce.

Známou zajímavostí je neexistence podpory pro technologie Java a Flash v systému iOS. Apple hodnotí tyto dvě technologie z hlediska bezpečnosti jako silně zranitelné a právě z toho důvodu nejsou dostupné pro systém iOS. Tento přístup souvisí s použití upravené útočné vrstvy, která se snaží minimalizovat množství zranitelností v kódu. Java a Flash mají za sebou bohatou historii zranitelností a proto jsou pro systém iOS nedůvěryhodné. Společnost Apple bývá v přístupu k technologiím třetích stran silně nedůvěřivá což má své výhody a nevýhody. Výhodou je maximalizace bezpečnosti systému iOS. Nevýhodou právě nepřítomnost technologií Java a Flash v systému, která způsobuje uživatelům problémy při zobrazování obsahu, který je postaven právě na zmíněných technologií.

Diverzifikace systému

Kromě omezení množství dostupného kódu pro možný útok je systém iOS diverzifikován (Stripped-Down). Snahou je znemožnit nezávislé spouštění různých aplikací v systému, které by mohly následně spouštět další aplikace. Příkladem může být příkazová řádka (Shell) v systému OS X. Útočníci se snaží o tvorbu exploitu, který následně spouští kód právě přes příkazovou řádku. Systém iOS příkazovou řádku neobsahuje a omezuje tak možnosti využití exploitu tímto způsobem.

Oddělování práv

Systém iOS využívá při dělení práv stejnou strukturu, jako tradiční systém UNIX, tzn. skupiny uživatelů user, group a root. Nejběžnější využití mají aplikace s udělenými právy „mobile“, které jsou identické k právům „user“. Do této skupiny patří aplikace třetích stran, webový prohlížeč, nebo klient elektronické pošty. Systémové procesy jsou řazeny do skupiny práv „root“. Mezi ně řadíme např. procesy _wireless, nebo _mdnsresponder. V případě napadení webového prohlížeče, je útočník silně limitován skutečností, že webový prohlížeč má 14 pouze práva „mobile“ a nemůže spouštět systémové procesy. Stejně je tomu u aplikací, instalovaných z obchodu AppStore. Všechny instalované aplikace mají přidělená práva „mobile“ a nemohou tak spouštět procesy skupiny práv „root“.

Podepisování kódu

Podepisování kódu (Code Signing) je nejdůležitějším bezpečnostním mechanismem, který společnost Apple v systému iOS využívá. Binární kód a knihovny aplikací musí být před spuštěním podepsány důvěryhodnou autoritou. Kód, který není podepsán, nemůže být spuštěn. Uživatelům také není umožněno stahovat a instalovat aplikace z prostředí internetu. Instalovat aplikace mohou pouze z obchodu AppStore, kde jsou aplikace společností Apple kontrolovány a podepsány. Tímto krokem je systém iOS chráněn před malwarem. Aplikace se také nemohou samovolně aktualizovat. Nemožnost stahovat a instalovat kód v prostředí iOS omezuje možnosti využití exploitu, který pro svou funkčnost vyžaduje dodatečné instalace z internetu. Podepisování kódu byl také impuls pro pozdější snahu tento bezpečnostní mechanismus obejít. Výsledkem byl vznik tzv. Jailbreaku. Jailbreak je zásah do systému, který umožní uživateli systém upravit podle svých potřeb, především k instalaci aplikací třetích stran, které nejsou podepsány.

Datová prevence (DEP)

Datová prevence, tzv. DEP (Data Execution Prevention), je mechanismus, který brání přístupu kódu k datům v okamžiku, kdy procesor rozpoznává, co je spuštěný kód, a co data. Mechanismus se využívá při exploitu, který se snaží spustit tzv. payload, který uměle zatěžuje procesor. Mechanismus DEP je rozpozná a posoudí jako data, která nemohou být spuštěna. Útočníci se snaží mechanismus DEP obcházet používáním návratově orientovaného programování. Návratově orientované programování, tzv. ROP (Return Oriented Programming) je procedura, kdy útočník zpětně využívá části kódu, které nebyly zpracovány procesorem k ovládnutí systému. Typickým útokem s využitím ROP je tvorba spustitelné a zapisovatelné oblasti v paměti, kterou nemá DEP pod plnou kontrolou. Útočník následně využije vzniklý prostor k exploitu. Problémem při využívání exploitu při obcházení DEP se stává podepisování kódu. Nepodepsaný kód nemůže spustit jinou aplikaci, ani zapisovat data. Právě kombinace mechanismu DEP a podepisování je pro útočníky prakticky neproniknutelná. Jedinou možností, 15 jak systém DEP zcela obejít je využití ROP pro úplné přepsání exploitu, což bývá velmi časově náročné.

Adresní prostor (ASLR)

Útočník při využívání ROP potřebuje nutně znát umístění kódu, který se snaží zneužít. V tom mu brání adresní prostor, tzv. ASLR (Address Space Layout Randomization). Adresní prostor náhodně umísťuje objekty v paměti, čímž se pro útočníka stávají nedostupné. V systému iOS jsou takto rozmístěny systémové knihovny, nebo binární kód systému. Mechanismy ASLR společně s DEP pracují od okamžiku spuštění systému. Útočník potřebuje ke zneužití systému znát dvě zranitelnosti. Musí znát, jaký kód je spustitelný a následně jeho umístění v paměti. Právě tomu brání kombinace mechanismů DEP a ASLR.

Testovací prostředí

Testovací prostředí, tzv. Sandbox, tvoří bezpečnostní mechanismus, který brání proniknutí malwaru do systému využitím předem stanovených práv. Sandbox pomáhá systému iOS určit, jaká práva by měla být aplikaci přidělena tak, aby aplikace nemohla přistupovat k datům jiných aplikací. Sandbox můžeme považovat za poslední bránu do systému v případě, kdy by se útočníkovi podařilo umístit úspěšně malware do obchodu AppStore. Právě Sandbox zabrání nekontrolovatelnému přístupu k datům jiných aplikací v systému iOS, či spouštění procesů. Mechanismus zabraňuje krádeži osobních dat, např. fotografií, nebo samovolnému posílání sms zpráv. Příkladem využití Sandboxu je instalace aplikace Dropbox. Aplikace se po povolení a zadání hesla v obchodě AppStore nainstaluje do zařízení. Aplikace je v Sandboxu posouzena podle vyžadovaných přístupových práv. V případě aplikace Dropbox jsou vyžadována práva pro přístup k fotografiím. Následně je v nastavení systému a sekci „soukromí“ zařazena aplikace Dropbox do záložky „Obrázky“, kde může následně uživatel povolit přístup k fotografiím, či zakázat.

Šifrování

Důležitou součástí zabezpečení systému iOS je šifrování. Společnost Apple využívá k šifrování dat speciální API pro ochranu dat, tzv. Data Protection API, které je současně 16 k dispozici vývojářům aplikací. Cílem API je ochrana citlivých uživatelských dat v zařízení pro případ jeho odcizení. Další metodou pro ochranu dat je využívání bezpečnostních scénářů.

Ochrana dat

Jak bylo zmíněno výše, hlavním účelem šifrování dat je jejich ochrana v případě odcizení zařízení. Kromě samotného šifrování existují různé scénáře, podle kterých mohou vývojáři zabezpečit své aplikace. Scénáře můžeme rozdělit do dvou základních skupin, které vychází z již používaného zabezpečení systému iOS. Prvním je šifrování dat a jejich zpřístupnění až po odemčení zařízení uživatelem. Alternativou je dostupnost dat i v případě uzamčeného zařízení. Vývojáři deklarují ve zdrojovém kódu ochranné třídy, tzv. Protection Class, pro rozpoznávání situací, kdy budou data dostupná a kdy nikoliv. Implementace ochranných tříd probíhá s využitím hierarchie klíčů (viz Obrázek 2.2). Základem hierarchie je UID klíč a uživatelské heslo. Každý UID klíč je unikátní pro každé zařízení se systémem iOS. Klíč je vestavěn do šifrovacího akcelerátoru a není dostupný aplikacím v zařízení. Je využíván akcelerátorem k šifrování a dešifrování dat. Po každém odemčení zařízení je uživatelské heslo šifrováno s využitím šifrovacího algoritmu PBKDF2. Výsledkem je vytvoření hesla šifrovacího klíče, který je uchováván v paměti zařízení do jeho uzamčení. UID klíč je používán také k tvorbě šifrovacího klíče zařízení, který je následně využíván k šifrování všech dat v zařízení.



Data Protection API

API pro ochranu dat, tzv. Data Protection API je využíváno k ochraně a šifrování dat v zařízení. Je navrženo tak, aby aplikace sami určovali, kdy budou soubory dešifrovány a zpřístupněny. Toho docílí přechodem definovaných ochranných tříd do již existujícího API. Ochranná třída následně informuje systém, kdy dojde k dešifrování souborů. Pro správné použití API k ochraně dat musí každá aplikace nastavit hodnotu atributu NSFileProtectionKey s použitím třídy NSFileManager.

Bezpečnost aplikací

Schvalovací proces aplikací

Běžní uživatelé nemají jinou možnost instalace aplikací, než skrze obchod AppStore. Pokud uživatel zařízení se systémem iOS neprovede zásah do systému, tj. Jailbreak, nemá jinou možnost, jak aplikace třetích stran instalovat. Každá aplikace, která je k dispozici v obchodě AppStore, prochází schvalovacím procesem, při kterém je analyzována a testována před jejím definitivním umístěním v obchodě. Společnost Apple tento krok vysvětluje jako způsob bezplatné antivirové kontroly aplikací, které si uživatelé následně instalují do zařízení. Schvalovací proces se netýká jen potenciálně nebezpečných aplikací, ale také podvodných aplikací, jejíž vývojáři se vydávají za známé mediální, či technologické společnosti a pod falešnou značkou vydávají své aplikace. Zajímavostí je, že i přes poměrně přísný seznam práv a povinností, které jsou sepsány v příručce pro vývojáře, tzv. Guidelines, se v obchodě AppStore někdy vyskytne podobně podvodná aplikace. Samotnému procesu schválení předchází několik povinností pro vývojáře aplikací. Celý proces je naznačen v obrázku (viz Obrázek 3.1). V prvním kroku je nutná registrace vývojářského profilu u společnosti Apple. Po registraci obdrží vývojář certifikát. V dalším kroku obdrží vývojář právo na distribuci aplikace. Před samotným předáním aplikace ke schválení je ještě nutné aplikaci podepsat. Následně je možné aplikaci nahrát v aplikaci iTunes ke schválení. Samotný schvalovací proces vyžaduje přibližně jeden den. V jeho průběhu je aplikace testována, ověřován podpis, recenzována a následně, v případě úspěšného schválení, vložena do obchodu AppStore.


Šifrování

Šifrování je základní kámen bezpečnosti aplikací v systému iOS. Vývojáři mají k dispozici množství šifrovacích algoritmů a technik, které mohou využít k zabezpečení svých aplikací. Útočníci se při snahách o ovládnutí systému snaží především odcizit uživatelská data a proto je implementace šifrování ze strany vývojářů žádoucí.

Heslo šifrovacího klíče

Pro kvalitní implementaci šifrování je nutné použití dostatečně silného hesla šifrovacího klíče. Právě používání hesel vývojáři často podceňují a umožňují tak útočníkům jednodušší proniknutí k datům v aplikaci. Povinností každého vývojáře je stanovení vlastní bezpečnostní politiky pro tvorbu hesla šifrovacího klíče. V odborných publikacích jsou zmiňovány tyto způsoby tvorby bezpečného hesla šifrovacího klíče:

  • Vysoký počet znaků
  • Kombinace malých a velkých znaků
  • Kombinace znaků, která obsahuje číslice
  • Použití speciálních znaků, např. interpunkce
  • Zadávání znaků bez předem známé kombinace na klávesnici
  • Minimalizování využití dohledatelných slov ve slovníku
  • Nevyužívání strukturovaných dat, např. datum

Za silné heslo je považováno takové, které obsahuje minimálně 12 znaků. V minulosti byly zaznamenány útoky na hesla šifrovacích klíčů, které využívali techniky pro vyhledávání způsobů zadávání hesla na klávesnici a následně určování adekvátního pořadí zadaných znaků. Řešením je dodržování zásah tvorby bezpečných hesel.

Knihovna Common Crypto

Knihovna Common Crypto, známá pod zkratkou CCCrypt, umožňuje nejjednodušší způsob implementace šifrování pro aplikace, určené pro systém iOS. Knihovna obsahuje množství funkcí a algoritmů, které vývojářům usnadňují způsob implementace lepšího zabezpečení jejich aplikací v podobě šifrování. Knihovna podporuje šifrovací algoritmy AES, DES, 3DES a další šifrovací standardy. V závislosti na šifrovacím algoritmu je využívána bloková, či proudová šifra. Bloková šifra rozděluje data do stejně velkých bloků, které následně šifruje. Tento typ šifry využívá nejsilnější šifrování soukromého klíče a využívá se u aplikací, které zpracovávají vstupní data se známou velikostí. Proudová šifra se využívá v případě, že množství dat je tak rozsáhlé, že je není možné šifrovat najednou. Tento typ šifry je rychlejší, než bloková šifra, je ale citlivější na některé druhy softwarových útoků, např. útok bit-flipping. Další funkcí knihovny Common Crypto je řetězení blokové šifry. Řetězení využívá inicializační vektor společně se vstupní hodnotou pro šifrování, použitou u šifrování předešlého bloku. Funkce řetězení znemožňuje útočníkům využít útok typu man-in-the-middle. Útočník nemůže data dešifrovat ani v případě, že získá šifrovací klíč z důvodu přítomnosti inicializačního vektoru, jehož hodnotu nezná.

Šifrování Master Key

Šifrování Master Key je způsob šifrování šifrovacího klíče. Šifrování využívá mechanismu odvozování KDFs (Key Derivation Functions) pro odvozování klíčů z utajené hodnoty, např. hesla. Právě šifrovací klíč, vytvořený pomocí Master Key, poskytuje výhodu v podobě pružné možnosti měnit heslo šifrovacího klíče. Další výhodou je schopnost upravit heslo tak, aby byl výstupem klíč o požadované velikosti, tj. při použití hesla o čtyřech znacích může být vytvořen klíč o velikosti 128 bitů, 256 bitů, nebo jiné velikosti. Master Key využívá také funkci PBKDF2 (Password Based Key Derivation Function), která je obsažena ve specifikaci šifry RSA a zajišťuje odvození šifrovacího klíče z hesla.

Geo šifrování

Geo šifrování je rozšiřující funkcí pro hesla, zabezpečená s využitím Master Key. Využívá se především v podnikové sféře, kde zaměstnanci využívají slabá hesla. Rozšíření umožňuje šifrovat data na základě geografického umístění uživatele. Funkce odvozuje šifrovací klíč z aktuální geografické pozice zařízení. Nejčastěji ze záznamu GPS umístění. Toto rozšíření brání útočníkům dešifrovat data, pokud neznají koordináty, podle kterých byla data zašifrována. Útočník se musí v prvním kroku zaměřit na zjištění historie geografického umístění zařízení, před přímým pokusem o dešifrování dat. Před použitím Geo šifrování je nutné zablokovat služby, které zaznamenávají polohu zařízení, např. Google Maps. Geo šifrování může být dále rozšířeno s využitím hesla šifrovacího klíče.

Rozdělení klíče

Vývojáři, jejichž aplikace běží na principu client-server. Tyto aplikace využívají k šifrování dat rozdělený klíč. První klíč je generován uživatelem na zařízení a druhý na straně serveru. Aplikace po spuštění vyžaduje zadání hesla ze strany uživatele a je vytvořena první část klíče. Následně se provede autentizace na straně serveru, kde aplikace obdrží druhou část klíče.

Šifrování s veřejným klíčem

Šifrování s veřejným klíčem je asymetrická šifra, která využívá oddělené klíče k šifrování a dešifrování dat. Veřejný klíč je využíván pro zlepšení zabezpečení komunikačních kanálů, kde je použito SSL. Šifrování s veřejným klíčem využívají aplikace, zaměřené na finance apod. Zabezpečení prostřednictvím SSL není dostačující v případě, že se chce vývojář vyhnout případné špionáži. S využitím veřejného klíče mohou toto riziko výrazně snížit.

Zabezpečení paměti

O zabezpečení paměti systému iOS se stará bezpečnostní mechanismus ASLR, který sám náhodně zapisuje data do úseků paměti tak, aby bylo jejich umístění pro útočníka nedohledatelné. Zabezpečení paměti je nutné z hlediska možné budoucí krádeže zařízení, kdy může útočník získat přístup k fyzickým datům v zařízení. Společně s mechanismem ASLR 22 existuje postup, který se vývojářům doporučuje v případě, že chtějí sami zlepšit zabezpečení paměti zařízení.

·        Neukládat data a hesla do paměti, dokud nedojde k autentizaci uživatele

·        Neukládat šifrovací klíče a citlivá data uvnitř instancí jazyka Objective-C

·        Neukládat ukazatele šifrovacích klíčů uvnitř proměnných v instancích

·        Smazat citlivá data z paměti, pokud není jejich využití nezbytně nutné

Neukládat citlivá data do paměti, např. šifrovací klíče, nebo čísla kreditních karet, je důležitou součástí bezpečnosti paměti zařízení. Citlivá data by měla být využívána pouze v případě, že je některý program nezbytně vyžaduje. Data nemusí být ukládána ani ve chvíli, kdy program, který je zpracovává, momentálně běží na pozadí.

Zabezpečení běhového prostředí

Běhové prostředí systému iOS zajišťuje bezproblémový chod aplikací. Každá aplikace třetích stran, která projde testovacím prostředím, využívá pro svůj chod běhové prostředí. Právě při chodu v běhovém prostředí jsou aplikace třetích stran nejzranitelnější. Odborné publikace popisují několik způsobů, jak aplikaci úspěšně zabezpečit a předcházet jejímu zneužití ze strany útočníka.

Falešná odezva

V případě odcizení zařízení se systémem iOS je hlavním cílem útočníka průnik do systému a především k uživatelským datům. Hlavní ochranou bariérou je šifrování, které bylo popsáno v předešlých kapitolách. I přes šifrování může útočník využít nástroje k průniku. Nejjednodušší cestou k uživatelským datům je průnik skrz aplikace třetích stran, které mohou být špatně zabezpečené. Útočníci často využívají specializované nástroje, tzv. Debuggery, k získání plné kontroly nad aplikací. Debugger skenuje aplikaci a zjišťuje její celkový stav. Falešná odezva, tzv. Tamper Response, je mechanismus vestavěný do aplikace, který minimalizuje dopady při jejím narušení. Mechanismus zasílá zpětnou odpověď o stavu aplikace a uchovávaných datech, která se liší od skutečnosti. Útočník tak dostává nepravdivé, nebo neúplné informace o stavu aplikace, což mu komplikuje její zneužití.

Ochrana uživatelských dat

Jak bylo zmíněno výše, útočníka zajímají především uživatelská data. Útočníci si v mnoha případech zálohují zašifrovaná data aplikace pro případ, že by se aplikace pokusila o jejich smazání v případě detekce průniku. Jednou z metod ochrany uživatelských dat je zabudování bezpečnostního mechanismu, který v případě pokusu o vypnutí detektoru průniku upraví data do nečitelné podoby. Tento způsob je použitelný v případě, že útočník neprovede zálohu dat před samotným útokem. V opačném případě je nutné využití kvalitního šifrování dat v aplikaci s využitím šifrovacího klíče a hesla. Změněná data v zařízení mohou být obnovena s využitím šifrovacího klíče. Šifrovací klíč nesmí být před použitím k obnově dat poškozen, jinak jsou data v zařízení trvale neobnovitelná. (11 s. 288)

Vypnutí síťového připojení

Aplikace, které mají zabudovaný detektor průniku, považují koncového uživatele v případě narušení za nedůvěryhodného. V případě narušení dojde k přerušení síťového spojení aplikace s koncovými servery. Tento mechanismus zabraňuje zneužití citlivých dat, především čísel platebních karet u aplikací zaměřených na bankovní transakce. V případě detekce narušení aplikace dojde okamžitě k přerušení veškerého spojení a aplikace ohlásí chybu připojení k internetové síti.

Zpětná vazba

Mechanismus zpětné vazby je využívaný především u podnikových aplikací. Aplikace v případě bezpečnostního incidentu odesílá zprávu na centralizovaný server, kde je zpráva následně vyhodnocena. Součástí zprávy může být popis průniku do aplikace, čas a místo průniku a také IP adresa útočníka, v případě vzdáleného pokusu o proniknutí do aplikace. Útočník může omezit funkci mechanismu zpětné vazby pouze vypnutím síťového připojení, což je velmi složité především z důvodu existence oddělených práv v systému iOS.

Logování

Implementace logování do aplikace společně s mechanismem zpětné vazby může pomoci zpětně vyhodnotit bezpečnostní incident. Právě logování je důležité pro tvorbu podnikového DRM (Disaster Recovery Management). Záznam všech aktivit v případě 24 bezpečnostního incidentu, např. zasažená data, Wi-Fi připojení, záznam uživatelských aktivit, může zpětně pomoci vyhodnotit pokus o průnik do aplikace a zlepšit tak zabezpečení.

Sledování procesů

Když útočník využije pro analýzu stavu aplikace nástroj typu Debugger, jádro systému upozorní aplikace. Jen velmi málo vývojářů implementuje do svých aplikací mechanismy pro rozpoznávání zpráv z jádra systému o použití Debuggeru. Včasné upozornění na pokus o skenování aplikace může pomoci vývojářům implementovat různé scénáře. Aplikace může automaticky smazat uživatelská data, upozornit centralizovaný server, odeslat údaje o poloze zařízení, vynutit vypnutí, nebo ukončit proces běhu aplikace.

Blokování debuggeru

Blokování Debuggeru je další možností, jak zabezpečit aplikace třetích stran. V odborných publikacích se setkáme s množstvím různých technik a návodů, jak aplikaci vylepšit o vlastní mechanismus detekce použití Debuggeru. Ve většině případů k nim autoři přikládají také zdrojové kódy, které mohou vývojáři jednoduše implementovat do svých aplikací. Mechanismus rozpozná, zda byla aplikace skenována a reaguje podle nastaveného scénáře. Většina technik se shoduje ve způsobu reakce na použití debuggeru a to násilným ukončením aplikace, nebo jejím pádem.

Fúze aplikace

Fúze aplikací je způsob testování aplikací a vyhledávání potenciálních zranitelností. Při fúzi dochází k nepřerušenému odesílání upravených dat testované aplikaci. Následně je proces vyhodnocen a ve výsledku je možné odhalit zranitelnosti v aplikaci. Fúze je považována za nejsnadnější způsob odhalení chyb v aplikacích v systému iOS a proto je často využívána útočníky pro přípravu exploitu. Při procesu fúze je možné odhalit, jaká data je aplikace schopná přijmout a jaká data následně posílá zpět. Vývojáři mohou také testovat aplikaci pro rozpoznání případných pádů aplikace. Nejčastěji je s pomocí fúze testováno, tzv. přetížení bufferu, kdy jsou odeslána data např. o velikosti 32 bytů. Pokud vývojáři nezahrnuly při vývoji aplikace kontrolu vstupních dat, může dojít v případě změny velikosti přijatých dat k přetížení. Fúze nedokáže odhalit všechny chyby, které mohou po spuštění aplikace vzniknout. U 25 některých aplikací nemůže být odhalen problém s pamětí, nebo kontrolními součty. Proto by neměla být fúze využívána jako jediný nástroj pro analýzu chyb v aplikaci. Pro úspěšné provedení fúze stačí připravit kompatibilní vstupní data, která může aplikace přijmout.

Tichá fúze

Tichá fúze, tzv. Dumb Fuzzing, je jeden ze způsobů provedení správného otestování aplikace. Tento typ fúze je jednoduchý a zabere pouze několik minut. V prvním kroku je nutné připravit správný vstup pro testovanou aplikaci. Testovanými vstupy mohou být např. soubory .mov, nebo vstup http. Aplikace následně vrací odpověď na platný vstup. V případě neplatného vstupu je odeslána pouze chybová hláška. Vývojáři nemusí v případě použití této fúze znát specifikace formátů a protokolů.

Chytrá fúze

Chytrá fúze, tzv. Smart Fuzzing, je druhý způsob testování vstupů aplikace. Tento způsob je složitější a vyžaduje hlubší znalosti vývojáře. S využitím chytré fúze je možné vytvářet komplexní vstupy, složené z několika formátů, či protokolů. Vývojáři mohou testovat aplikace s větší pravděpodobností odhalení chyb. Nevýhodou této fúze je nutnost znalosti specifikací formátů, nebo protokolů, které vývojáři používají pro testování vstupu.

Analýza výsledků fúze

Při použití fúze k testování aplikací je nutné vyhodnotit výstupy, které testovaná aplikace vrací. Jedním ze spolehlivých způsobů analýzy je použití Debuggeru, který vyhodnocuje vrácené výstupy. Vývojáři mají tak možnost rychle a efektivně opravovat chyby, které fúze odhalila a současně opět testovat nové vstupy. Další výhodou použití Debuggeru je možnost sledování otevřených souborů v aplikaci, aktuální využití paměti a další informace o aplikaci.

Typy útoků proti systému iOS

Exploit

Útoky proti systému iOS můžeme rozdělit do dvou kategorií. Malware a Exploit. Malware je obecně software, který dělá v systému něco neočekávaného s úmyslem systém poškodit, nebo zneužít ve prospěch útočníka. V prostředí systému iOS byl zaznamenán výskyt malwaru, který se pokoušel po spuštění získat přístupová práva ke klientu elektronické pošty a rozposílal následně spam. Dále byl zaznamenán výskyt malwaru, který získával vzdálenou kontrolu nad zařízením. V neposlední řadě můžeme ve výčtu útoků zmínit tzv. keylogger, který se snažil zaznamenávat uživatelská hesla. Exploit je software, který hledá zranitelnosti ve zdrojovém kódu, které by následně mohl využít útočník k nahrání vlastního kódu, s jehož pomocí může systém zneužít. Tvorba exploitu je náročný proces, který útočníkovi zabere množství času. K úspěšné tvorbě exploitu potřebuje útočník znát dvě skutečnosti. Musí vyhledat zranitelnou oblast ve zdrojovém kódu a současně její umístění. Následně do této oblasti nahraje vlastní kód. Snahou společnosti Apple je minimalizovat množství nevyužitého zdrojového kódu a současně existující kód zabezpečit. V ideálním případě by neměl být zdrojový kód přístupný útočníkovi, což není vždy proveditelné. Bezpečnostní mechanismy byly popsány v předchozích kapitolách. V následujících kapitolách budou popsány zdokumentované útoky proti systému iOS.

Exploit

Exploit je jeden z typů softwarových útoků, se kterými se systém iOS potýká. Exploit můžeme charakterizovat jako část zdrojového kódu, která vyhledává zranitelné úseky zdrojového kódu aplikací a snaží se je využít k ovládnutí aplikace, nebo systému. (2 s. 185) Společnost Apple po objevení několika nebezpečných exploitů zařadila do svého bezpečnostního modelu mechanismy DEP a ASLR, jejichž cílem je blokovat snahy útočníků o využívání exploitů k ovládnutí systému. Tvorba exploitu se řídí několika pravidly. Celý proces tvorby je naznačen v obrázku (viz Obrázek 4.1). Proces tvorby můžeme shrnout do těchto bodů

·        Vyhledání zranitelného objektu

·        Nahrazení zranitelného objektu objektem pod plnou kontrolou útočníka

·        Použití nového objektu k spuštění upraveného kódu

Ani tyto mechanismy nedokáží systém plně ochránit a útočníci vytváří stále složitější a špatně odhalitelné exploity. V následujících kapitolách jsou popsány exploity s nejčastějším 27 výskytem. V současnosti je většina popsaných exploitů stále aktivní a jejich autoři vyvíjejí novější verze, zaměřené na nové zranitelnosti.



Libtiff

Libtiff je systémová knihovna pro čtení a zápis rastrové grafiky ve formátu TIFF. Knihovna Libtiff byla součástí systému iOS od jeho první verze, tj. verze 1.0. Velmi brzy po uvedení první verze zařízení iPhone se systémem iOS 1.0 se objevil první exploit, který využíval zranitelnosti právě v knihovně Libtiff. Tento exploit získal následně pojmenování právě po knihovně, kterou zneužíval. Exploit umožňoval získat přístup k zařízení skrze infikovanou webovou stránku, zobrazenou přes webový prohlížeč Safari. Útočník tak získal vzdálenou kontrolu nad zařízením, navíc s právy „root“. První verze iOS 1.0 neobsahovala oddělování práv. Chyba v systémové knihovně Libtiff byla opravena s verzí systému iOS 1.1.2. V současnosti útočníci naráží na mechanismus datové prevence DEP a adresní prostor ASLR. Nutností je kromě samotné zranitelnosti v systému vyhledávání zranitelností právě v těchto mechanismech. Současně bojují útočníci s omezením v podobě automaticky přidělených práv „mobile“ a testovacím prostředím.

Fun with SMS

Exploit, známý pod názvem Fun with SMS se objevil v roce 2009 a využíval zranitelnosti funkcionality systému iOS, která analyzuje zprávy SMS. Přesněji šlo o chybně určená systémová práva u programu CommCenter, který je zodpovědný právě za zpracovávání SMS zpráv. Tento program měl přidělená práva „root“. Další výhodou pro útočníky byl fakt, že ve verzi systému iOS 2.0, kterého se exploit FUN with SMS týkal, existoval pouze bezpečnostní mechanismus DEP, nikoliv ASLR, který byl implementován později. Neexistence adresního prostoru umožňovala snadné nalezení kódu, který mohl být zneužit. Exploit nebyl dlouhou dobu odhalen především z důvodu jeho tichého chodu. Běžný uživatel si ani nevšiml skutečnosti, že bylo jeho zařízení infikováno. Útočníkovi postačila pouze znalost telefonního čísla zasaženého zařízení, na které mohl následně poslat infikovanou SMS zprávu. Ochrana zařízení před tímto typem exploitu byla velmi složitá a pouhé vypnutí zařízení nebylo dostačující. Došlé SMS zprávy se řadí do fronty, kterou zařízení okamžitě po svém probuzení zpracovává. Zranitelnost byla opravena s verzí systému iOS 3.0.1. Program CommCenter byl nově zařazen do skupiny _wireless, místo původní „root“. Skupina _wireless má přístup pouze k systémovým programům, které jsou zodpovědné za bezdrátové služby zařízení.

The Ikee Worm

Exploit The Ikee Worm se poprvé objevil po uvedení systému iOS 2.0. Tento exploit je odborníky řazen mezi velmi nebezpečné bezpečnostní hrozby. Hlavním cílem exploitu jsou zařízení, na kterých byl proveden uživatelský Jailbreak, tzn. zásah do systému, při kterém bylo trvale vypnuto podepisování kódu a mechanismus DEP. První verze exploitu The Ikee Worm se zaměřovala na SSH server, který si někteří uživatelé zařízení po zásahu do systému instalovali. Instalovaný SSH server získal po instalaci práva „root“. Snahou útočníka bylo vzdáleně ovládnout zařízení s pomocí výchozího hesla SSH serveru, který si uživatelé ve většině případů neměnili a ponechávali nastavenou výchozí hodnotu. Výchozí hodnota hesla SSH serveru byla všeobecně známá. Útočník následně získával kontrolu nad zasaženým zařízením pouhým připojením k SSH serveru zařízení. Exploit The Ikee Worm se v dalších verzích systému iOS zaměřil na krádež uživatelských dat, uzamčení zařízení, či zneužití zařízení jako součást sítě botnet.  Exploit bylo poměrně snadné odhalit. V zasaženém zařízení byla upravena tapeta na uzamčené obrazovce, která byla doplněna o větu: „Ikee is never gonna give you up.“

Pwn2Own

Exploit Pwn2Own se objevil v roce 2010 po uvedení zařízení iPhone 3GS. Využíval zranitelnosti mobilního webového prohlížeče Safari, který v určitých případech umožňoval vzdáleně spouštět kód. Zranitelnost se vyskytovala v systému iOS 3.0, tzn. ve verzi iOS, která neobsahovala mechanismus ASLR. Po vyhledání zranitelného kódu v systému bylo následně možné s využitím ROP otevřít databázi SMS zpráv v zařízení. Tyto zprávy mohly být následně odeslány na vzdálený server. Zranitelnost systému byla ošetřena mechanismem oddělování práv v systému. V případě webového prohlížeče byla následně využívána skupina práv „mobile“, místo původní skupiny „root“.

Star

Star je název exploitu, známého pod názvem Jailbreakme.com 2. Exploit se poprvé vyskytl v roce 2010 a byl určen především pro zařízení iPhone. K přenosu docházelo po návštěvě webové stránky www.jailbreakme.com. Po návštěvě webové stránky bylo zařízení iPhone vystaveno množství skrytých operací, které provedly postupný Jailbreak, tj. zásah do systému. Útočník v prvním kroku nahrál do zařízení skrz mobilní webový prohlížeč Safari kód. Následně docházelo k přetečení modulu IOKit, který zpracovává vstupní a výstupní operace zařízení. V dalším kroku mohl útočník spouštět svůj kód k ovládnutí jádra systému a následnému vypnutí mechanismu pro podepisování kódu. Společnost Apple v reakci na bezpečnostní hrozbu vydala opravný balíček pro systém iOS ve verzi 4.3.3. Webová stránka www.jailbreakme.com je do dnešní doby stále funkční a nabízí uživatelské návody k provedení zásahu do systému.

Malware

Malware je software, který v prostředí systému iOS sbírá uživatelská data, sleduje uživatele, nebo kontroluje některé aplikace. Většina malwaru se vyskytuje v podobě aplikací, které si uživatelé instalují do svých zařízení. (3 s. 4) Uživatel může aplikace instalovat oficiálně pouze z obchodu AppStore, který zastupuje při distribuci aplikací funkci antivirového programu. Instalace neschválených aplikací je možná pouze, pokud uživatel provede Jailbreak a deaktivuje podepisování kódu. Aplikace instalované tímto způsobem obsahují často škodlivý software, např. trojské koně, nebo červy. I přes přísnou kontrolu aplikací v obchodě AppStore se již několika vývojářů podařilo úspěšně umístit malware do obchodu. V následujících 30 kapitolách je pospán malware, který se v posledních třech letech na zařízeních se systémem iOS objevil.

Find & Call

Aplikace Find & Call je považována za první objevený malware, určený pro systém iOS a současně systém Android. Byla umístěna v obchodě AppStore začátkem roku 2012. Aplikace po instalaci sbírala data z uživatelského listu kontaktů, která následně odesílala zpět na server vývojáře. Telefonní čísla uživatelů byly následně využity k posílání reklamních sms zpráv. Aplikace byla po několika měsících z obchodu AppStore stažena. Zajímavostí je původní účel aplikace, která byla určena k tvorbě a následnému generování kontaktů.

Storm8

Storm8 je pojmenován po programátorovi her pro systém iOS, který užíval přezdívku Storm8. Malware sbíral telefonní čísla uživatelů zařízení, která následně odesílal zpět na server útočníka. Nejznámější hry, které byly tímto způsobem upraveny, jsou Zombies Live, Vampires Live, či Rockstars Live. Po objevení této zranitelnosti byly všechny hry z dílny programátora Storm8 odstraněny a chyba následně opravena.  Zajímavostí je úspěch v počtu stažení infikovaných her. Do svého úplného odstranění z obchodu AppStore došlo k více než 20 milionům stažení.

SpyPhone

SpyPhone je aplikace, která testuje testovací prostředí pro aplikace v systému iOS. Účelem aplikace je sběr dat o testovacím prostředí, tj. systémové prostředky, přidělovaná práva a činnosti prostředí. SpyPhone využíval shovívavého přístupu testovacího prostředí v podobě přístupu aplikace k uživatelským datům. Zranitelnost testovacího prostředí spočívala ve špatném hodnocení testované aplikace, které v případě využití veřejně dostupného vývojového API, vydaného společností Apple obdržela přístup k uživatelským datům. Přístup byl povolen k telefonnímu číslu zařízení, k seznamu kontaktů, informacím o klientu elektronické pošty, GPS informacím, fotografiím, nebo seznamu názvů přístupových bodů k bezdrátovým sítím Wi-Fi.

Simply Find It

Aplikace Simple Find It je herní aplikace od vývojářského studia Simply Game, která se poprvé objevila v obchodě AppStore v květnu 2013. Aplikace obsahovala trojského koně v podobě hudební znělky hry, která ve zdrojovém kódu mp3 souboru odkazovala na infikované webové stránky. Útočník tak mohl získat plnou kontrolu nad zařízením přes webový prohlížeč, kde mohl využít exploit.Zajímavostí je, že je aplikace zařazena do kategorie zpoplatněného softwaru. U tohoto softwaru se předpokládá větší kvalita a bezpečnost. Aplikace je stále i přes objev trojského koně umístěna v obchodě AppStore a uživatel si ji může stáhnout za 3,59€. Infikovaná mp3 skladba byla odstraněna. I přesto uživatelé ztratili o aplikace studia Simply Game zájem.

Jekyll

Jekyll je aplikace, vyvinutá skupinou vývojářů Georgia Tech v polovině roku 2013. Snahou vývojářů bylo dokázat společnosti Apple, že schvalovací proces a následné bezpečné spuštění aplikace v testovacím prostředí není dostatečně účinné. Aplikace byla úspěšně umístěna v obchodě AppStore a následně nainstalována v zařízení. Vývojářům se podařilo získat přístup k aplikacím pro SMS zprávy, emailovému klientu, posílání zpráv na sociální síť Twitter a pořizování fotografií. Hlavním úspěchem vývojářů byla skutečnost, že přístup k ostatním aplikacím získali už v testovacím prostředí. Společnost Apple v reakci na úspěch vývojářů výrazně zpřísnila pravidla pro aplikace, spuštěné v testovacím prostředí a současně zavedla přísnější pravidla pro schvalovací proces aplikací.

Zásahy do systému

Typy Jailbreaku

Zásah do systému je proces změny chování, struktury, či zabezpečení samotného systému za účelem vlastních modifikací a kontroly systému. V případě systému iOS je proces zásahu do systému označován pojmem Jailbreak. Jailbreak je softwarový nástroj k odemčení zařízení se systémem iOS. Existuje mnoho důvodů, proč uživatelé provádí zásah do systému. Když vynecháme případy z minulosti, kdy byla některá zařízení vystavena skrytému Jailbreaku při návštěvě infikované webové stránky, je hlavní motivací uživatelů snaha více systém otevřít. Nabízí se srovnání se systémem Android, který je distribuován převážně s otevřeným zdrojovým kódem, tzn. pod open-source licencí. Takový systém je možné dále upravovat, nebo jinak kontrolovat. Systém iOS je distribuován pouze na zařízeních od společnosti Apple, se kterými je pevně svázán a je uzavřený. Uživatel nemůže volně systém upravovat, ani instalovat neschválené aplikace třetích stran. Právě snaha otevřít systém úpravám a instalaci nepodepsanému softwaru je hlavní motivací pro provedení Jailbreaku.

Typy Jailbreaku

Existuje několik typů Jailbreaku. Samotný Jailbreak je vyvíjen na základě sledovaných zranitelností v systému iOS. Nové verze se objevují přibližně měsíc po každém uvedení nové verze systému iOS. Jailbreak může být považován za exploit právě z důvodu vyhledávání zranitelností v systému iOS a jejich využívání k ovládnutí systému. Společnost Apple reaguje na vydávání nových verzí Jailbreaku bezpečnostními aktualizacemi, které jsou implementovány do systému iOS v každé nové verzi. Ne vždy se podaří vyřešit zranitelnost v systému iOS pouhou softwarovou záplatou. V těchto případech je nutné uplatnit změny také v hardwaru zařízení. Takové změny se projeví až s uvedením nové verze zařízení se systémem iOS.  Pravidelné vydávání nových verzí Jailbreaku se změnilo v roce 2014 s vydáním verze systému iOS 7.1. Ani dva měsíce po vydání této verze nebyl vyvinut použitelný Jailbreak, který by bylo možné použít na všech zařízeních s verzí iOS 7.1. Všechny dostupné metody pro Jailbreak systému iOS verze 7.0 jsou značně nespolehlivé. Společnosti Apple se tak daří stále lépe zabezpečit systém proti uživatelským zásahům.

Jailbreak podle odolnosti

Jailbreak je dělen do dvou základních kategorií. První kategorií je odolnost Jailbreaku, která je vázána na schopnost odolat restartu zřízení a vymazání jeho obsah. Kategorie odolnosti dělí Jailbreak na dva typy, tj. na vázaný Jailbreak a nevázaný jailbreak.

Vázaný Jailbreak

Vázaný Jailbreak, označován pojmem Tethered Jailbreak, je typ Jailbreaku, který je možné smazat z upraveného zařízení úplným restartem a uvedením do továrního nastavení. Slovo vázaný je odvozeno od způsobu provádění tohoto typu Jailbreku, který souvisí s nutností připojení zařízení přes USB kabel k počítači. Tento Jailbreak je vyvíjen na základě nalezených zranitelností v ovladači USB modulu, nebo s využitím exploitu limera1n.

Nevázaný Jailbreak

Nevázaný Jailbreak, označován pojmem Untethered Jailbreak, je druhý typ Jailbreaku, řazený z hlediska odolnosti. Tento Jailbreak není možné odstranit z upraveného zařízení pouhým restartem. Tento typ je mnohem efektivnější a vyžaduje vyhledávání více specifických zranitelností, např. zranitelnosti přímo v jádře systému. V současnosti je výskyt zranitelností v systému iOS limitován integrovanými bezpečnostními mechanismy, které brání vyhledávání zranitelností. Z toho důvodu nejsou současné verze Jailbreaku tak kvalitní, jako jejich první verze. Jailbreak je využíván v podobě exploitu, který upraví souborový systém tak, aby bylo odstraněno právo „root“. Následně je možné zasahovat do jádra systému a deaktivovat např. mechanismus pro podepisování kódu.

Jailbreak typu exploit

Jailbreak typu exploit je druhá kategorie Jailbreaku. Je založený na vyhledávání zranitelností v systému iOS, přesněji zajištění přístupu k zařízení na úrovni hardwaru, nebo ovládnutí systému práv v testovacím prostředí. Vyhledané zranitelnosti jsou použity k návrhu Jailbreaku.

Jailbreak úrovně Bootrom

Jailbreak úrovně Bootrom využívá zranitelnosti hardwarového modulu Bootrom. Zranitelnost v modulu umožňuje přístup k paměti ve chvíli, kdy je nahráváno jádro systému. Následně je možné upravit argumenty, které jsou pamětí načteny z jádra. Velkou výhodou pro tvůrce Jailbreaku je skutečnost, že nalezená zranitelnost v modulu Bootrom nemůže být opravena na úrovni softwaru, ale úplným nahrazením novou verzí modulu. Proto je tento typ Jailbreaku mezi vývojáři velmi oblíbený.

Jailbreak úrovně iBoot

Jailbreak na úrovni iBoot využívá zranitelnosti v softwarové komponentě iBoot, která zajišťuje plynulé nahrávání dat do paměti. Jailbreak na této úrovni není příliš efektivní. Nalezené zranitelnosti mohou být rychle opraveny vydáním opravné verze softwaru.

Jailbreak na úrovni uživatelské aplikace

Jailbreak na úrovni uživatelské aplikace využívá zranitelnosti v uživatelských procesech. Snahou je využít uživatelských práv „root“, nebo „mobile“ k odstranění bezpečnostních mechanismů. Jailbreak využívá dvou exploitů. První exploit umožní svévolné spouštění kódu. Druhý upravuje přístupová práva tak, aby došlo k vypnutí bezpečnostních mechanismů, chránících jádro systému. Posledním krokem je vypnutí podepisování kódu. Zranitelnosti, využívané u tohoto typu Jailbreaku, jsou velmi rychle opravovány bezpečnostními aktualizacemi.

Proces zavedení Jailbreaku

K samotnému provedení Jailbreaku zařízení je nutné připravit aplikace na straně počítače, které Jailbreak provedou. K dispozici je velké množství aplikací k provedení Jailbreaku, např. redsn0w, nebo evisi0n . Správnému povedení Jailbreaku předchází zálohování obsahu zařízení v iTunes. Následně je nutné vypnout všechny běžící aplikace na pozadí v systému iOS a vypnout heslo zařízení. Před samotným spuštěním nástroje pro Jailbreak musí být uzavřen program iTunes a zařízení musí být uvedeno do stavu DFU (Device Firmware Upgrade).

Stav DFU docílí uživatel současným přidržením tlačítka pro vypnutí zařízení a tlačítka zpět po dobu deseti vteřin. Po deseti vteřinách je nutné pustit tlačítko pro vypnutí a dalších deset vteřin přidržet tlačítko zpět. Po spuštění aplikace pro Jailbreak zařízení 35 je uživatel dotázán, zda chce provézt Jailbreak. Po potvrzení je spuštěn proces Jailbreaku. V posledním kroku je na domovské obrazovce zařízení se systémem iOS zobrazena hláška ke spuštění aplikace pro Jailbreak. Po kliknutí je Jailbreak úspěšně proveden. Na domovské obrazovce se objeví aplikace „Cydia“, která umožňuje instalaci aplikací třetích stran, které nebyly schváleny společností Apple. Proces zavedení jailbreaku je naznačen v obrázku (viz Obrázek 5.1)



Detekce Jailbreaku

Jak bylo popsáno v kapitolách výše, Jailbreak zařízení deaktivuje bezpečnostní mechanismy, které chrání systém iOS a s ním spojené aplikace a uživatelská data. Zařízení, na kterém byl použit Jailbreak se tak stává velmi jednoduchým terčem pro potenciální útočníky. Takové zařízení může být napadeno škodlivým softwarem, můžou být odcizena uživatelská data, nebo může být sledováno. Z těchto důvodů je důležitá správná detekce použití Jalbreaku v zařízení. Detekce je žádoucí u zařízení, která byla zakoupena v bazarech, internetových aukčních portálech, nebo přes inzertní centra.

Test souborového systému

Aplikace, která zajišťuje Jailbreak v zařízení, existuje v podobě aplikace třetích stran a je instalována v zařízení. Takovou aplikací je např. Cydia. Pokud je aplikace zobrazena mezi instalovanými aplikacemi na domovské obrazovce, byl v zařízení použit Jailbreak. Existuje možnost aplikaci pro Jailbreak na domovské stránce skrýt. Pro tyto případy existuje nástroj pro test souborového systému, který vyhledá soubory s názvem Cydia v souborovém systému.

Evidence symbolických odkazů

Disk, který využívá systém iOS je rozdělen do dvou oblastí. Menší oblast je určena systémovým souborům a má práva pouze pro čtení. Větší oblast je určena pro uživatelská data. Oblast pro systémové soubory je přepisována pouze při aktualizaci softwaru zařízení. Její součástí je složka /Applications, která je výchozí složkou pro instalované aplikace. Jailbreak zařízení přemístí složku /Applications do větší oblasti disku. Tímto krokem získají aplikace třetích stran větší prostor na disku. S využitím funkce lstat je možné ověřit aktuální umístění složky /Applications a ověřit tak možné předchozí manipulace.

Test integrity testovacího prostředí

Test integrity testovacího prostředí ověřuje omezení, která testovací prostředí uděluje instalovaným aplikacím. Jailbreak upraví předělovaná práva v testovacím prostředí tak, aby aplikace třetích stran měly přímý přístup k systémovým souborům s právy „root“. Ve výchozím nastavení práv testovacího prostředí mají aplikace přidělená práva „mobile“. Tento test je složitější a vyžaduje hlubší znalosti funkce fork()

 

Žádné komentáře:

Okomentovat

Audit Zabezpečení

  Audit Zabezpečení AUDIT KYBERNETICKÉ BEZPEČNOSTI Oblast kybernetické bezpečnosti je v České republice regulována zákonem č. 181/2014 Sb...