🏔️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/ProperTreearrow-up-right

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. _something est 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