Sledujte nás na YouTube

Evasi0n pod lupou: Jak funguje dosud nejpropracovanější jailbreak?

Před nedávnem zveřejněný jailbreak pro zařízení s iOS 6.x známý pod názvem Evasi0n, je dosud nejpropracovanějším nástrojem svého druhu. Jak funguje vám odhalíme v tomto článku.

Skupina hackerů sdružená pod názvem Evad3rs v pondělí vydala dlouho očekávaný nástroj pro jailbreak zařízení s iOS ve verzi 6.0 a 6.1. Program nesoucí název Evasi0n podobně jako jeho předchůdci umožňuje překonat systémová omezení a instalovat do iPhonů, iPadů i iPodů Touch prakticky jakékoliv aplikace.

Podle Jaye Freemana, administrátora neoficiálního appstoru Cydia, byl Evasi0n během prvních šesti hodin od zveřejnění použit v nejméně 800 000 případech. Navíc se prý jedná jen o velice skromný odhad, vzhledem k tomu, že byly statistiky serverů narušeny při jejich opakovaném pádu způsobeném ohromným přílivem uživatelů. V úterý už se prý číslo vyšplhalo až k 1,7 milionu.

Apple do svých mobilních zařízení přináší s každou novou verzí systému stále lepší zabezpečení, která mají podobnému prolomení zabránit. Pro hackery a šťouraly všeho druhu tedy není vůbec lehké najít onu osudovou skulinku, pomocí které by mohli onu ochranu překonat. Na webu známého magazínu Forbes proto vyšel článek, ve kterém David Wang, jeden ze čtyř kodéru v Evad3rs, popisuje, jak vlastně Evasi0n funguje. Jejich program prý využil minimálně pěti nových bugů v kódu iOs.

Celý proces jailbreaku začíná spuštěním programu libimobiledevice, který se zařízeními komunikuje přes stejný protokol jako iTunes. Díky němu dojde k využití bugu v systému zálohování v iOS a Evasi0n tak získá přístup k některým jinak zapovězeným nastavením. Konkrétně se jedná o soubor s údajem o časovém pásmu, ve kterém se přístroj nachází.

Nástroj potom do tohoto souboru umístí symbolický odkaz, který vede ke konkrétnímu socketu. Ten slouží ke vzájemné komunikaci různých programů a umožní tak Evasi0nu přistupovat k hlavnímu procesu Launch Daemon (launchd), který startuje vždy jako první  při bootování zařízení a může spouštět aplikace s kořenovým oprávněním. Ve výsledku tedy, kdykoliv se na zařízení spustí automatická aktualizace, získá Evasi0n přístup i k launchd.

iOS6 má ale ještě jednu pojistku proti běhu neautorizovaných aplikací – podepisování kódu. Jednoduše řečeno, veškerý kód, který je v zařízení spuštěn musí být zkontrolován a elektronicky podepsán Applem. Evasi0n proto spustí novou aplikaci, která zdánlivě neobsahuje žádný kód. Pokud ale uživatel klikne v průběhu provádění jailbreaku na její ikonu, dojde k využití unixového triku známého pod pojmem „shebang„, který dokáže využít kód z jiné, již dříve podepsané aplikace. V tomto případě si díky postupu popsaném v předchozím kroku zavolíá launchd a použije jej ke spuštění příkazu „remount“. S jeho pomocí tak přepíše paměťové nastavení kořenového souborového systému, který byl dosud dostupný pouze ke čtení, a umožní do něj zapisovat.

 

Nyní, když lze zapisovat do kořenových souborů, Evasi0n změní jeden z nich – launchd.conf. Tím se upraví vlastnost samotného zavaděče launchd, takže se od této chvíle nastavené změny automaticky provedou při každém startu zařízení a uživatel tak nemusí svůj iPhone nebo iPad neustále připojovat přes USB.

Ani po těchto úpravách ale ještě není jailbreak hotový. Nejdříve je třeba zrušit ochranu na úrovni samotného jádra. V této nejhlubší části operačního systému se totiž provádí kontroly podepsání kódu, které nepovolí běh neautorizovaných aplikací. Využívá se k tomu proces zvaný Apple Mobile File Integrity Daemon (AMFID). Evasi0n proto využije launchd, takže se při každém spuštění nějakého programu načte knihovna funkcí AMFID a místo požadavku na kontrolu automaticky odešle potvrzení o schválení. Wang ale neprozradil podrobnosti ohledně tohoto kroku a na doplňující otázky odpověděl slovy: „Ať si na to Apple přijde sám.“

iOS má v sobě ale ještě jednu ochranu, která má zabránit hackerům v úpravě paměti v kernelu: Address Space Layout Randomization (ASLR). Její trik spočívá v náhodném posouvání umístění kódu uvnitř paměti flash při každém startu systému, čímž se zabraňuje přepsání jeho konkrétní části. Evasi0n ale dokáže najít jedno místo v paměti, které se v případě zařízení běžících na architektuře ARM těžko skrývá, a tím je ARM Exception Vector. Tato část jádra se využívá při pádu aplikací a k hlášení, na kterém místě v paměti k chybě došlo. Evasi0n tedy nasimuluje pád a pomocí tohoto reportu zjistí přesné místo, kde k němu došlo. Pak už není problém se v paměti zorientovat a přesně si ji zmapovat.

