iOS Pentesting without Jailbreak

Reading time: 8 minutes

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

Idée principale

Les applications signées avec l'entitlement get_task_allow permettent aux applications tierces d'exécuter une fonction appelée task_for_pid() avec l'ID de processus de l'application initiale comme argument afin d'obtenir le port de tùche sur celui-ci (pouvoir le contrÎler et accéder à sa mémoire).

Cependant, ce n'est pas aussi simple que de simplement récupérer l'IPA, de le re-signer avec l'entitlement, et de le flasher à nouveau sur votre appareil. Cela est dû à la protection FairPlay. Lorsque la signature de l'application change, la clé DRM (Digital Rights Management) est invalidée et l'application ne fonctionnera pas.

Avec un ancien appareil jailbreaké, il est possible d'installer l'IPA, de le déchiffrer en utilisant votre outil préféré (comme Iridium ou frida-ios-dump), et de le récupérer de l'appareil. Cependant, si possible, il est recommandé de demander simplement au client l'IPA déchiffré.

Obtenir l'IPA déchiffré

Obtenez-le d'Apple

  1. Installez l'application Ă  tester sur l'iPhone
  2. Installez et lancez Apple Configurator sur votre macos
  3. Ouvrez Terminal sur votre Mac, et cd Ă  /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps. L'IPA apparaĂźtra dans ce dossier plus tard.
  4. Vous devriez voir votre appareil iOS. Double-cliquez dessus, puis cliquez sur Ajouter + → Applications dans la barre de menu en haut.
  5. AprÚs avoir cliqué sur Ajouter, Configurator téléchargera l'IPA depuis Apple et tentera de le pousser vers votre appareil. Si vous avez suivi ma recommandation précédente et installé l'IPA, une invite vous demandant de réinstaller l'application apparaßtra.
  6. L'IPA devrait ĂȘtre tĂ©lĂ©chargĂ© dans /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps d'oĂč vous pouvez le rĂ©cupĂ©rer.

Vérifiez https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed pour des informations plus détaillées sur ce processus.

Déchiffrer l'application

Pour déchiffrer l'IPA, nous allons l'installer. Cependant, si vous avez un ancien iPhone jailbreaké, il est possible que sa version ne soit pas prise en charge par l'application, car généralement les applications ne prennent en charge que les derniÚres versions.

Donc, pour l'installer, dézippez simplement l'IPA :

bash
unzip redacted.ipa -d unzipped

Vérifiez le Info.plist pour la version minimale prise en charge et si votre appareil est plus ancien que cela, changez la valeur pour qu'elle soit prise en charge.

Rezippez l'IPA :

bash
cd unzipped
zip -r ../no-min-version.ipa *

Ensuite, installez l'IPA par exemple avec :

bash
ideviceinstaller -i no-min-version.ipa -w

Notez que vous pourriez avoir besoin de AppSync Unified tweak de Cydia pour éviter toute erreur invalid signature.

Une fois installé, vous pouvez utiliser Iridium tweak de Cydia afin d'obtenir l'IPA décrypté.

Patch des droits et re-signature

Pour re-signer l'application avec le droit get-task-allow, plusieurs outils sont disponibles comme app-signer, codesign et iResign. app-signer a une interface trĂšs conviviale qui permet de re-signer trĂšs facilement un fichier IPA en indiquant l'IPA Ă  re-signer, de le mettre get-task-allow et le certificat et le profil de provisionnement Ă  utiliser.

Concernant le certificat et les profils de signature, Apple propose des profils de signature de dĂ©veloppeur gratuits pour tous les comptes via Xcode. Il suffit de crĂ©er une application et de configurer un. Ensuite, configurez l'iPhone pour faire confiance aux applications de dĂ©veloppeur en naviguant vers Settings → Privacy & Security, et cliquez sur Developer Mode.

Avec l'IPA re-signé, il est temps de l'installer sur l'appareil pour le pentester :

bash
ideviceinstaller -i resigned.ipa -w

Activer le mode développeur (iOS 16+)

