🏔️Analyse statique (iOS)
Outils
ProperTree
ProperTree créé une interface graphique permettant de lire les fichier plist sur des PC linux.
ressource: https://github.com/corpnewt/ProperTree
Objective-C
Analyse des fichiers headers (file.h)
Éléments clés
Héritage de classes : L’héritage permet à une classe d’en créer une autre en réutilisant ses caractéristiques. La classe fille hérite des variables et méthodes de la classe parente, ce qui évite la duplication et facilite l’évolution du code.
Propriétés : Une propriété représente une donnée appartenant à un objet, souvent avec un accès contrôlé (lecture/écriture). Elle sert à exposer l’état d’un objet proprement, parfois via des getters/setters.
Variables : Une variable est un espace mémoire qui stocke une valeur. Elle peut être locale, globale ou membre d’une classe, et sert à conserver des informations pendant l’exécution.
Objets: Un objet est une instance concrète d’une classe.
_somethingest une convention courante pour désigner une variable d’instance privée (notamment en Objective-C ou Swift).Méthodes : Les méthodes sont des fonctions définies dans une classe. Elles décrivent le comportement des objets et peuvent lire ou modifier leurs propriétés.
Déterminer les surfaces d'attaque potentielles
Recherchez les méthodes qui gèrent les requêtes réseau , la sérialisation des données , le chiffrement ou les entrées utilisateur . Ces méthodes sont souvent cruciales pour les tests de sécurité.
Recherchez les propriétés telles que NSString , NSDictionary , NSArray ou NSData qui stockent des données sensibles, comme des mots de passe ou des jetons d'API.
Analyse des Méthodes
Une fois que vous avez identifié les méthodes dans les fichiers headers, réfléchissez à ce qu'elles font :
Méthodes réseau : Les méthodes telles que `(void)fetchDataFromURL:(NSURL *)url` indiquent que l’application communique avec des serveurs externes. Examinez ces méthodes afin de détecter d’éventuels problèmes, comme des requêtes HTTP non sécurisées ou une gestion incorrecte des réponses.
Authentification et données utilisateur : des méthodes comme `(void)loginWithUsername:(NSString *)username password:(NSString *)password` ou des propriétés comme `userToken` peuvent indiquer où la logique d’authentification est exécutée. Ces éléments sont importants pour identifier les vulnérabilités telles que la gestion des mots de passe faibles ou le stockage non sécurisé d’informations sensibles.
Swift
Analyse des classes et méthodes
Éléments clés
Noms des classes : Les noms des classes permettent d’identifier l’architecture de l’application. Des noms tels que UserManager , NetworkClient ou EncryptionHandler indiquent clairement les composants clés de l’application.
Noms des champs : La classe contient des champs tels que usernameTextField et passwordTextField etc.
Noms des méthodes : Le nom des méthodes permet de comprendre leur fonction. Par exemple, `func loginButtonTapped(_:)` indique une logique d’authentification de l’utilisateur, tandis que `func sendRequestOverUrl(_:)` peut indiquer une requête réseau. L'analyse de ces méthodes peut permettre de cibler plus efficacement les fonctions les plus sensibles.
Désassembler le binaire avec Ghidra
Pour le code bas niveau, il est nécessaire d'utiliser un outil de reverse engineering comme Ghidra:
Méthodes de chiffrement/hashing faibles
L'utilisations incorrectes des algorithmes de chiffrement peuvent entraîner l'exposition de données sensibles, de clés provées, des broken authentication, une session non sécurisée ou encore une attaque par usurpation d'identité.
Commandes grep intéressantes
Fonctions de randomisation faibles
Fonction sensibles
Permissions
Comme pour les appreils android, iOS utilise un système de permissions pour demander l'approbation aux utilisateur d'utiliser une ressource telle que la caméra, les contacts ou des fichiers externes. Ces permissions sont définies dans le fichier info.plist
Mis à jour