Professional Documents
Culture Documents
matteyeux
About tags
macOS
Depuis toujours les chercheurs en sécurité iOS utilisent des Macs et macOS
comme système d’exploitation. Pourquoi ? Il y a plusieurs raisons :
XNU: c’est le noyau de macOS, mais aussi d’iOS qui a la particularité d’être
open source. De plus en cas de découverte d’une faille de sécurité, il est plus
facile de tester un exploit sur macOS puis le porter sur iOS.
Xcode : le fameux environnement de développement pour iOS et macOS
uniquement disponible sur macOS. Celui-ci fournit un SDK complet
permettant de debugger des apps etc… Le kit de développement inclut aussi
certaines bibliothèques présentes uniquement sur macOS (eg :
CoreFoundation et Mach).
Mach-O : le format de fichier exécutable sur les systèmes d’exploitation
Apple qui sert aussi de base à XNU.
La facilité de communication entre les deux systèmes d’exploitation
(jusqu’à libimobiledevice ;) ).
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 1/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
Tout d’abord la distribution Linux. J’utilise Ubuntu 16.04, stable, fluide, c’est
tout ce qu’il faut. De plus le gestionnaire de paquets APT fournit tout ce qu’il
faut sans avoir besoin d’ajouter des sources exterieures. Passons aux outils.
Libimobiledevice
Libimobiledevice est une plateforme de bibliothèques logicielles permettant
de communiquer avec une appareil iOS. Ces librairies permettent donc de
restaurer son iPhone, mais aussi d’obtenir un syslog, d’entrer en mode
recovery, obtenir des information plus poussées de son iBidule et tout cela
sans iTunes, qui n’est pas disponible sur GNU/Linux.
De plus, sachez que ces librairies ont été utilisées dans plusieurs outils de
jailbreak notamment par la team Pangu qui a tenu à remercier ce projet
Open Source, mais aussi avec Yalu pour iOS 8.4.1.
Pour l’installer sur Ubuntu ou Debian c’est tout simple, il su it de suivre les
étapes dans un ancien blog post. Vous pouvez aussi utiliser easymobiledevice
pour simplifier l’utilisation de Libimobiledevice.
Theos
Un peu plus haut je parlais de Xcode qui permet de compiler des apps et des
executables pour iOS uniquement sur macOS. Bien sur il y a une alternative
pour Linux : Theos. Theos est kit de developpement basé sur des Makefiles et
écrit en Perl permettant de compiler du so ware pour iOS.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 2/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
$ cat main.c
#include <stdio.h>
#include <stdlib.h>
int main(){printf("Hello World\n");return 0;}
$ make
> Making all for tool test…
==> Compiling main.c (armv7)…
==> Linking tool test (armv7)…
==> Compiling main.c (arm64)…
==> Linking tool test (arm64)…
==> Merging tool test…
==> Signing test…
$ file .theos/obj/debug/test
.theos/obj/debug/test: Mach-O universal binary with 2
Hopper Disassembler
Hopper est une alternative à IDA Pro qui coute assez cher et qui n’est pas
disponible pour Linux.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 3/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
Radare 2
Radare 2 est la deuxième version du framework de Reverse Engineering
Radare il est aussi disponible sur iOS, mais sa particularité c’est qu’il se gère
seulement via la ligne de commande, donc si vous n’êtes pas adeptes de la
ligne de commande essayez Hopper.
[...]
| ; JMP XREF from 0x10006724c (sub.vm_rea
| .-> 0x100066f68 e83f40b9 ldr w8, [s
| ! 0x100066f6c e90308aa mov x9, x8
| ! 0x100066f70 4ac3b952 movz w10,
| ! 0x100066f74 4ad18e72 movk w10,
| ! 0x100066f78 08010a6b subs w8, w
| ! 0x100066f7c e93700b9 str w9, [s
| ! 0x100066f80 e83300b9 str w8, [s
| ,==< 0x100066f84 2c010054 b.gt 0x100
| ,===< 0x100066f88 01000014 b 0x100066
| ||! ; JMP XREF from 0x100066f88 (sub.vm_rea
| `---> 0x100066f8c e8abb752 movz w8, 0
| |! 0x100066f90 084e8e72 movk w8, 0
| |! 0x100066f94 e93740b9 ldr w9, [s
| |! 0x100066f98 2801086b subs w8, w
| |! 0x100066f9c e82f00b9 str w8, [s
| ,===< 0x100066fa0 c00c0054 b.eq 0x100
| ,====< 0x100066fa4 40000014 b 0x100067
| |||! ; JMP XREF from 0x100066f84 (sub.vm_rea
| ||`--> 0x100066fa8 a887a052 movz w8, 0
| || ! 0x100066fac 08e98c72 movk w8, 0
| || ! 0x100066fb0 e93740b9 ldr w9, [s
| || ! 0x100066fb4 2801086b subs w8, w
| || ! 0x100066fb8 e82b00b9 str w8, [s
| ||,==< 0x100066fbc 2c010054 b.gt 0x100
| ,=====< 0x100066fc0 01000014 b 0x100066
| ||||! ; JMP XREF from 0x100066fc0 (sub.vm_rea
| `-----> 0x100066fc4 48c3b952 movz w8, 0
| |||! 0x100066fc8 68d18e72 movk w8, 0
| |||! 0x100066fcc e93740b9 ldr w9, [s
| |||! 0x100066fd0 2801086b subs w8, w
| |||! 0x100066fd4 e82700b9 str w8, [s
| ,=====< 0x100066fd8 20100054 b.eq 0x100
| ,======< 0x100066fdc 32000014 b 0x100067
| |||||! ; JMP XREF from 0x100066fbc (sub.vm_rea
| ||||`--> 0x100066fe0 0832a552 movz w8, 0
| |||| ! 0x100066fe4 c83e8b72 movk w8, 0
| |||| ! 0x100066fe8 e93740b9 ldr w9, [s
| |||| ! 0x100066fec 2801086b subs w8, w
| |||| ! 0x100066ff0 e82300b9 str w8, [s
| ||||,==< 0x100066ff4 2c010054 b.gt 0x100
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 5/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
Vous pouvez aussi avoir un mode un peu plus visuel comme avec IDA
J’ai pris un exemple di érent que le précédent, mais c’est le même principe.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 6/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
sys/install.sh
La compilation prend un peu de temps, car c’est un gros logiciel mais après
vous serez bien content de l’avoir !
iBoot64helper
Si vous utilisez IDA, vous devez surement savoir qu’on peut utiliser des scripts
en Python avec l’API IDA.
Je vais vous parler d’un script en particulier très utile pour l’analyse des
bootloaders 64 bits d’Apple : iBoot64helper. Ce script va localiser l’adresse ou
est chargé le bootloader (loading address) pour rebaser l’image.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 7/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
J Levin’s tools
Le dernier set d’outils est pour ma part le plus utile de la bande. Tous écris
par Jonathan Levin aka Morpheus. Il est l’auteur de plusieurs livres
techniques consacrés aux systèmes d’exploitation d’Apple mais aussi
Android. Il a publié di érents articles sur tvOS, les mises à jours OTA, mais
aussi sur les jailbreaks de ces dernières années, je vous invite à lire tous ses
articles.
Joker
Joker a été développé pour le Reverse Engineering des kernels XNU. Vous
pouvez dumper KPP mais aussi decompresser les kernelcaches 64 bits sans
avoir a connaitre le Magic o set.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 8/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
$ joker kernelcache.n71
Feeding me a compressed kernelcache, eh? That is fine,
Compressed Size: 14023377, Uncompressed: 32489472. Unk
btw, KPP is at 14023816 (0xd5fc88)..And I saved it for
Got kernel at 440
This is a 64-bit kernel from iOS 10.x, or later (3705.
ARM64 Exception Vector is at file offset @0x7b000 (Add
Joker reconnait bien que c’est un kernel d’iOS 10 pour aarch64. Il sauvegarde
aussi KPP dans un repertoire temporaire si l’on veut le recuperer. En plus ça
on peut dumper les kexts, les sysctl, syscalls, etc…
Jtool
Jtool est multifonction, un vrai couteau suisse pour les exécutables Mach-O.
Cet outil permet d’analyser de fond en comble les executables *OS
.Premièrement il est possible d’obtenir l’en-tête d’un mach-O.
$ jtool -h test/.theos/obj/debug/arm64/test
Magic: 64-bit Mach-O
Type: executable
CPU: ARM64
Cmds: 17
size: 1280 bytes
Flags: 0x200085
Bref cet outil est plus que complet, je vous conseil vivement de vous en
informer un peu mieux ici
Disarm
Oups encore un autre desassembleur. Cette fois-ci il est plutôt simple. Je
l’utilise peu, mais je le trouve assez utile pour les petits programmes.
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 9/11
8/15/2018 Jailbreak iOS : outils pour Linux | matteyeux
Vous pouvez l’utiliser pour les Bootloaders (iBoot, LLB). Mais aussi les
kernelcaches comme ci-dessous :
Encore une fois je vous invite à aller faire un tour sur la page de disarm pour
plus d’infos.
Bien visiter chaque page, pour télécharger chaque tarball et copier chaque
fichier dans le $PATH, c’est chiant. Alors je vous propose un petit script qui va
le faire pour vous. Il est disponible sur Github et vous n’avez qu’à le rendre
executable avec un chmod +x puis vous le lancez.
Les outils que je vous ai présenté sont de loin les meilleurs en ce qui
concerne la recherche iOS tout en ayant une machine Linux.
Github : https://github.com/matteyeux
#iOS #XNU #jailbreak #Linux
http://matteyeux.me/hacking/2017/10/19/linux-jailbreak-ressources.html 11/11