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

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 ideviceinstaller pour 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 instruments pour 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

  1. From an IPA : Dézippez l’IPA pour accéder au binaire d’application déchiffré.
  2. 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 --pid pour le PID) ; -o définit le nom de sortie. -U utilise USB ; -H/-P/-u/-p ouvre un tunnel SSH vers frida-server sur le port 27042 et récupère via SFTP (peut être combiné avec -U). --sandbox extrait la sandbox ; --no-resume maintient 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 -f ou --no-resume ; script has been destroyed--no-resume ou 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 -m pour 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

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