hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md

410 lines
28 KiB
Markdown
Raw Normal View History

# Opérations de base de test iOS
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
## Obtenir l'UDID d'un appareil iOS
{% hint style="info" %}
Effectuez ces actions en ayant **connecté** l'appareil à l'ordinateur via **USB** et en ayant **déverrouillé** l'appareil.
{% endhint %}
L'UDID est une séquence unique de 40 chiffres et lettres permettant d'identifier un appareil iOS. Vous pouvez trouver l'UDID de votre appareil iOS sur macOS Catalina et ultérieur dans l'application **Finder**, car iTunes n'est plus disponible dans Catalina. Il suffit de sélectionner l'appareil iOS connecté dans Finder et de **cliquer sur les informations sous le nom de l'appareil iOS** pour les parcourir. En plus de l'UDID, vous pouvez trouver le numéro de série, l'IMEI et d'autres informations utiles.
![](<../../.gitbook/assets/image (471).png>)
Si vous utilisez une version de macOS antérieure à Catalina, vous pouvez trouver l'[UDID de votre appareil iOS via iTunes](http://www.iclarified.com/52179/how-to-find-your-iphones-udid), en sélectionnant votre appareil et en cliquant sur "Numéro de série" dans l'onglet Résumé. En cliquant dessus, vous parcourrez les différentes métadonnées de l'appareil iOS, y compris son UDID.
Il est également possible d'obtenir l'UDID via divers outils en ligne de commande sur macOS lorsque l'appareil est connecté via USB :
2023-06-03 13:10:46 +00:00
* En utilisant l'outil [I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html) `ioreg` :
```bash
$ ioreg -p IOUSB -l | grep "USB Serial"
| "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec"
```
2023-06-03 13:10:46 +00:00
* En utilisant [ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller) (également disponible sur Linux) :
```bash
$ brew install ideviceinstaller
$ idevice_id -l
316f01bd160932d2bf2f95f1f142bc29b1c62dbc
```
2023-06-03 13:10:46 +00:00
* En utilisant le system\_profiler :
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1
```
2023-06-03 13:10:46 +00:00
* En utilisant instruments :
```bash
$ instruments -s devices
```
## Accéder à l'interpréteur de commandes de l'appareil
2023-06-03 13:10:46 +00:00
Après avoir jailbreaké l'appareil, vous devriez avoir installé un nouveau gestionnaire d'applications comme **Cydia**.
### SSH
Pour activer l'accès SSH à votre appareil iOS, vous pouvez installer le **paquet OpenSSH**. Une fois installé, vous pouvez accéder à votre appareil via ssh en exécutant `ssh root@<adresse_ip_de_l'appareil>`, ce qui vous connectera en tant qu'utilisateur root :
```bash
$ ssh root@192.168.197.234
root@192.168.197.234's password:
iPhone:~ root#
```
Lorsque vous accédez à votre appareil iOS via SSH, tenez compte des éléments suivants :
* Les **utilisateurs par défaut sont `root` et `mobile`**.
* Le mot de passe par défaut pour les deux est **`alpine`**.
> N'oubliez pas de changer le mot de passe par défaut pour les utilisateurs `root` et `mobile`, car toute personne sur le même réseau peut trouver l'adresse IP de votre appareil et se connecter avec le mot de passe par défaut bien connu, ce qui leur donnera un accès root à votre appareil.
### **Se connecter à un appareil via SSH via USB**
2022-04-05 22:24:52 +00:00
Lors d'un test en boîte noire réel, une connexion Wi-Fi fiable peut ne pas être disponible. Dans cette situation, vous pouvez utiliser usbmuxd pour vous connecter au serveur SSH de votre appareil via USB.
Connectez macOS à un appareil iOS en installant et en lançant iproxy :
```bash
$ brew install libimobiledevice
$ iproxy 2222 22
waiting for connection
```
La commande ci-dessus mappe le port `22` de l'appareil iOS sur le port `2222` de localhost. Vous pouvez également [faire en sorte que iproxy s'exécute automatiquement en arrière-plan](https://iphonedevwiki.net/index.php/SSH\_Over\_USB) si vous ne souhaitez pas exécuter le binaire à chaque fois que vous souhaitez utiliser SSH via USB.
2023-06-03 13:10:46 +00:00
Avec la commande suivante dans une nouvelle fenêtre de terminal, vous pouvez vous connecter à l'appareil :
```bash
$ ssh -p 2222 root@localhost
root@localhost's password:
iPhone:~ root#
```
> Petite note sur l'USB d'un iDevice : sur un appareil iOS, vous ne pouvez plus établir de connexions de données après 1 heure d'inactivité, à moins de le déverrouiller à nouveau en raison du mode restreint USB, qui a été introduit avec iOS 11.4.1.
### Application Shell sur l'appareil
Bien que l'utilisation d'un **shell sur l'appareil** (émulateur de terminal) puisse être très fastidieuse par rapport à un shell distant, elle peut s'avérer pratique pour le débogage en cas, par exemple, de problèmes de réseau ou de vérification de certaines configurations. Par exemple, vous pouvez installer [NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/) via Cydia à cette fin (il prend en charge iOS 6.0 à 12.1.2 au moment de la rédaction de ceci).
De plus, il existe quelques jailbreaks qui désactivent explicitement SSH entrant _pour des raisons de sécurité_. Dans ces cas, il est très pratique d'avoir une application shell sur l'appareil, que vous pouvez utiliser pour d'abord établir une connexion SSH sortante depuis l'appareil avec un shell inversé, puis vous connecter depuis votre ordinateur hôte.
Ouvrir un shell inversé via SSH peut être fait en exécutant la commande `ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip>`.
Sur l'application shell sur l'appareil, exécutez la commande suivante et, lorsque vous y êtes invité, saisissez le mot de passe de l'utilisateur `mstg` de l'ordinateur hôte :
```bash
ssh -R 2222:localhost:22 mstg@192.168.197.235
```
Sur votre ordinateur hôte, exécutez la commande suivante et, lorsque vous y êtes invité, saisissez le mot de passe de l'utilisateur `root` de l'appareil iOS :
```bash
$ ssh -p 2222 root@localhost
```
### **Mot de passe oublié**
Si vous oubliez votre mot de passe et souhaitez le réinitialiser par défaut **`alpine`** :
1. Modifiez le fichier `/private/etc/master.passwd` sur votre appareil iOS jailbreaké à l'aide d'un **terminal** sur l'appareil ou en utilisant des applications comme **Filza** ou **iFile**.
2023-06-03 13:10:46 +00:00
2. Trouvez les lignes :
```bash
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
```
2023-06-03 13:10:46 +00:00
3. Changez `xxxxxxxxx` en `/smx7MYTQIi2M` (qui est le mot de passe haché `alpine`).
4. Enregistrez et quittez.
## Transfert de données
### Copie des fichiers de données de l'application via SSH et SCP
Comme nous le savons maintenant, les fichiers de notre application sont stockés dans le répertoire Data. Vous pouvez maintenant simplement archiver le répertoire Data avec `tar` et le récupérer depuis l'appareil avec `scp` :
```bash
iPhone:~ root# tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
iPhone:~ root# exit
$ scp -P 2222 root@localhost:/tmp/data.tgz .
```
### Utilisation de iFunbox
[**iFunbox**](https://www.i-funbox.com/en/page-download.html) est une application GUI qui peut être utilisée pour plusieurs choses (y compris le téléchargement/téléversement de fichiers).\
Un autre outil GUI à cette fin est [**iExplorer**](https://macroplant.com/iexplorer).
2021-05-15 12:48:28 +00:00
{% hint style="info" %}
À partir de la version iOS 8.4, Apple a **restreint l'accès des gestionnaires tiers au sandbox de l'application**, donc des outils comme iFunbox et iExplorer n'affichent plus/récupèrent plus les fichiers des applications installées sur l'appareil si celui-ci n'est pas jailbreaké.
2021-05-15 12:48:28 +00:00
{% endhint %}
### Utilisation de Objection
Lorsque vous démarrez objection (`objection --gadget com.apple.mobilesafari explorer`), vous trouverez l'invite dans le répertoire Bundle.
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # pwd print
Current directory: /var/containers/Bundle/Application/DABF849D-493E-464C-B66B-B8B6C53A4E76/org.owasp.MSTG.app
```
2023-06-03 13:10:46 +00:00
Utilisez la commande `env` pour obtenir les répertoires de l'application et naviguez vers le répertoire Documents.
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
/var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
```
Avec la commande `file download <nom du fichier>`, vous pouvez télécharger un fichier depuis l'appareil iOS vers votre ordinateur hôte et l'analyser par la suite.
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # file download .com.apple.mobile_container_manager.metadata.plist
Downloading /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
Streaming file from device...
Writing bytes to destination...
Successfully downloaded /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
```
Vous pouvez également télécharger des fichiers sur l'appareil iOS avec `file upload <chemin_fichier_local>`.
## Obtention et extraction des applications
### Obtenir le fichier IPA à partir d'un lien de distribution OTA
Pendant le développement, les applications sont parfois fournies aux testeurs via une distribution over-the-air (OTA). Dans cette situation, vous recevrez un lien itms-services, comme celui-ci :
```
itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist
```
Vous pouvez utiliser l'outil [ITMS services asset downloader](https://www.npmjs.com/package/itms-services) pour télécharger l'IPA à partir d'une URL de distribution OTA. Installez-le via npm :
```bash
$ npm install -g itms-services
```
2023-06-03 13:10:46 +00:00
Enregistrez le fichier IPA localement avec la commande suivante :
```bash
# itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
```
### Acquisition du binaire de l'application
2023-06-03 13:10:46 +00:00
1. **À partir d'un IPA** :
Si vous avez l'IPA (probablement incluant un binaire d'application déjà décrypté), décompressez-le et vous êtes prêt à commencer. Le binaire de l'application se trouve dans le répertoire principal du bundle (.app), par exemple `Payload/Telegram X.app/Telegram X`. Consultez la sous-section suivante pour plus de détails sur l'extraction des listes de propriétés.
> Dans le Finder de macOS, les répertoires .app sont ouverts en faisant un clic droit dessus et en sélectionnant "Afficher le contenu du paquet". Dans le terminal, vous pouvez simplement vous déplacer avec la commande `cd`.
2. À partir d'un **appareil jailbreaké** :
Si vous n'avez pas l'IPA d'origine, vous avez besoin d'un appareil jailbreaké sur lequel vous allez **installer l'application** (par exemple via l'App Store). Une fois installée, vous devez **extraire le binaire de l'application de la mémoire et reconstruire le fichier IPA**. En raison de la gestion des droits numériques (DRM), le fichier binaire de l'application est chiffré lorsqu'il est stocké sur l'appareil iOS, il ne suffit donc pas de le récupérer depuis le bundle (que ce soit via SSH ou Objection) pour le rétro-ingénierer (lire la section suivante).
### Décryptage (Manuel)
2023-06-03 13:10:46 +00:00
Contrairement à une application Android, le binaire d'une application iOS **ne peut être que désassemblé** et non décompilé.\
Lorsqu'une application est soumise à l'App Store, Apple vérifie d'abord le comportement de l'application et, avant de la publier sur l'App Store, **Apple chiffre le binaire à l'aide de** [**FairPlay**](https://developer.apple.com/streaming/fps/). Ainsi, le téléchargement du binaire depuis l'App Store est chiffré, ce qui complique les tâches de rétro-ingénierie.
Cependant, notez qu'il existe d'autres **logiciels tiers pouvant être utilisés pour obfusquer** les binaires résultants.
Pour exécuter le binaire chiffré, l'appareil doit le décrypter en mémoire. Ensuite, il est possible de **dump le binaire décrypté depuis la mémoire**.
Tout d'abord, vérifiez si le binaire est compilé avec le drapeau PIE (Position Independent Code) :
```bash
otool -Vh Original_App #Check the last word of the last line of this code
Home:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 47 6080 NOUNDEFS DYLDLINK TWOLEVEL PIE
```
Si elle est définie, vous pouvez utiliser le script [`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py) pour la supprimer avec python2 :
```bash
python change_mach_o_flags.py --no-pie Original_App
otool -Vh Hello_World
Hello_World:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION
```
Maintenant que le drapeau PIE n'est pas activé, le système d'exploitation chargera le programme à un **emplacement de départ fixe** à chaque fois. Pour trouver cet **emplacement**, vous pouvez utiliser :
```bash
otool -l Original_App | grep -A 3 LC_SEGMENT | grep -A 1 __TEXT
segname __TEXT
vmaddr 0x00004000
```
Ensuite, il est nécessaire d'extraire la plage de mémoire qui doit être dumpée :
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
cmd LC_ENCRYPTION_INFO
cmdsize 20
cryptoff 16384
cryptsize 17416192
cryptid 0
```
La valeur de **`cryptoff`** indique l'adresse de départ du contenu chiffré et **`cryptsize`** indique la taille du contenu chiffré.
Ainsi, l'`adresse de départ` pour le vidage sera `vmaddr + cryptoff` et l'`adresse de fin` sera l'`adresse de départ + cryptsize`.\
Dans ce cas : `adresse_de_départ = 0x4000 + 0x4000 = 0x8000` \_\_ et `adresse_de_fin = 0x8000 + 0x109c000 = 0x10a4000`
Avec ces informations, il suffit d'exécuter l'application sur l'appareil jailbreaké, de se connecter au processus avec gdb (`gdb -p <pid>`) et de vider la mémoire :
```bash
dump memory dump.bin 0x8000 0x10a4000
```
Félicitations ! Vous avez déchiffré la section chiffrée dans dump.bin. Maintenant, **transférez cette sauvegarde sur votre ordinateur et remplacez la section chiffrée par la version déchiffrée** :
```bash
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
```
Il reste une étape à accomplir. L'application **indique** toujours dans ses métadonnées qu'elle est **cryptée**, mais ce n'est pas le cas. Ensuite, lors de l'exécution, l'appareil va essayer de décrypter la section déjà décryptée et cela va échouer.\
Cependant, vous pouvez utiliser des outils comme [**MachOView**](https://sourceforge.net/projects/machoview/) pour modifier cette information. Il suffit d'ouvrir le binaire et de définir le **cryptid** à 0 :
![](<../../.gitbook/assets/image (470).png>)
### Décryptage (Automatiquement)
#### frida-ios-dump
2021-07-19 10:18:19 +00:00
2023-06-03 13:10:46 +00:00
Vous pouvez utiliser des outils comme [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) pour **supprimer automatiquement le chiffrement d'une application**.
Tout d'abord, assurez-vous que la configuration dans **Frida-ios-dump** `dump.py` est définie soit sur localhost avec le port 2222 lorsque vous utilisez **iproxy**, soit sur l'adresse IP réelle et le port de l'appareil à partir duquel vous souhaitez extraire le binaire.
Maintenant, vous pouvez utiliser en toute sécurité l'outil pour **énumérer** les **applications** **installées** :
```bash
$ python dump.py -l
PID Name Identifier
---- --------------- -------------------------------------
860 Cydia com.saurik.Cydia
1130 Settings com.apple.Preferences
685 Mail com.apple.mobilemail
834 Telegram ph.telegra.Telegraph
- Stocks com.apple.stocks
...
```
et vous pouvez **extraire** **un** des binaires répertoriés :
```bash
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Start the target app ph.telegra.Telegraph
Dumping Telegram to /var/folders/qw/gz47_8_n6xx1c_lwq7pq5k040000gn/T
[frida-ios-dump]: HockeySDK.framework has been loaded.
[frida-ios-dump]: Load Postbox.framework success.
[frida-ios-dump]: libswiftContacts.dylib has been dlopen.
...
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftsimd.dylib
libswiftsimd.dylib.fid: 100%|██████████| 343k/343k [00:00<00:00, 1.54MB/s]
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftCoreData.dylib
libswiftCoreData.dylib.fid: 100%|██████████| 82.5k/82.5k [00:00<00:00, 477kB/s]
5.m4a: 80.9MB [00:14, 5.85MB/s]
0.00B [00:00, ?B/s]Generating "Telegram.ipa"
```
Après cela, le fichier `Telegram.ipa` sera créé dans votre répertoire actuel. Vous pouvez valider le succès du dump en supprimant l'application et en la réinstallant (par exemple, en utilisant [**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`). Notez que cela ne fonctionnera que sur des appareils jailbreakés, car sinon la signature ne sera pas valide.
#### flexdecrypt
2021-07-19 10:18:19 +00:00
Pour **obtenir le fichier ipa** d'une application installée, vous pouvez également utiliser l'outil [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) ou un wrapper de l'outil appelé [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**.**\
Dans tous les cas, vous devrez **installer flexdecrypt sur l'appareil** en exécutant quelque chose comme :
2021-07-19 10:18:19 +00:00
```markup
wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb
dpkg -i flexdecrypt.deb
rm flexdecrypt.deb
```
2023-06-03 13:10:46 +00:00
et pour utiliser **flexdump** :
2021-07-19 10:18:19 +00:00
```bash
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list #List apps
flexdump dump Twitter.app #Create .ipa file from app
```
#### bagbak
Encore un décrypteur d'application basé sur Frida. Nécessite un appareil iOS jailbreaké et [frida.re](https://www.frida.re/)
```bash
bagbak --raw Chrome
```
#### r2flutch
[**r2flutch**](https://github.com/as0ler/r2flutch) est un outil qui utilise **radare** et **frida** pour **décrypter** et **extraire** les applications iOS.
2023-06-03 13:10:46 +00:00
Consultez le **github** pour plus d'informations.
## Installation des applications
Lorsque vous installez une application sans utiliser l'App Store d'Apple, on parle de **sideloading**. Il existe différentes façons de faire du sideloading, qui sont décrites ci-dessous. Sur l'appareil iOS, le processus d'installation réel est ensuite géré par le **démon installd**, qui va **décompresser** et **installer** l'application. Pour intégrer des services d'application ou être installées sur un appareil iOS, toutes les **applications doivent être signées avec un certificat délivré par Apple**. Cela signifie que l'application ne peut être installée qu'après une vérification réussie de la signature du code. Sur un téléphone jailbreaké, cependant, vous pouvez **contourner cette fonctionnalité de sécurité avec** [**AppSync**](http://repo.hackyouriphone.org/appsyncunified), un package disponible dans le magasin Cydia. Il contient de nombreuses applications utiles qui exploitent les privilèges root fournis par le jailbreak pour exécuter des fonctionnalités avancées. **AppSync est un tweak qui patche installd**, permettant l'installation de packages IPA signés de manière frauduleuse.
2023-06-03 13:10:46 +00:00
Différentes méthodes existent pour installer un package IPA sur un appareil iOS, qui sont décrites en détail ci-dessous.
2023-06-03 13:10:46 +00:00
> Veuillez noter qu'iTunes n'est plus disponible dans macOS Catalina. Si vous utilisez une version plus ancienne de macOS, iTunes est toujours disponible, mais depuis iTunes 12.7, il n'est pas possible d'installer des applications.
#### Cydia Impactor
[Cydia Impactor](http://www.cydiaimpactor.com) a été initialement créé pour jailbreaker les iPhones, mais a été réécrit pour signer et installer des packages IPA sur les appareils iOS via le sideloading (et même des fichiers APK sur les appareils Android). Cydia Impactor est disponible pour Windows, macOS et Linux. Un [guide étape par étape et des étapes de dépannage sont disponibles sur yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
#### libimobiledevice
Sur Linux et macOS, vous pouvez également utiliser [libimobiledevice](https://www.libimobiledevice.org), une bibliothèque de protocoles logiciels multiplateformes et un ensemble d'outils pour la communication native avec les appareils iOS. Cela vous permet d'installer des applications via une connexion USB en exécutant ideviceinstaller. La connexion est mise en œuvre avec le démon de multiplexage USB [usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux), qui fournit un tunnel TCP via USB.
Le package pour libimobiledevice sera disponible dans votre gestionnaire de paquets Linux. Sur macOS, vous pouvez installer libimobiledevice via brew:
```bash
$ brew install libimobiledevice
$ brew install ideviceinstaller
```
Après l'installation, vous disposez de plusieurs nouveaux outils en ligne de commande, tels que `ideviceinfo`, `ideviceinstaller` ou `idevicedebug`.
```bash
# The following command will show detailed information about the iOS device connected via USB.
$ ideviceinfo
# The following command will install the IPA to your iOS device.
$ ideviceinstaller -i iGoat-Swift_v1.0-frida-codesigned.ipa
...
Install: Complete
# The following command will start the app in debug mode, by providing the bundle name. The bundle name can be found in the previous command after "Installing".
$ idevicedebug -d run OWASP.iGoat-Swift
```
#### ipainstaller
2023-06-03 13:10:46 +00:00
L'IPA peut également être installé directement sur l'appareil iOS via la ligne de commande avec [ipainstaller](https://github.com/autopear/ipainstaller). Après avoir copié le fichier sur l'appareil, par exemple via scp, vous pouvez exécuter ipainstaller avec le nom de fichier de l'IPA :
```bash
$ ipainstaller App_name.ipa
```
#### ios-deploy
Sur macOS, vous pouvez également utiliser l'outil **ios-deploy** pour installer des applications iOS à partir de la ligne de commande. Vous devrez décompresser votre IPA car ios-deploy utilise les bundles d'applications pour installer les applications.
```bash
$ unzip Name.ipa
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v
```
Après l'installation de l'application sur l'appareil iOS, vous pouvez simplement la démarrer en ajoutant le drapeau `-m` qui lancera directement le débogage sans réinstaller l'application.
```bash
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v -m
```
#### Xcode
2023-06-03 13:10:46 +00:00
Il est également possible d'utiliser l'IDE Xcode pour installer des applications iOS en suivant les étapes suivantes :
1. Lancez Xcode
2. Sélectionnez **Window/Devices and Simulators**
3. Sélectionnez l'appareil iOS connecté et cliquez sur le signe **+** dans **Installed Apps**.
#### Autoriser l'installation d'une application sur un appareil non iPad
Parfois, une application peut nécessiter d'être utilisée sur un appareil iPad. Si vous n'avez que des appareils iPhone ou iPod touch, vous pouvez forcer l'application à accepter d'être installée et utilisée sur ce type d'appareils. Vous pouvez le faire en modifiant la valeur de la propriété **UIDeviceFamily** à la valeur **1** dans le fichier **Info.plist**.
```markup
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
</array>
</dict>
</plist>
```
Il est important de noter que modifier cette valeur rompra la signature originale du fichier IPA, vous devez donc resigner l'IPA, après la mise à jour, afin de l'installer sur un appareil sur lequel la validation de la signature n'a pas été désactivée.
Cette méthode de contournement peut ne pas fonctionner si l'application nécessite des fonctionnalités spécifiques aux iPad modernes alors que votre iPhone ou iPod est un peu plus ancien.
2022-04-28 16:01:33 +00:00
Les valeurs possibles pour la propriété [UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/uid/TP40009252-SW11) peuvent être trouvées dans la documentation du développeur Apple.
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>