iOS Testing Environment

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

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 d'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 identifiant Appli à 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 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 des éléments de trousseau.

Les profils de provisionnement sont stockés à l'intérieur du téléphone dans /Library/MobileDevice/ProvisioningProfiles

Simulateur

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.

Simulateur

La première chose à savoir est que effectuer un test de pénétration dans un simulateur sera beaucoup plus limité que de le faire dans un appareil jailbreaké.

Tous les outils nécessaires pour construire et prendre en charge une application iOS ne sont officiellement pris en charge que 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 pourraient contenir des logiciels malveillants.

Les fichiers du simulateur se trouvent dans /Users/<username>/Library/Developer/CoreSimulator/Devices

Pour ouvrir le simulateur, exécutez Xcode, puis cliquez 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

À l'intérieur de /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. Une façon 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 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 n'offre pas d'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é, le contrôle d'intégrité chargé de vérifier les applications installées est patché pour être contourné.

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.

Rootage Android vs Jailbreak iOS

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

En revanche, les appareils iOS ne peuvent pas flasher de ROM personnalisées en raison de la restriction du chargeur d'amorçage à l'amorçage uniquement 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 continues de la sécurité d'Apple.

Défis du jailbreak

Le jailbreak iOS est de plus en plus difficile car Apple corrige rapidement les vulnérabilités. Revenir à une version antérieure d'iOS n'est possible que pendant un temps limité après une sortie, ce qui rend le jailbreak une question sensible au temps. Les appareils utilisés pour les tests de sécurité ne doivent pas être mis à jour à moins que le re-jailbreak 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 firmware OTA. Le site web 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 à 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-jailbreak manuel sans besoin d'un ordinateur.

  • Les jailbreaks untethered offrent une solution de jailbreak permanente sans nécessité de réapplication.

Outils et ressources de jailbreak

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

  • Checkra1n pour les appareils à puce A7-A11.

  • Palera1n pour les appareils Checkm8 (A8-A11) sur iOS 15.0-16.5.

  • Unc0ver pour les versions d'iOS jusqu'à 14.8.

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

Avantages et risques du jailbreak

Le jailbreak supprime l'isolement 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 à davantage 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 jailbreak

pageiOS Basic Testing Operations

Détection du jailbreak

Plusieurs applications tenteront 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 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 du bac à sable

  • Certaines 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 détection du jailbreak ici.

Vous pouvez essayer d'éviter ces détections en utilisant ios jailbreak disable de objection

Contournement de la détection du jailbreak

  • Vous pouvez essayer d'éviter ces détections en utilisant ios jailbreak disable de objection

  • Vous pouvez é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

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour