17 KiB
Environnement de test iOS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? Ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Programme de développement Apple
Une identité de provisionnement est une collection de clés publiques et privées associées à un compte développeur Apple. Pour signer des applications, vous devez payer 99 $/an pour vous inscrire au Programme de développement Apple et obtenir votre identité de provisionnement. Sans cela, vous ne pourrez pas exécuter les applications à partir du code source sur un appareil physique. Une autre option consiste à utiliser un appareil jailbreaké.
À partir de Xcode 7.2, Apple a fourni une option pour créer un profil de provisionnement de développement iOS gratuit qui permet d'écrire et de tester votre application sur un véritable iPhone. Allez dans Xcode --> Préférences --> Comptes --> + (Ajouter un nouvel identifiant Apple avec vos identifiants) --> Cliquez sur l'identifiant Apple créé --> Gérer les certificats --> + (Développement Apple) --> Terminé
__Ensuite, pour exécuter votre application sur votre iPhone, vous devez d'abord indiquer à l'iPhone de faire confiance à l'ordinateur. Ensuite, vous pouvez essayer d'exécuter l'application sur le mobile depuis Xcode, mais une erreur apparaîtra. Allez donc dans Réglages --> Général --> Profils et gestion des appareils --> Sélectionnez le profil non approuvé et cliquez sur "Faire confiance".
Notez que les applications signées par le même certificat de signature peuvent partager des ressources de manière sécurisée, comme les éléments du trousseau.
Les profils de provisionnement sont stockés dans le téléphone dans /Library/MobileDevice/ProvisioningProfiles
Simulateur
{% hint style="info" %} Notez qu'un simulateur n'est pas la même chose qu'un émulateur. Le simulateur simule simplement le comportement de l'appareil et ses fonctions, mais ne les utilise pas réellement. {% endhint %}
Le simulateur iOS SDK offre une simulation de niveau supérieur d'un appareil iOS. Plus important encore, les binaires de l'émulateur sont compilés en code x86 au lieu de code ARM. Les applications compilées pour un véritable appareil ne s'exécutent pas, rendant le simulateur inutile pour l'analyse en boîte noire et l'ingénierie inverse.
Simulateur
La première chose que vous devez savoir, c'est que réaliser un test de pénétration dans un simulateur sera beaucoup plus limité que de le faire sur un appareil jailbreaké.
Tous les outils nécessaires pour créer et prendre en charge une application iOS sont officiellement pris en charge uniquement sur Mac OS.
L'outil de facto d'Apple pour créer/déboguer/instrumenter des applications iOS est Xcode. Il peut être utilisé pour télécharger d'autres composants tels que des simulateurs et différentes versions de SDK nécessaires pour créer et tester votre application.
Il est fortement recommandé de télécharger Xcode depuis l'App Store officiel. D'autres versions pourraient contenir des logiciels malveillants.
Les fichiers du simulateur peuvent être trouvés dans /Users/<nom_utilisateur>/Library/Developer/CoreSimulator/Devices
Pour ouvrir le simulateur, lancez Xcode, puis cliquez sur l'onglet Xcode --> Outils de développement --> Simulateur
__Dans l'image suivante, en cliquant sur "iPod touch [...]", vous pouvez sélectionner un autre appareil à tester :
Applications dans le simulateur
À l'intérieur de /Users/<nom_utilisateur>/Library/Developer/CoreSimulator/Devices
, vous pouvez trouver tous les simulateurs installés. Si vous souhaitez accéder aux fichiers d'une application créée dans l'un des émulateurs, il peut être difficile de savoir dans lequel l'application est installée. Une façon rapide de trouver l'UID correct est d'exécuter l'application dans le simulateur et d'exécuter :
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Une fois que vous connaissez l'UID, les applications installées peuvent être trouvées dans /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
.
Cependant, étonnamment, vous ne trouverez pas l'application ici. Vous devez accéder à /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
.
Et dans ce dossier, vous pouvez trouver le package de l'application.
Émulateur
Corellium est le seul émulateur iOS disponible publiquement. C'est une solution SaaS d'entreprise avec un modèle de licence par utilisateur et ne propose aucun essai gratuit.
Jailbreak
Apple exige strictement que le code s'exécutant sur l'iPhone soit signé par un certificat délivré par Apple. Le jailbreak est le processus de contournement actif de ces restrictions et d'autres contrôles de sécurité mis en place par le système d'exploitation. Par conséquent, une fois que l'appareil est jailbreaké, la vérification d'intégrité chargée de vérifier les applications installées est patchée pour être contournée.
{% hint style="info" %} Contrairement à Android, vous ne pouvez pas passer en "mode développeur" sur iOS pour exécuter du code non signé/non fiable sur l'appareil. {% endhint %}
Comparaison avec le root sur Android
Le jailbreak iOS est souvent comparé au root sur Android, mais le processus est en réalité assez différent. Pour expliquer la différence, nous allons d'abord passer en revue les concepts de "root" et de "flashing" sur Android.
- Root: Cela implique généralement l'installation du binaire
su
sur le système ou le remplacement de l'ensemble du système par une ROM personnalisée rootée. Les exploits ne sont pas nécessaires pour obtenir un accès root tant que le chargeur de démarrage est accessible. - Flashing de ROM personnalisée: Cela vous permet de remplacer le système d'exploitation qui s'exécute sur l'appareil après avoir déverrouillé le chargeur de démarrage. Le chargeur de démarrage peut nécessiter un exploit pour être déverrouillé.
Sur les appareils iOS, il est impossible de flasher une ROM personnalisée car le chargeur de démarrage iOS ne permet de démarrer et de flasher que des images signées par Apple. C'est pourquoi même les images iOS officielles ne peuvent pas être installées si elles ne sont pas signées par Apple, et cela rend les rétrogradations iOS possibles uniquement tant que la version iOS précédente est toujours signée.
Le but du jailbreak est de désactiver les protections d'iOS (en particulier les mécanismes de signature de code d'Apple) afin que du code non signé arbitraire puisse s'exécuter sur l'appareil (par exemple, du code personnalisé ou téléchargé à partir de magasins d'applications alternatifs tels que Cydia ou Sileo). Le mot "jailbreak" est une référence familière à des outils tout-en-un qui automatisent le processus de désactivation.
Considérations lors du jailbreak
Le jailbreak d'un appareil iOS devient de plus en plus compliqué car Apple renforce constamment le système et corrige les vulnérabilités exploitées. Le jailbreak est devenu une procédure très sensible au temps car Apple cesse de signer ces versions vulnérables relativement peu de temps après la sortie d'une correction (à moins que le jailbreak ne bénéficie de vulnérabilités basées sur le matériel, telles que l'exploit limera1n affectant le BootROM de l'iPhone 4 et de l'iPad 1). Cela signifie que vous ne pouvez pas rétrograder vers une version spécifique d'iOS une fois qu'Apple cesse de signer le micrologiciel.
Si vous avez un appareil jailbreaké que vous utilisez pour des tests de sécurité, gardez-le tel quel à moins d'être sûr à 100% que vous pouvez le re-jailbreaker après la mise à niveau vers la dernière version d'iOS.
Les mises à niveau d'iOS sont basées sur un processus de défi-réponse (générant les soi-disant blobs SHSH en résultat). L'appareil n'autorisera l'installation du système d'exploitation que si la réponse au défi est signée par Apple. C'est ce que les chercheurs appellent une "fenêtre de signature", et c'est la raison pour laquelle vous ne pouvez pas simplement stocker le package de micrologiciel OTA que vous avez téléchargé et le charger sur l'appareil quand vous le souhaitez. Lors de mises à niveau mineures d'iOS, deux versions peuvent être signées par Apple (la plus récente et la version iOS précédente). C'est la seule situation dans laquelle vous pouvez rétrograder l'appareil iOS. Vous pouvez vérifier la fenêtre de signature actuelle et télécharger le micrologiciel OTA depuis le site Web IPSW Downloads.
{% hint style="danger" %} La mise à jour du système d'exploitation supprime l'effet du jailbreak. {% endhint %}
Types de jailbreak
- Les jailbreaks tethered ne persistent pas après les redémarrages, donc il faut connecter (tethered) l'appareil à un ordinateur à chaque redémarrage pour réappliquer le jailbreak. L'appareil peut ne pas redémarrer du tout si l'ordinateur n'est pas connecté.
- Les jailbreaks semi-tethered ne peuvent pas être réappliqués à moins que l'appareil ne soit connecté à un ordinateur lors du redémarrage. L'appareil peut également démarrer en mode non jailbreaké de lui-même.
- Les jailbreaks semi-untethered permettent à l'appareil de démarrer de lui-même, mais les correctifs du noyau (ou les modifications de l'espace utilisateur) pour désactiver la signature du code ne sont pas appliqués automatiquement. L'utilisateur doit réappliquer le jailbreak de l'appareil en lançant une application ou en visitant un site web (sans nécessiter de connexion à un ordinateur, d'où le terme untethered).
- Les jailbreaks untethered sont le choix le plus populaire pour les utilisateurs finaux car ils ne doivent être appliqués qu'une seule fois, après quoi l'appareil sera jailbreaké en permanence.
Outils de jailbreak
Différentes versions d'iOS nécessitent différentes techniques de jailbreak. Déterminez si un jailbreak public est disponible pour votre version d'iOS. Méfiez-vous des outils et des logiciels espions falsifiés, qui se cachent souvent derrière des noms de domaine similaires au nom du groupe/auteur de jailbreak.
Exemples de versions :
- Checkra1n : Fonctionne sur les appareils équipés de la puce A7 et aussi récents que la puce A11, par exemple l'iPhone 5S jusqu'à l'iPhone X.
- Palera1n : Appareils Checkm8 (A8-A11) sous iOS 15.0-16.5.
- Unc0ver : Fonctionne uniquement pour les versions d'iOS jusqu'à 14.8, car Apple a corrigé les problèmes qui permettaient à Unc0ver de s'exécuter.
La scène du jailbreak iOS évolue si rapidement qu'il est difficile de fournir des instructions à jour. Cependant, nous pouvons vous orienter vers certaines sources qui sont actuellement fiables :
Notez que toute modification que vous apportez à votre appareil se fait à vos propres risques. Bien que le jailbreak soit généralement sûr, des problèmes peuvent survenir et vous risquez de rendre votre appareil inutilisable. Aucune autre partie que vous-même ne peut être tenue responsable de tout dommage.
Avantages
L'effet secondaire le plus important du Jailbreaking est qu'il supprime toute sandbox mise en place par le système d'exploitation. Par conséquent, toute application sur l'appareil peut lire n'importe quel fichier sur le système de fichiers, y compris les fichiers des autres applications, les cookies et le trousseau.
Un appareil jailbreaké permet aux utilisateurs d'installer des applications non approuvées et d'exploiter plus d'API, qui ne sont normalement pas accessibles.
{% hint style="warning" %} Il n'est pas recommandé de jailbreaker le mobile pour les utilisateurs réguliers {% endhint %}
Après le Jailbreaking
{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}
Détection du Jailbreak
Plusieurs applications essaieront de détecter si le mobile est jailbreaké et, dans ce cas, l'application ne se lancera pas
- Après le jailbreak d'un iOS, des fichiers et des dossiers sont généralement installés, qui peuvent être recherchés pour déterminer si l'appareil est jailbreaké.
- Sur un appareil jailbreaké, les applications obtiennent un accès en lecture/écriture à de nouveaux fichiers en dehors de la sandbox.
- Certains appels d'API se comporteront différemment.
- La présence du service OpenSSH.
- L'appel à
/bin/sh
renverra 1 au lieu de 0.
Plus d'informations sur la façon de détecter le jailbreak ici.
Vous pouvez essayer d'éviter ces détections en utilisant la commande ios jailbreak disable
de objection.
Contournement de la détection du Jailbreak
- Vous pouvez essayer d'éviter ces détections en utilisant la commande
ios jailbreak disable
de objection. - Vous pouvez également installer l'outil Liberty Lite (https://ryleyangus.com/repo/). Une fois le référentiel ajouté, l'application devrait apparaître dans l'onglet "Recherche".
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Vous travaillez dans une entreprise de cybersécurité ? Vous voulez voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.