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

155 lines
12 KiB
Markdown
Raw Normal View History

# Environnement de test iOS
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Soutenir HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PR au** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
{% endhint %}
2022-04-28 16:01:33 +00:00
## Programme de développement Apple
2022-04-28 16:01:33 +00:00
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é**.
2021-05-14 22:25:03 +00:00
À 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**".
2021-05-14 22:25:03 +00:00
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**.
2021-05-14 22:25:03 +00:00
Les profils de provisionnement sont stockés dans le téléphone dans **`/Library/MobileDevice/ProvisioningProfiles`**
2021-05-14 22:25:03 +00:00
## **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 :
![](<../../.gitbook/assets/image (270).png>)
![](<../../.gitbook/assets/image (520).png>)
### 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 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](https://ipsw.me) 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?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com), et [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) fournissent des informations à jour. Des exemples incluent :
* [Checkra1n](https://checkra.in/) pour les appareils avec puces A7-A11.
* [Palera1n](https://palera.in/) pour les appareils Checkm8 (A8-A11) sur iOS 15.0-16.5.
* [Unc0ver](https://unc0ver.dev/) 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](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
2022-04-28 16:01:33 +00:00
**Plus d'informations sur la façon de détecter le jailbreak** [**ici**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
2022-04-28 16:01:33 +00:00
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
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)!
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PR au** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
{% endhint %}
</details>
{% endhint %}