Jailbreakme: ecco come funziona il jailbreak per iPad 2 (aggiornato)

Avevo già analizzato alcuni aspetti della beta di Jailbreakme ma @comex si è superato nella realizzazione della versione definitiva del jailbreak per iPad 2 (e non solo). Il primo step da superare per visualizzare il sorgente pagina di Jailbreakme è ricorrere allo user agent spoofing per scaricare il sorgente completo visualizzato da un iPad.

Per far questo ho utilizzato il programma per Windows Malzilla, basterà impostare il seguente user agent:

Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5

Fatto questo su Malzilla sarà sufficiente impostare ovviamente la URL da scaricare, cioè www.jailbreakme.com, e cliccare su Get. Così facendo otterremo il sorgente pagina come se venisse visualizzato da iPad, per comodità l’ho postato su Pastebin (qui in formato raw).

L’exploit risiede, come sappiamo, in un PDF che però non viene scaricato da nessuna cartella o dominio esterno, bensì è codificato in base64 in uno script JavaScript, posto solo un pezzo del codice:

<script>pdf = ‘data:application/pdf;base64,JVBERi0xLjMKJeLjz9MNCjIg</script>

La decodifica del PDF da base64 genera un documento non proprio corretto per essere un vero e proprio PDF (se volete provare da voi la decodifica potete usare Malzilla oppure usare questo decoder Base64 web based. Il problema vero e proprio è che il PDF contiene al suo interno uno stream compresso con Flatedecode che contiene al suo interno l’exploit vero e proprio. Sinceramente non sono riuscito a decomprimerlo né con pdf-parser di Didier Stevens, né con PDF Stream Dumper, né con Ghostscript come spiegato qui. Diciamo che però l’aver continuato a far domande su Hacker News (il nickname che ho usato è demonfly) ha smosso comex in persona che ha così spiegato l’exploit usato:

It’s compressed with FlateDecode; if you decompress it you can see the embedded .pfb, which has the actual exploit

Sostanzialmente l’exploit che permette il jailbreak è costituito da un font .pfb.

Grazie ai suggerimenti di Gianni Amato sono riuscito non solo a individuare con pdf-parser il font ma anche ad estrarlo. La procedura che ho seguito è la seguente:

python pdf-parser.py -f pdfexploit.pdf

Usate il nome che volete al posto di pdfexploit.pdf, potete scaricare il pdf da qui, Il risultato mostra che l’oggetto 4, indicato come obj 4 0, sia proprio un Font (Type: /Font). A questo punto per estrarlo ho dato il seguente comando:

python pdf-parser.py --object 4 --filter --raw YuPrMhiE.pdf > font.pfb

Così facendo in font.pfb ho salvato il font che contiene l’exploit di comex, per memoria futura e per consentire di analizzarlo ho caricato il dump del font su Pastebin.

Analizzare e “disinfettare” file PDF con pdfid

I file PDF stanno diventando sempre di più un vettore di attacco e vengono usati sempre di più come “cavalli di troia” per far breccia nei sistemi operativi. Ecco perché prima di aprire PDF provenienti da mittenti/fonti non fidate può essere utile eseguire un’analisi automatizzata ricorrendo al tool pdfid.py di Didier Stevens. Si tratta di uno script, funzionante su Windows, Linux e qualsiasi sistema che abbia installato Python, che si occupa di analizzare qualsiasi file PDF verificando la presenza di stringhe potenzialmente “nocive”, come /JavaScript, /OpenAction, /Launch (la cui individuazione è stata aggiunta solo nell’ultima versione) o /RichMedia, solo per citarne alcune.

Basta dare in pasto a pdfid.py qualsiasi file PDF (nell’esempio “calc.pdf”) per ottenere un resoconto di tutte le stringhe potenzialmente nocive con relative occorrenze riscontrate:

pdfid.py calc.pdf

Leggi tutto