Jakmile je překonána i tato ochrana, Evasi0n využije poslední bug v iOS, konkrétně v jeho USB rozhraní. To totiž programu  předává adresu v paměti jádra a „naivně očekává, že ji uživatel vrátí zpátky neupravenou,“ říká Wang. Tím umožní Evasi0nu zapisovat do libovolné části kernelu. Prvním místem, kam pak nástroj zamíří je ta jeho část , která zakazuje změny v kódu. „Jakmile se dostaneme do jádra, na žádné ochraně už nezáleží,“ uzavírá Wang. „To je ten okamžik našeho vítězství.“

Nástroj Evasi0n můžete stáhovat na této adrese.

Miroslav Havlíček

14 komentářů

  1. fore (neregistrovaný)

    Sikovni jsou .. ale ja bych nerikal vubec nic :D Akorat to budou mit priste tezsi …. at zije root a jailbreak !

  2. weth (neregistrovaný)

    Evasi0n je po JailbreakMe (ktery byl opravdu velmi povedeny) jeden z nejjednodussich JB nastroju, jake byly pouzity.. Tentokrate i pro Linux, coz muze nekomu udelat radost i kdyz linuxovy uzivatele s iOS asi budou mala skupinka. JB je stabilni a prozatim temer bezproblemovy, az na padajici systemovou Weather aplikaci ze zacatku (oprava uz byla vydana pres Cydia).

    Bud jak bud, moc pekna prace Evad3rs!

  3. Jonatán (neregistrovaný)

    Při čtení jen nevěřícně zírám, jak je iOS zabugovaný operační systém. Jestliže platí že “ Jejich program prý využil minimálně pěti nových bugů v kódu iOs.“, tak je opravdu o hubu tyto telefony používat. Kolik bugů v něm asi existuje, o kterých se vůbec nepíše a jsou v tichosti využívany pro …. raději ani nedomýšlet. :o)

  4. Lukyer (neregistrovaný)

    Pan Jonatan bude asi dostatecne dementni na to, aby pochopil ze chyby jsou v kazdem SW a ani iOS neni vyjimkou. Ani Windows, Linux a v zadnen pripade Android. Je jen otazkou motivace aby nekdo tyto chyby nasel. Viz zaplacene hledani chyb v Chrome (tusim ze odmena je milion kc). Takze se nad sebou pane Jonatane priste zamyslete nez napisete do diskuze hnuj o tematu o kterem nemate poneti. Pro doplneni – nemam iPhone.

    • jeliman (neregistrovaný)

      A vy se nad sebou zamyslete, jestli ma cenu do diskuze psat hnuj, ve kterem urazite ostatni.

    • _iNTERFACE (neregistrovaný)

      popravde ako prvy urazal ostatnych ten, ktory obvinoval nejaky subjekt s „raději ani nedomýšlet“ ..v takom subjekte pracuje velkemnozstvio ludi, tato urazka sa mohla dotknut teda viacerych osobnosti nez tento komentar, ktory len podotkol ze mate problemy s myslenim pan jonatan ;)

  5. mceza (neregistrovaný)

    Kdyby se Apple místo soustředění se na ochranu proti jailbreaku soustředil na to, aby ten systém něco uměl, nebylo by o jalbreak tolik zájemců…

    Jsou dva důvody, proč to udělat – vylepšit systém o další funkce a pirátění aplikací. V prvním případě to může Apple (a platí to i pro Google a MS) napravit vylepšováním svých OS. A u té druhé si lidé vždy najdou cestu, jak za aplikace neplatit, když nechtějí…

    • matkal (neregistrovaný)

      Kdyby se Apple místo soustředění na boj proti kradení software soustředil na nesmyslné rozšiřování bezcenných funkcí, které chtějí jen geekové, pak by neměl takovou základnu kvalitních aplikací, které vydělávají jemu i vývojářům podstatné peníze.

    • steelspace (neregistrovaný)

      Tohle není ochrana proti nějakému JailBreaku, ale ochrana systému před neautorizovanými zásahy, které zvyšují nebezpečnost systému. Čím víc lidí používá aplikace z bůvíjakých zdrojů, tím je celý ekosystém náchylnější k malwaru. Stačí se podívat na Android, kam ta „otevřenost“ vede. Já bych si třeba platební kartu a spoustu soukromých účtů na internetu nikdy nezaregistroval v systém, který je upravený od nějaké takové skupiny hackerů.

    • niky79 (neregistrovaný)

      STEELSPACE: asi nechapete, ze kdyby Apple poskytoval uzivatelum to, co chteji a nesmyslne system neomezoval, JB by prakticky nikdo nepouzival.

    • uni (neregistrovaný)

      niky79: Nelze OS vyvíjet podle toho, co chtějí uživatele, ale podle toho, jakou filozofii vytváří vývojář. Jinak by vznikl kočkopes. A spokojený by nebyl nikdo.

    • mceza (neregistrovaný)

      Uni: Tys mě pobavil. Tohle řekni třeba ve firmách, kde mají nasazen nějaký informační systém. Vývojář by měl vyvýjet to, co chtějí lidé. Od toho se tomu snad říká vztah zákazník x prodávající, ne?

    • uni (neregistrovaný)

      MCEZA: ano, ale to plati u aplikaci, samozrejme je ne u OS.

  6. bman (neregistrovaný)

    mate tam nejake nepresnosti. napr. ze remount nie je prikaz, ale parameter prikazu mount, ktory remountne filesystem z ro na rw. a napr ASLR randomizuje RAMku, nie FLASHku. ale inak ok :)

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *