“Jailbreak Focus” è una rubrica che nasce con l’intento di aiutare coloro che compiono i primi passi verso il “mondo” del jailbreak. Nella prima “puntata” parleremo di cos’è il jailbreak e come un hacker fa sua una falla di sicurezza all’interno di iOS.
Nota per gli utenti italiani: in quanto posixninja e veeence hanno usato un linguaggio tecnico, potrebbero essere presenti degli errori di traduzione. Ci scusiamo per eventuali imprecisioni; qualora ne trovaste alcune, vi invitiamo a segnalarcele attraverso i commenti.
Cos’è il jailbreak
In molti conosceranno la pratica del Jailbreak per via di Cydia e di tutte le applicazioni di terze parti che attraverso questa si possono installare. Questa pratica permette infatti l’installazione, all’interno del dispositivo, di modifiche di sistema e di applicazioni non approvate da Apple, che consentono la modifica di determinate azioni del sistema operativo.
In realtà, tale processo abilita l’utente ad avere un accesso totale al proprio dispositivo consentendo di evadere dai limiti e dalle regole imposte da Apple: il termine jailbreak significa infatti “evasione” (dall’inglese).
Per accesso totale si intende la possibilità di accedere e modificare tutti i file del sistema operativo che di default sono “di sola lettura”. Grazie al jailbreak, tutte le partizioni dell’iDevice subiscono un cambiamento di permessi (da “sola lettura” a “lettura-scrittura“), rendendo anche possibile l’esecuzione di codice non firmato, quindi di applicativi che non possiedono i certificati di Apple necessari per il funzionamento su dispositivi non sbloccati.
Ma come può fare un jailbreak tutto questo? Siamo andati a chiederlo a p0sixninja (membro del Chronic Dev Team, uno dei gruppi hacker più famosi nella scena), che ci ha risposto:
Un qualunque tipo di jailbreak cambia semplicemente il “fstab” (un file che controlla i permessi delle partizioni, N.d.A.) permettendo al root filesystem di diventare “scrivibile”.
Per abilitare la lettura di codice non firmato, oltre ad effettuare dei cambiamenti al “fstab”, bisogna cambiare dei parametri all’interno del kernel (il cuore di ogni sistema operativo N.d.A.).
Sfruttare una falla di sicurezza all’interno di iOS per fare il jailbreak
Per potervi fornire una spiegazione soddisfacente di questo argomento, abbiamo chiesto l’aiuto di veeence, una persona molto vicina ai due team di hacker della scena iOS. Sentiamo quindi le sue parole:
Come saprete, per effettuare il jailbreak di un dispositivo è necessario un exploit, un exploit che “sfrutti” una vulnerabilità.
Gli ingegneri Apple scrivono centinaia, forse migliaia, di linee di codice ogni giorno ed essendo umani fanno degli sbagli: molti di questi errori non emergono quando testano il codice e risulta che funzioni per ciò che è stato programmato di fare.
Il codice in questione funziona fino a quando gli si permette di fare le proprie cose. Se si interferisce con esso, potrebbe non essere più in grado di svolgere la propria funzione, e potrebbe portare all’overflow e quindi al crash del dispositivo: questo è ciò che si chiama vulnerabilità in un software.
Quando si trova una vulnerabilità bisogna ricavarne un exploit per creare un jailbreak.
Un exploit è un codice utile per prendere il controllo del crash causato dalla vulnerabilità. In pratica comanda al codice Apple di fare ciò che gli si dice. Ci sono molte vulnerabilità nei codici Apple, ma solo da poche si può ricavare un exploit: trovare questa falla di sicurezza è infatti la parte più difficile quando si crea un jailbreak o un unlock (il processo per abilitare la lettura di SIM straniere agli iPhone non abilitati alla lettura di tutte le SIM).
Richiede intelligenza e probabilmente molto tempo: è l’arte dell’hacking.
Far provocare un crash ad un software non è così difficile, ma prendere il controllo del software Apple è molto più complicato. Come ho detto prima, con l’exploit puoi comandare al codice Apple di fare quello che gli si dice, quindi si controllerebbe effettivamente il dispositivo grazie alla possibilità di avvio di codice non firmato (la ragione principale per effettuare il jailbreak).
Una volta trovato l’exploit, bisogna creare un payload (un file che contiene a sua volta dei file che compromettono il sistema) che automatizzi il processo ed effettui il jailbreak del dispositivo.
Sperando che abbiate gradito questa “prima puntata” di Jailbreak Focus, vi invitiamo caldamente a continuare a seguire questa rubrica: nel prossimo articolo, parleremo di “Perché effettuare il jailbreak” e “Le tipologie di jailbreak: tethered ed untethered”.
Un ringraziamento speciale a @p0sixninja e @veeence : senza di loro non sarebbe stato possibile rendere esaurienti le parti trattate!
English part
“Jailbreak focus” is a spot made with the intention of helping those who are trying to make the first steps to the “jailbreak world”: in the first article, we’ll talk about of “What is the jailbreak” and “How a hacker can exploit a bug inside iOS”.
What is the jailbreak
People know the jailbreak because of Cydia and because of the installation of certain programs (they will be explained in the next articles) that allow to modify particular actions of the OS.
Actually, this process allows the user to have a “complete access” to his/her device: hackers decided to use this noun because people can customize the device without “thinking” about Apple rules.
By complete access we mean that during the modify phase, all the partitions of the iDevice get an alteration of permissions (from “only read” to “read-write”), making even possible the run of unsigned code, namely applications that don’t have the certificates needed to allow the program to work on normal devices.
But how a jailbreak can do all of this? We’ve asked this to posixninja (member of the Chronic Dev Team, one of the most famous hacker groups in the scene), who answered:
Minimal jailbreak just changes fstab ( a file that controls the permissions of the partitions N.o.A.) to allow the root filesystem to be writable.
To allow the run of unsigned code, besides of the changes to the “stab”, some parameters inside of the kernel (the heart of every OS N.o.A.) must be changed.
How a hacker can exploit a bug inside iOS
In order to give to you a satisfactory explanation of this argument, we’ve asked the help of veeence, a person close to the two hacker teams of the iOS scene. Let’s hear his words then:
As you know, to jailbreak a device an exploit is needed, an exploit that “exploits” a vulnerability. Apple engineers write hunderds maybe thousand lines of code every day and since they are human, they make mistakes. A lot of these mistakes do not show up when testing their code, and turns out to just work and do what it is coded for.
Now, the code works fine as long as you let it do its thing, but if you are going to interfere with it, it might not as well do its thing anymore, create some overflow and crash. This is what we call a vulnerability in software.
When you’ve found such a vulnerability you’ll have to exploit it in order to create a jailbreak. Basically an exploit is code to take over control of the crash that is caused by the vulnerability, it pretty much tells the Apple code “now you’re going to listen to me”.
There are enough vulnerabilities in Apple code but really just a very few of them are exploitable. Finding/creating such an exploit is the hardest part when creating a jailbreak or unlock. It’s requires IQ, brains, brains, brains and likely time a lot of time. It’s the art of hacking.
Making software crash is not that hard, taking control of (“secured” Apple) software is way harder. As I said, with the exploit you tell the Apple code to listen to you, so you actually control device by being able to run unsigned code (the basic reason for jailbreaking).
When you’ve find such an exploit, first thing you do is throw a party. Next thing to do is just finishing up. Creating a payload that automates the crash-exploit-takeover-modify process and will jailbreak the device. Kernel or low level bootloader jailbreaks, it basically works the same.
Hoping that you enjoyed this “first episode”, we warmly invite you to keep following this spot: in the next article we’ll talk about why somebody should jailbreak his/her iDevice and the typologies of the jailbreak, tethered and untethered.
Special thanks to @p0sixninja and @veeence: without them, it wouldn’t have been possible render complete the poits we discussed.
Leggi o Aggiungi Commenti