Le problème de signature viendrait de KPP et la méthode dont Pangu a bypass le codesigning
Kernel Patch Protection
Avec iOS 9, est arrivée une nouvelle sécurité nommée Kernel Patch Protection (KPP) sur les appareils 64 bits. KPP permet de vérifier l’integrité des pages RX dans le kernelcache ainsi que la table de pages de celui-ci.
Cette fonctionnalité serait liée au coprocesseur à la série de co-processeurs arrivée avec l’iPhone 5S qui contient également les empreintes digitales pour Touch ID. Le coprocesseur MX étant aussi appelé SEP ou Secure Enclave a son propre Micro Kernel et sa propre bootchain.
Avec les anciennes version d’iOS, il était possible de patcher le kernel avec les exploits appropriés. Aujourd’hui cette methode n’est plus possible.
En effet il est plus difficile de patcher les segments qui sont en lecture seule sur les versions ARM64. Si ils sont patchés cela causera des kernels panics aléatoires.
Pangu 9
Le jailbreak de Pangu a été relaché le 14 octobre 2015, soit un mois après la première release d’iOS 9.
La team Pangu a exploité un bug dans le noyau dans le code de IOHIDFamily. Le bug a été découvert par Luca Todesco (aka qwertyoruiop) qui a publié un un jailbreak Open Source d’iOS 8.4.1 pour OS X ainsi que cererdlong qui travaille pour Alibaba.
OS X est aussi affecté par ce bug, mais le crash aura seulement lieu en executant l’exploit en tant que root, donc pas vraiment utile dans ce cas, car il faudra un autre exploit pour obtenir l’accès root (e.g DYLD_PRINT_TO_FILE).
Bref je suis pas là pour faire un writeup de Pangu9.
Killed : 9
Avec leur dernier outil de jailbreak la majorité des outils de type CLI ne fonctionnaient plus et retournaient l’erreur Killed : 9
lors de leur execution.
En prenant exemple avec Joker :
Pour fixer cette erreur, il y a deux methodes.
ldid
Avec la commande ldid
, il vous suffira d’executer la commande avec les arguments suivants
e.g :
Et hop !
Jtool
En regardant Jtool de plus prêt j’ai vu qu’il y avait des options pour les signatures des binaires
Donc voilà, j’ai executé la commande suivante :
Jtool créé donc un fichier nommé out.bin executable dans votre directory.
Il vous suffira de l’executer pour voir que c’est bien le dit executable que souhaitiez signer.
Pour renommer celui-ci executez cette commande (en modifant le nom du binaire) : mv out.bin joker.armv7
Si vous avez besoin d’infos ou autre contactez-moi sur Twitter : @matteyeux