# Setup environnement (iOS)

{% hint style="info" %}
Pour les tests d'intrusion iOS, il est recommandé d'utiliser un appareil physique. (jailbreakable)
{% endhint %}

## Prérequis

* Ordinateur sous MacOS avec droits d'administration
* XCode et XCode Command Line Tools
* Un appareil iOS jailbreaké
* Un proxy type Burp Suite

## Connexion au proxy burp suite

* Dans les paramètres réseau, activer la recherche de proxy manuelle et renseigner l'IP de la machine attaquant et le port souhaité (8080 par défaut).
* Dans les paramètres du proxy burp, configurer le proxy pour écouté sur le port séléctionné et sur toutes les interfaces.
* Sur l'iPhone, aller sur <http://burp> et télécherger le certificat burp.
* Installer le certificat.
* Aller dans ***Settings*** → ***General*** → ***About*** → ***Certificate Trust Settings*** et ajouter le certificat burp aux certificats de confiance.

## Jailbreak

Il existe différents types de jailbreak qui sont les suivants:

* **Untethered jailbreak**: Il s'agit d'un jailbreak persistant qui reste actif après redémarrage de l'appareil
* **Tethered jailbreak**: Il s'agit d'un jailbreak temporaire étant désactivé après redémarrage de l'appareil
* **Semi-tethered jailbreak**: Un jailbreak semi-connecté est un jailbreak où l'appareil peut démarrer tout seul, mais il n'aura plus de noyau corrigé et ne pourra donc pas exécuter de code modifié.
* **Semi-untethered jailbreak**: La séquence de démarrage de l'appareil est inchangée à chaque démarrage et il démarre dans son état d'origine (non jailbreaké). Cependant, plutôt que d'utiliser un ordinateur pour jailbreaker, comme dans un cas connecté ou semi-connecté, l'utilisateur peut re-jailbreaker son appareil à l'aide d'une application qui s'exécute sur son appareil.

La méthode ou l'outil à utiliser dépend de la version d'iOS et des iPhones compatibles, en fonction du processeur.\
Le site <https://theapplewiki.com/wiki/Jailbreak>  est une bonne ressource pour vérifier quel outil convient. \
\
Voici quelques outils de jailbreak populaires :<br>

* **Dopamine** (iOS 15-16)
* **palera1n**  (iOS 15-17)
* **Checkra1n** (iOS 12 - 14)
* **Unc0ver** iOS 11 - 14.3)
* **Taurine** ou **Chimera** (pour iOS 14.x)

Ensuite, installer Cydia : <https://theapplewiki.com/wiki/Cydia_Installer>

{% hint style="info" %}
Si applicable, il est parfois possible de Unjailbreak un appareil avec **Cydia Eraser** par exemple
{% endhint %}

Enfin, installer les outils nécessaires à partir du package manager:

* Frida
* SSL Kill Switch
* Cycript
* Radare 2
* Filza
* iFile
* SQLite 3.X
* wget
* ...

## Installer une application

Plusieurs méthodes sont possibles:

* Installation classique via l'App Store
* Installation depuis un IPA: nécessite un outil tier comme **ideviceinstaller** pour sideload l'application dans le device

{% embed url="<https://libimobiledevice.org/#get-started>" %}

Voici quelques commandes utiles:

```
ideviceinstaller --list-apps
ideviceinstaller --install /path/to/target.ipa
ideviceinstaller --uninstall com.target.example
```

* Installation via Xcode: En compilant et lancant l'application

## Créer un simulateur

{% hint style="warning" %}
Simulateur ≠ Emulateur

Un **simulateur iOS** reproduit le comportement d’iOS **sans exécuter le vrai système**, en traduisant les appels (il est rapide mais pas 100 % fidèle au matériel).\
Un **émulateur iOS** imiterait **le matériel et le système iOS réels**, comme un vrai iPhone virtuel.\
En pratique, Apple fournit des **simulateurs**, et les **émulateurs iOS complets n’existent pas officiellement** à cause des restrictions d’Apple.
{% endhint %}

Dans Xcode:

* Aller dans **File > New Simulator**
* Choisir le type de device et la version d'iOS à simuler
* Cliquer sur **Create**

## Ressources

* <https://checkra.in/>
* <http://www.3u.com/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-mobile/ios/setup-environnement-ios.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