Depuis iOS 16, Apple a introduit le mode développeur : tout binaire qui porte get_task_allow ou est signé avec un certificat de développement refusera de se lancer tant que le mode développeur n'est pas activé sur l'appareil. Vous ne pourrez également pas attacher Frida/LLDB à moins que ce drapeau ne soit activé.

  1. Installez ou poussez n'importe quel IPA signé par un développeur sur le téléphone.
  2. AccĂ©dez Ă  RĂ©glages → ConfidentialitĂ© et sĂ©curitĂ© → Mode dĂ©veloppeur et activez-le.
  3. L'appareil redémarrera ; aprÚs avoir saisi le code d'accÚs, vous serez invité à activer le mode développeur.

Le mode dĂ©veloppeur reste actif jusqu'Ă  ce que vous le dĂ©sactiviez ou que vous rĂ©initialisiez le tĂ©lĂ©phone, donc cette Ă©tape n'a besoin d'ĂȘtre effectuĂ©e qu'une seule fois par appareil. La documentation d'Apple explique les implications en matiĂšre de sĂ©curitĂ©.

Options modernes de sideloading

Il existe maintenant plusieurs façons matures de sideloader et de maintenir les IPAs re-signés à jour sans jailbreak :

OutilExigencesForcesLimitations
AltStore 2 / SideStoreCompagnon macOS/Windows/Linux qui re-signe l'IPA tous les 7 jours avec un profil de dĂ©veloppement gratuitRechargement automatique via Wi-Fi, fonctionne jusqu'Ă  iOS 17Besoin d'un ordinateur sur le mĂȘme rĂ©seau, limite de 3 applications imposĂ©e par Apple
TrollStore 1/2Appareil sous iOS 14 – 15.4.1 vulnĂ©rable au bug CoreTrustSignature permanente (pas de limite de 7 jours) ; aucun ordinateur requis une fois installĂ©Non pris en charge sur iOS 15.5+ (bug corrigĂ©)

Pour des pentests de routine sur les versions iOS actuelles, Alt/Side-Store sont généralement le choix le plus pratique.

Hooking / instrumentation dynamique

Vous pouvez hooker votre application exactement comme sur un appareil jailbreaké une fois qu'elle est signée avec get_task_allow et que le mode développeur est activé :

bash
# Spawn & attach with objection
objection -g "com.example.target" explore

# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause

Les récentes versions de Frida (>=16) gÚrent automatiquement l'authentification des pointeurs et d'autres atténuations d'iOS 17, donc la plupart des scripts existants fonctionnent immédiatement.

Analyse dynamique automatisée avec MobSF (sans jailbreak)

MobSF peut instrumenter un IPA signĂ© par un dĂ©veloppeur sur un appareil rĂ©el en utilisant la mĂȘme technique (get_task_allow) et fournit une interface web avec un navigateur de systĂšme de fichiers, capture de trafic et console Frida【】. Le moyen le plus rapide est de faire fonctionner MobSF dans Docker, puis de connecter votre iPhone via USB :

bash
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA

MobSF déploiera automatiquement le binaire, activera un serveur Frida à l'intérieur du sandbox de l'application et générera un rapport interactif.

iOS 17 & avertissements sur le mode verrouillage

  • Mode verrouillage (RĂ©glages → ConfidentialitĂ© & SĂ©curitĂ©) bloque le chargeur dynamique de charger des bibliothĂšques dynamiques non signĂ©es ou signĂ©es de maniĂšre externe. Lors de tests sur des appareils qui pourraient avoir ce mode activĂ©, assurez-vous qu'il est dĂ©sactivĂ© ou vos sessions Frida/objection se termineront immĂ©diatement.
  • L'authentification par pointeur (PAC) est appliquĂ©e Ă  l'Ă©chelle du systĂšme sur les appareils A12+. Frida ≄16 gĂšre de maniĂšre transparente le stripping PAC — il suffit de garder Ă  jour Ă  la fois frida-server et la chaĂźne d'outils Python/CLI lorsque qu'une nouvelle version majeure d'iOS est publiĂ©e.

Références

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