* 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).
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.
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.
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 :
> 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.
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.
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.
> 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.
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.
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 :
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 :
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**.
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` :
[**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).
À 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é.
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.
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
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 :
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 :
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`.
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).
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.
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 :
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 :
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 :
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** :
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 :
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.
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.
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)**.**\
[**r2flutch**](https://github.com/as0ler/r2flutch) est un outil qui utilise **radare** et **frida** pour **décrypter** et **extraire** les applications iOS.
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.
> 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](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/).
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.
# 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".
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 :
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.
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.
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**.
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.
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.
* 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).