Que fait Analyse de la sécurité des applications iOS avec Objection ?
Quand utiliser cette compétence
Utilisez cette compétence lorsque :
- Vous effectuez une évaluation de sécurité runtime d'applications iOS lors de tests d'intrusion autorisés
- Vous inspectez le keychain iOS, le système de fichiers et la mémoire pour détecter une exposition de données sensibles
- Vous contournez les contrôles de sécurité côté client (SSL pinning, détection de jailbreak) lors de tests de sécurité
- Vous évaluez le comportement d'une application iOS au runtime sans accès au code source
N'utilisez pas cette compétence sur des appareils de production sans autorisation explicite -- Objection modifie le comportement runtime de l'application et peut déclencher la surveillance de sécurité.
Prérequis
- Python 3.10+ avec pip
- Objection installé :
pip install objection - Frida installé :
pip install frida-tools - Appareil iOS cible (jailbreaké avec le serveur Frida, ou non jailbreaké avec un IPA reconditionné)
- Pour les appareils non jailbreakés :
objection patchipapour injecter le gadget Frida dans l'IPA - macOS recommandé pour les tests iOS (Xcode, ideviceinstaller)
- Connexion USB à l'appareil cible ou serveur Frida réseau
Flux de travail
Étape 1 : Préparer l'environnement de test
Pour les appareils jailbreakés :
# Installer le serveur Frida sur l'appareil via Cydia/Sileo
# SSH sur l'appareil et démarrer le serveur Frida
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Vérifier la connectivité Frida
frida-ps -U # Lister les processus sur l'appareil connecté en USB
Pour les appareils non jailbreakés (tests autorisés) :
# Patcher l'IPA avec le gadget Frida
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# Installer l'IPA patché
ideviceinstaller -i target-patched.ipa
Étape 2 : Attacher Objection à l'application cible
# Attacher à une application en cours d'exécution par bundle ID
objection --gadget "com.target.app" explore
# Ou lancer l'application fraîchement
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
Une fois attaché, Objection fournit un REPL interactif pour l'exploration runtime.
Étape 3 : Évaluer la sécurité du stockage de données (MASVS-STORAGE)
# Vider les éléments du keychain iOS accessibles à l'application
ios keychain dump
# Lister les fichiers dans le bac à sable de l'application
ios plist cat Info.plist
env # Afficher les chemins d'environnement de l'application
# Inspecter NSUserDefaults pour détecter des données sensibles
ios nsuserdefaults get
# Lister les bases de données SQLite
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Vérifier les données sensibles dans le presse-papiers
ios pasteboard monitor
Étape 4 : Évaluer la sécurité réseau (MASVS-NETWORK)
# Désactiver l'épinglage de certificat SSL/TLS
ios sslpinning disable
# Vérifier que l'épinglage est contourné en observant le trafic dans le proxy Burp Suite
# Surveiller les appels de méthodes des classes réseau
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
Étape 5 : Inspecter l'authentification et l'autorisation (MASVS-AUTH)
# Lister toutes les classes Objective-C
ios hooking list classes
# Rechercher des classes liées à l'authentification
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Hooker les méthodes d'authentification pour observer les paramètres
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Surveiller les appels d'authentification biométrique
ios hooking watch class LAContext
Étape 6 : Évaluer les protections binaires (MASVS-RESILIENCE)
# Vérifier l'implémentation de la détection de jailbreak
ios jailbreak disable
# Simuler le contournement de la détection de jailbreak
ios jailbreak simulate
# Lister les frameworks et bibliothèques chargés
memory list modules
# Rechercher en mémoire des chaînes sensibles
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# Vider des régions mémoire spécifiques
memory dump all dump_output/
Étape 7 : Examiner l'interaction avec la plateforme (MASVS-PLATFORM)
# Lister les schémas d'URL enregistrés par l'application
ios info binary
ios bundles list_frameworks
# Hooker les gestionnaires de schémas d'URL
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Surveiller l'accès au presse-papiers
ios pasteboard monitor
# Vérifier les restrictions de clavier personnalisées
ios hooking search classes UITextField
Concepts clés
| Terme | Définition |
|---|---|
| Objection | Toolkit d'exploration mobile runtime basé sur Frida, fournissant des scripts pré-construits pour les tâches courantes de test de sécurité |
| Frida Gadget | Bibliothèque partagée injectée dans le processus de l'application pour permettre l'instrumentation Frida sans jailbreak |
| Keychain | Système de stockage sécurisé des identifiants iOS ; Objection peut vider les éléments accessibles au groupe d'accès au keychain de l'application cible |
| Contournement SSL Pinning | Modification runtime de la logique de validation des certificats pour permettre l'interception du trafic HTTPS via un proxy |
| Hooking de méthode | Interception des appels de méthodes Objective-C/Swift au runtime pour observer les arguments, les valeurs de retour et modifier le comportement |
Outils et systèmes
- Objection : Toolkit d'exploration de sécurité mobile de haut niveau basé sur Frida, avec des commandes pré-construites
- Frida : Framework d'instrumentation dynamique permettant l'injection de JavaScript dans les processus natifs des applications
- Frida-tools : Utilitaires en ligne de commande pour Frida, incluant frida-ps, frida-trace et frida-discover
- ideviceinstaller : Outil multiplateforme pour installer/gérer les applications iOS via USB
- Burp Suite : Proxy HTTP pour intercepter le trafic après le contournement du SSL pinning
Pièges courants
- Plantage de l'application lors de l'attache : Certaines applications implémentent une détection de Frida. Utilisez
--startup-commandpour hooker les vérifications anti-Frida tôt dans le cycle de vie de l'application. - Portée d'accès au keychain : Objection ne peut vider que les éléments du keychain appartenant au groupe d'accès de l'application. Les éléments système nécessitent des outils de niveau jailbreak distincts.
- Mangling des noms Swift : Les noms de méthodes Swift sont manglés dans le runtime. Utilisez
ios hooking list classesavec grep pour trouver les noms dé-manglés. - Modifications non persistantes : Toutes les modifications Objection sont limitées au runtime et réinitialisées au redémarrage de l'application. Documentez immédiatement vos découvertes.