Environnement de test iOS

Reading time: 8 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Programme de développement Apple

Une identité de provisionnement est un ensemble 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 afin d'obtenir votre identité de provisionnement. Sans cela, vous ne pourrez pas exécuter des applications à partir du code source sur un appareil physique. Une autre option est d'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 ID Appli avec vos identifiants) --> Cliquez sur l'Apple ID 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 de lancer 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 fiable 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 des éléments de trousseau.

Les profils de provisionnement sont stockés dans le téléphone dans /Library/MobileDevice/ProvisioningProfiles

Simulateur

note

Notez qu'un simulateur n'est pas la même chose qu'un émulateur. Le simulateur simule simplement le comportement et les fonctions de l'appareil, mais ne les utilise pas réellement.

Simulateur

La première chose que vous devez savoir est que réaliser un pentest 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 uniquement officiellement pris en charge 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 construire et tester votre application.
Il est fortement recommandé de télécharger Xcode depuis le magasin d'applications officiel. D'autres versions peuvent contenir des logiciels malveillants.

Les fichiers du simulateur peuvent être trouvés dans /Users/<username>/Library/Developer/CoreSimulator/Devices

Pour ouvrir le simulateur, exécutez Xcode, puis appuyez sur l'onglet Xcode --> Ouvrir les 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

Dans /Users/<username>/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. Un moyen rapide de trouver le bon UID est d'exécuter l'application dans le simulateur et d'exécuter :

bash
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 pas de licence d'essai.

Pas besoin de Jailbreak

Consultez cet article de blog sur la façon de pentester une application iOS sur un appareil non jailbreaké : https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed

Jailbreaking

Apple exige strictement que le code exécuté sur l'iPhone soit signé par un certificat délivré par Apple. Jailbreaking est le processus de contournement actif de telles 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é qui est responsable de la vérification des applications installées est patchée, donc elle est contournée.

note

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.

Rooting Android vs. Jailbreaking iOS

Bien qu'ils soient souvent comparés, le rooting sur Android et le jailbreaking sur iOS sont des processus fondamentalement différents. Le rooting des appareils Android peut impliquer l'installation du binaire su ou le remplacement du système par un ROM personnalisé rooté, ce qui ne nécessite pas nécessairement d'exploits si le bootloader est déverrouillé. Flasher des ROM personnalisées remplace le système d'exploitation de l'appareil après le déverrouillage du bootloader, nécessitant parfois un exploit.

En revanche, les appareils iOS ne peuvent pas flasher des ROM personnalisées en raison de la restriction du bootloader à ne démarrer que des images signées par Apple. Le jailbreaking iOS vise à contourner les protections de signature de code d'Apple pour exécuter du code non signé, un processus compliqué par les améliorations de sécurité continues d'Apple.

Défis du Jailbreaking

Le jailbreaking iOS devient de plus en plus difficile car Apple corrige rapidement les vulnérabilités. Le downgrade d'iOS n'est possible que pendant une période limitée après une version, rendant le jailbreaking une affaire sensible au temps. Les appareils utilisés pour les tests de sécurité ne doivent pas être mis à jour à moins que le re-jailbreaking ne soit garanti.

Les mises à jour iOS sont contrôlées par un mécanisme de défi-réponse (blobs SHSH), permettant l'installation uniquement pour des réponses signées par Apple. Ce mécanisme, connu sous le nom de "fenêtre de signature", limite la capacité de stocker et d'utiliser ultérieurement des packages de firmware OTA. Le site IPSW Downloads est une ressource pour vérifier les fenêtres de signature actuelles.

Variétés de Jailbreak

  • Les jailbreaks tethered nécessitent une connexion à un ordinateur pour chaque redémarrage.
  • Les jailbreaks semi-tethered permettent de démarrer en mode non jailbreaké sans ordinateur.
  • Les jailbreaks semi-untethered nécessitent un re-jailbreaking manuel sans avoir besoin d'un ordinateur.
  • Les jailbreaks untethered offrent une solution de jailbreak permanente sans besoin de réapplication.

Outils et Ressources de Jailbreaking

Les outils de jailbreaking varient selon la version d'iOS et l'appareil. Des ressources telles que Can I Jailbreak?, The iPhone Wiki, et Reddit Jailbreak fournissent des informations à jour. Des exemples incluent :

  • Checkra1n pour les appareils avec puces A7-A11.
  • Palera1n pour les appareils Checkm8 (A8-A11) sur iOS 15.0-16.5.
  • Unc0ver pour les versions iOS jusqu'à 14.8.

Modifier votre appareil comporte des risques, et le jailbreaking doit être abordé avec prudence.

Avantages et Risques du Jailbreaking

Le jailbreaking supprime le sandboxing imposé par le système d'exploitation, permettant aux applications d'accéder à l'ensemble du système de fichiers. Cette liberté permet l'installation d'applications non approuvées et l'accès à plus d'API. Cependant, pour les utilisateurs réguliers, le jailbreaking n'est pas recommandé en raison des risques potentiels pour la sécurité et de l'instabilité de l'appareil.

Après le Jailbreaking

iOS Basic Testing Operations

Détection de Jailbreak

Plusieurs applications essaieront de détecter si le mobile est jailbreaké et dans ce cas, l'application ne fonctionnera pas

  • Après le jailbreak d'un iOS, des fichiers et dossiers sont généralement installés, ceux-ci peuvent être recherchés pour déterminer si l'appareil est jailbreaké.
  • Dans un appareil jailbreaké, les applications obtiennent un accès en lecture/écriture à de nouveaux fichiers en dehors du sandbox.
  • Certains appels d'API se comporteront différemment.
  • La présence du service OpenSSH.
  • Appeler /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 l'option ios jailbreak disable d'objection.

Contournement de la Détection de Jailbreak

  • Vous pouvez essayer d'éviter ces détections en utilisant l'option ios jailbreak disable d'objection.
  • Vous pourriez également installer l'outil Liberty Lite (https://ryleyangus.com/repo/). Une fois le dépôt ajouté, l'application devrait apparaître dans l'onglet 'Recherche'.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks