Inside evasi0n, ecco cosa succede ai nostri dispositivi durante il jailbreak!

In un’intervista rilasciata a Forbes David Wang (aka planetbeing) ha spiegato quali sono le operazioni principali che il tool evasi0n, frutto del lavoro del gruppo evad3rs di cui Wang fa parte, svolge per portare a termine la procedura di sblocco, da tutti conosciuta come jailbreak. Indubbiamente straordianario è stato il lavoro effettauto dal team che ha permesso di rilascaire un software in grado di eseguire senza grosse problematiche il jailbreak (a parte qualche piccolo problema con l’app nativa meteo e in certi casi rallentamenti all’avvio) e cosa più importante quella di poter essere utilizzata con facilità anche da utenti non esperti. Prima di addentraci nell’intervista ricordiamo come il jailbreak “Apple” venga reso sempre più difficile ad ogni lancio di nuovi dispositivi e ad ogni aggiornamento di firmware, in quello che lo stesso giornalista di “Forbes” definisce l’eterno gioco del gatto e del topo di Apple.

20130207-020617.jpg

Lo sblocco di iOS 6.x richiede una procedura assai più complicata rispetto al passato, e lo stesso hacker planetbeing ha voluto ripercorrere i passi salienti che avvengono durante l’utilizzo del tool evasi0n.

Tramite libimobiledevice il dispositivo è in grado di interfacciarsi con iTunes. Viene quindi sfruttato immediatamente un bug nel sistema di backup di iOS per accedere ad un file protetto, contenete informazioni sul fuso orario del dispositivo.

Il tool inserisce un collegamento il quale punta ad un socket, un canale di comunicazione tra due programmi. Il socket viene così alterato e ciò permette ai programmi di dialogare con Launch Deamon, in gergo launchd, un processo primario che viene caricato ogni volta che si avvia il dispositivo e permette di lanciare applicativi che richiedono i privilegi di “root”. Ciò vuol dire che ogni volta che viene avviato un processo di backup qualsiasi programma mediante il collegamento aperto dal file del fuso orario può accedere al launchd.

Il sistema operativo iOS presenta però un’altra forma di controllo la quale non permette ad applicazioni non certificate da Apple di essere eseguite. Entra perciò in gioco l’interazione dell’utente che andando a cliccare sul dispositivo l’icona indicata dal tool fa in modo che venga recuperato un codice di certificazione valido. Per questo passaggio viene utilizzato un espediente dei sistemi UNIX denominato shebang. Risulta così possibile eseguire un “remount” andando a modificare le impostazione del file system da “read-only” sola lettura a “writable” scrivibile.

A questo punto il file launchd.conf viene modificato alterando la configurazione di launchd in modo tale che le modifiche apportate da evasi0n vengano ripetute ogni volta che il processo viene eseguito. Questa operazione è fondamentale perché garantisce il jailbreak “untethered” rendendo così l’utente libero dal dover eseguire il programma via USB ogni volta che il dispositivo viene avviato.

Nonostante una buona parte del processo sia stata fatta, bisogna ancora rimuovere le restrizioni a livello del kernel, la più profonda parte del sistema operativo, che mediante l’AMFID (Apple Mobile File Deamon) controlla che le applicazioni siano verificate da Apple prima che queste possano essere eseguite. Per tale scopo viene caricata un’apposita libreria che appoggiandosi al launchd permette di far ritornare sempre all’AMFID il valore di approvazione. Nell’intervista questo processo non viene descritto nei dettagli, Wang infatti dichiara che preferisce sia Apple stessa a rendersi conto di come gli evad3rs siano riusciti a bypassare il controllo.

L’ultimo scoglio è rappresentato dall’Address Space Layout Randomization meglio conosciuto come ASLR, il cui scopo è quello di impedire l’alterazione della memoria spostando il codice del device in maniera casuale nella memoria flash ad ogni avvio, rendendo così impossibile scrivere su una particolare parte del codice. Per ovviare al problema evasi0n identifica un punto della memoria difficile da nascondere nei dispositivi con chip AMR ossia ”l’exception vector”. Questa parte del kernel si occupa di gestire le informazioni riguardanti i crash riportando in che punto della memoria questi sono avvenuti. Vengono così raccolti dati sufficienti a mappare il resto del kernel nella memoria del device. Grazie a un ulteriore bug nell’interfaccia USB evansi0n può scrivere in qualsiasi parte del kernel. Una volta avuto accesso al kernel nessuna sicurezza conta più e a questo punto é Jailbreak.

Inside evasi0n, ecco cosa succede ai nostri dispositivi durante il jailbreak! ultima modifica: 2013-02-07T02:31:41+00:00 da JB

Related Posts