iOS Basic Testing Operations

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Résumé de l'identification et de l'accès aux appareils iOS

Identification de l'UDID d'un appareil iOS

Pour identifier de manière unique un appareil iOS, une séquence de 40 chiffres appelée UDID est utilisée. Sur macOS Catalina ou ultérieur, cela peut être trouvé 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 les détails sous son nom sont cliqués.

Pour les versions de macOS antérieures à Catalina, iTunes facilite la découverte de l'UDID. Des instructions détaillées peuvent être trouvées ici.

Les outils en ligne de commande offrent des méthodes alternatives pour récupérer l'UDID :

  • En utilisant 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 répertorier les appareils :

$ instruments -s devices

Accès au Shell du Dispositif

L'accès SSH est activé en installant le paquet OpenSSH après le jailbreak, permettant des connexions via ssh root@<adresse_ip_du_dispositif>. Il est crucial de changer les mots de passe par défaut (alpine) pour les utilisateurs root et mobile afin de sécuriser le dispositif.

SSH via USB devient nécessaire en l'absence de Wi-Fi, en utilisant iproxy pour mapper les ports du dispositif pour les connexions SSH. Cette configuration permet l'accès SSH via USB en exécutant :

$ iproxy 2222 22
$ ssh -p 2222 root@localhost

Applications de shell sur l'appareil, comme NewTerm 2, facilitent l'interaction directe avec l'appareil, particulièrement utile pour le dépannage. Les coquilles SSH inversées peuvent également être établies pour un accès à distance depuis l'ordinateur hôte.

Réinitialisation des mots de passe oubliés

Pour réinitialiser un mot de passe oublié au mot de passe par défaut (alpine), il est nécessaire de modifier le fichier /private/etc/master.passwd. Cela implique de remplacer le hachage existant par le hachage pour alpine à côté des entrées des utilisateurs root et mobile.

Techniques de transfert de données

Transfert de fichiers de données d'application

Archivage et Récupération via SSH et SCP: Il est simple d'archiver le répertoire de données de l'application en utilisant tar puis de le transférer en utilisant scp. La commande ci-dessous archive le répertoire de données dans un fichier .tgz, qui est ensuite extrait de 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 Utilisateur 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 bac à sable de l'application sauf si le périphérique est jailbreaké.

Utilisation d'Objection pour la Gestion de Fichiers

Shell Interactif avec Objection: Le lancement d'objection fournit un accès au répertoire Bundle d'une application. À partir de là, vous pouvez naviguer jusqu'au répertoire Documents de l'application et gérer les fichiers, y compris les télécharger et les téléverser vers et depuis 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

Lien de Distribution Over-The-Air (OTA) : Les applications distribuées pour les tests via OTA peuvent être téléchargées en utilisant l'outil de téléchargement d'actifs des services ITMS, qui est installé via npm et utilisé pour sauvegarder 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. À partir d'un IPA : Décompressez l'IPA pour accéder au binaire de l'application déchiffré.

  2. À partir d'un appareil jailbreaké : Installez l'application et extrayez le binaire déchiffré de la mémoire.

Processus de déchiffrement

Aperçu du déchiffrement manuel : Les binaires des applications iOS sont chiffrés par Apple en utilisant FairPlay. Pour les rétroconcevoir, il est nécessaire de récupérer le binaire déchiffré de la mémoire. Le processus de déchiffrement implique de vérifier le drapeau PIE, d'ajuster les drapeaux de mémoire, d'identifier la section chiffrée, puis de la récupérer et de la remplacer par sa forme déchiffrée.

Vérification et modification du drapeau PIE :

otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World

Identifier la section chiffrée et le vidage de mémoire :

Déterminez les adresses de début et de fin de la section chiffrée en utilisant otool et effectuez le vidage de mémoire depuis l'appareil jailbreaké en utilisant gdb.

otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000

Remplacement de 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 : Modifier les métadonnées du binaire pour indiquer l'absence de chiffrement en utilisant des outils comme MachOView, en définissant cryptid sur 0.

Déchiffrement (Automatique)

frida-ios-dump

L'outil frida-ios-dump est utilisé pour déchiffrer et extraire automatiquement des applications des appareils iOS. Initialement, il faut configurer dump.py pour se connecter à l'appareil iOS, ce qui peut être fait via localhost sur le port 2222 via iproxy ou directement via l'adresse IP et le port de l'appareil.

Les applications installées sur l'appareil peuvent être répertoriées avec la commande :

$ python dump.py -l

Pour extraire une application spécifique, telle que Telegram, la commande suivante est utilisée :

$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

Ce commandement initie le vidage de l'application, ce qui entraîne la création d'un fichier Telegram.ipa dans le répertoire actuel. Ce processus est adapté aux appareils jailbreakés, car les applications non signées ou faussement signées peuvent être réinstallées à l'aide d'outils tels que ios-deploy.

flexdecrypt

L'outil flexdecrypt, avec son wrapper flexdump, permet l'extraction de fichiers IPA à partir d'applications installées. Les commandes d'installation pour flexdecrypt sur l'appareil comprennent le téléchargement et l'installation du package .deb. flexdump peut être utilisé pour répertorier et vider les applications, comme indiqué 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, nécessite un appareil jailbreaké pour le décryptage de l'application:

bagbak --raw Chrome

r2flutch

r2flutch, utilisant à la fois radare et frida, sert à la décryption et au dumping d'applications. Plus d'informations peuvent être trouvées sur sa page GitHub.

Installation des Applications

Sideloading fait référence à l'installation d'applications en dehors de l'App Store officiel. Ce processus est géré par le démon installd et nécessite que les applications soient signées avec un certificat délivré par Apple. Les appareils jailbreakés peuvent contourner cela grâce à AppSync, permettant l'installation de packages IPA signés de manière frauduleuse.

Outils de Sideloading

  • Cydia Impactor : Un outil pour signer et installer des fichiers IPA sur iOS et des fichiers APK sur Android. Des guides et des solutions de dépannage peuvent être trouvés sur yalujailbreak.net.

  • libimobiledevice : Une bibliothèque pour Linux et macOS pour communiquer avec les appareils iOS. Des commandes d'installation et des exemples d'utilisation pour ideviceinstaller sont fournis pour installer des applications via USB.

  • ipainstaller : Cet outil en ligne de commande permet l'installation directe d'applications sur des appareils iOS.

  • ios-deploy : Pour les utilisateurs de macOS, ios-deploy installe des applications iOS depuis la ligne de commande. Le dézippage de l'IPA et l'utilisation du drapeau -m pour le lancement direct de l'application font partie du processus.

  • Xcode : Utilisez Xcode pour installer des applications en naviguant vers Window/Devices and Simulators et en ajoutant l'application à Installed Apps.

Autoriser l'Installation d'Applications sur des Appareils Non-iPad

Pour installer des applications spécifiques à l'iPad sur des appareils iPhone ou iPod touch, la valeur UIDeviceFamily dans le fichier Info.plist doit être modifiée en 1. Cette modification nécessite cependant de resigner le fichier IPA en raison des vérifications de validation de signature.

Remarque : Cette méthode peut échouer si l'application exige des fonctionnalités exclusives aux nouveaux modèles d'iPad tout en utilisant un ancien iPhone ou iPod touch.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour