iOS Opérations de test de base
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Résumé de l’identification et de l’accès aux appareils iOS
Identifier l’UDID d’un appareil iOS
Pour identifier de façon unique un appareil iOS, on utilise une séquence de 40 chiffres connue sous le nom d’UDID. Sur macOS Catalina ou versions ultérieures, il se trouve dans l’application Finder, car iTunes n’est plus présent. L’appareil, une fois connecté via USB et sélectionné dans Finder, révèle son UDID parmi d’autres informations lorsque l’on clique sur les détails sous son nom.
Pour les versions de macOS antérieures à Catalina, iTunes permet de trouver l’UDID. Des instructions détaillées sont disponibles ici.
Les outils en ligne de commande offrent des méthodes alternatives pour récupérer l’UDID :
- Utilisation de l’outil I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Utilisation de
ideviceinstallerpour macOS (et Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Utilisation de
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Utilisation de
instrumentspour lister les appareils :
$ instruments -s devices
Accès au shell de l’appareil
SSH access est activé en installant le OpenSSH package post-jailbreak, permettant des connexions via ssh root@<device_ip_address>. Il est crucial de changer les mots de passe par défaut (alpine) pour les utilisateurs root et mobile afin de sécuriser l’appareil.
SSH over USB devient nécessaire en l’absence de Wi‑Fi, en utilisant iproxy pour mapper les ports de l’appareil pour les connexions SSH. Cette configuration permet l’accès SSH via USB en exécutant :
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, like NewTerm 2, facilitent l’interaction directe avec l’appareil, ce qui est particulièrement utile pour le dépannage. Reverse SSH shells peuvent également être établis pour un accès distant depuis l’ordinateur hôte.
Réinitialisation des mots de passe oubliés
Pour réinitialiser un mot de passe oublié vers la valeur par défaut (alpine), il est nécessaire d’éditer le fichier /private/etc/master.passwd. Il faut remplacer le hash existant par le hash de alpine à côté des entrées des utilisateurs root et mobile.
Techniques de transfert de données
Transfert des fichiers de données d’applications
Archivage et récupération via SSH et SCP : Il est simple d’archiver le répertoire Data de l’application avec tar puis de le transférer avec scp. La commande ci‑dessous archive le répertoire Data dans un fichier .tgz, qui est ensuite récupéré depuis l’appareil :
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Outils d’interface graphique
Utilisation de iFunbox et iExplorer: Ces outils GUI sont utiles pour gérer les fichiers sur les appareils iOS. Cependant, à partir d’iOS 8.4, Apple a restreint l’accès de ces outils au sandbox de l’application sauf si l’appareil est jailbroken.
Utilisation d’Objection pour la gestion des fichiers
Shell interactif avec Objection: Lancer objection donne accès au répertoire Bundle d’une app. À partir de là, vous pouvez naviguer vers le répertoire Documents de l’app et gérer les fichiers, y compris les télécharger et les téléverser depuis et vers l’appareil iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Obtention et extraction des applications
Acquisition du fichier IPA
Over-The-Air (OTA) Distribution Link : Les applications distribuées pour les tests via OTA peuvent être téléchargées en utilisant l’ITMS services asset downloader tool, qui s’installe via npm et permet d’enregistrer le fichier IPA localement.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Extraction du binaire de l’application
- From an IPA : Dézippez l’IPA pour accéder au binaire d’application déchiffré.
- From a Jailbroken Device : Installez l’application et extrayez le binaire déchiffré depuis la mémoire.
Processus de déchiffrement
Manual Decryption Overview : Les binaires d’apps iOS sont chiffrés par Apple en utilisant FairPlay. Pour reverse-engineer, il faut dump le binaire déchiffré depuis la mémoire. Le processus de déchiffrement implique de vérifier le PIE flag, d’ajuster les memory flags, d’identifier la section chiffrée, puis de dumper et remplacer cette section par sa forme déchiffrée.
Checking and Modifying PIE Flag :
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identification de la section chiffrée et Dumping Memory:
Déterminez les adresses de début et de fin de la section chiffrée en utilisant otool et dump the memory depuis l’appareil jailbroken en utilisant gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Écraser la section chiffrée :
Remplacez la section chiffrée dans le binaire de l’application d’origine par le dump déchiffré.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalisation du déchiffrement : Modifiez les métadonnées du binaire pour indiquer l’absence de chiffrement en utilisant des outils comme MachOView, en réglant cryptid sur 0.
Déchiffrement (automatiquement)
frida-ios-dump
L’frida-ios-dump est utilisé pour déchiffrer et extraire automatiquement des apps depuis des appareils iOS. Initialement, il faut configurer dump.py pour se connecter à l’appareil iOS, ce qui peut se faire via localhost sur le port 2222 avec iproxy ou directement via l’adresse IP et le port de l’appareil.
Les applications installées sur l’appareil peuvent être listées avec la commande :
$ python dump.py -l
Pour dump une application spécifique, telle que Telegram, la commande suivante est utilisée :
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Cette commande lance le dump de l’application, créant un fichier Telegram.ipa dans le répertoire courant. Ce processus convient aux jailbroken devices, car les applications non signées ou signées de manière factice peuvent être réinstallées à l’aide d’outils comme ios-deploy.
frida-ipa-extract
Extracteur d’IPA basé sur Frida pour jailbroken devices ; utilise des sessions Frida USB et SSH/SFTP optionnels pour des transferts plus rapides.
- Prérequis : Python 3.9+,
frida,paramiko, jailbroken device with frida-server (OpenSSH for SSH mode). - Installation :
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Utilisation:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Options :
-f <bundle>démarre/s’attache (ou--pidpour le PID) ;-odéfinit le nom de sortie.-Uutilise USB ;-H/-P/-u/-pouvre un tunnel SSH versfrida-serversur le port 27042 et récupère via SFTP (peut être combiné avec-U).--sandboxextrait la sandbox ;--no-resumemaintient l’application suspendue pour éviter les plantages et les relances par un processus système si la session se termine. - Dépannage :
Frida attach timed out→ utilisez-fou--no-resume;script has been destroyed→--no-resumeou transfert SSH ;No running apps found→ démarrez ou spawn l’application.
flexdecrypt
L’outil flexdecrypt, ainsi que son wrapper flexdump, permettent l’extraction de fichiers IPA depuis des applications installées. Les commandes d’installation pour flexdecrypt sur l’appareil incluent le téléchargement et l’installation du paquet .deb. flexdump peut être utilisé pour lister et dump des apps, comme montré dans les commandes ci-dessous :
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
flexdump dump Twitter.app
bagbak
bagbak, un autre outil basé sur Frida, requiert un appareil jailbroken pour le décryptage de l’app :
bagbak --raw Chrome
r2flutch
r2flutch, utilisant à la fois radare et frida, sert à décrypter et dumper des apps. Plus d’informations sont disponibles sur sa GitHub page.
Installation des applications
Sideloading désigne l’installation d’applications en dehors de l’App Store officiel. Ce processus est géré par le installd daemon et nécessite que les apps soient signées avec un certificat délivré par Apple. Les appareils jailbreakés peuvent contourner cela via AppSync, permettant l’installation de packages IPA faussement signés.
Outils de Sideloading
-
Cydia Impactor : un outil pour signer et installer des fichiers IPA sur iOS et des APK sur Android. Des guides et solutions se trouvent sur yalujailbreak.net.
-
libimobiledevice : une bibliothèque pour Linux et macOS permettant de communiquer avec des appareils iOS. Des commandes d’installation et des exemples d’utilisation pour ideviceinstaller sont fournis pour installer des apps via USB.
-
ipainstaller : cet outil en ligne de commande permet l’installation directe d’apps sur des appareils iOS.
-
ios-deploy : pour les utilisateurs macOS, ios-deploy installe des apps iOS depuis la ligne de commande. Le dézippage de l’IPA et l’utilisation du flag
-mpour lancer directement l’app font partie du processus. -
Xcode : utilisez Xcode pour installer des apps en allant dans Window/Devices and Simulators et en ajoutant l’app à Installed Apps.
Autoriser l’installation d’applications sur des appareils non-iPad
Pour installer des applications spécifiques à l’iPad sur des iPhone ou iPod touch, la valeur UIDeviceFamily dans le fichier Info.plist doit être modifiée à 1. Cette modification nécessite toutefois de re-signer le fichier IPA en raison des vérifications de signature.
Remarque : Cette méthode peut échouer si l’application exige des capacités propres à des modèles d’iPad plus récents lorsque vous utilisez un iPhone ou un iPod touch plus ancien.
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


