hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

12 KiB

Environnement de test iOS

{% hint style="success" %} 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
{% endhint %} {% endhint %}

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 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 et les fonctions de l'appareil, mais ne les utilise pas réellement. {% endhint %}

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 :

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Une fois que vous connaissez le 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.

Jailbreaking

Apple exige strictement que le code exécuté sur l'iPhone soit signé par un certificat délivré par Apple. Le jailbreak 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é, le contrôle d'intégrité qui est responsable de la vérification des applications installées est patché, donc il est contourné.

{% 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 %}

Rooting Android vs. Jailbreaking iOS

Bien que souvent comparés, le rooting sur Android et le jailbreak 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 jailbreak 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 jailbreak 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 jailbreak 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 les 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 jailbreak 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 jailbreak doit être abordé avec prudence.

Avantages et Risques du Jailbreaking

Le jailbreak 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 jailbreak n'est pas recommandé en raison des risques potentiels pour la sécurité et de l'instabilité de l'appareil.

Après le Jailbreaking

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

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, 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
  • L'appel de /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

Support HackTricks
{% endhint %} {% endhint %}