> For the complete documentation index, see [llms.txt](https://blog.s1rn3tz.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.s1rn3tz.ovh/pentest-mobile/ios/setup-environnement-ios.md).

# 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/>
