SecurityInsider
Le blog des experts sécurité Wavestone

HITB2017 - When Two-Factor Authentication is a Foe: Breaking Apple’s iCloud Keychain




Cette présentation courte (30 minutes) était assurée par Vladimir KATALOV, CEO de l’entreprise ElcomSoft basée à Moscou (Russie) et spécialisée dans la récupération de mots de passe ainsi que de l’analyse et de la restauration de systèmes protégés par chiffrement. La société ElcomSoft travaille notamment pour les entités suivantes :
  • NSA (National Security Agency);
  • EUROPOL ;
  • INTERPOL ;
  • ...  

Durant cette demi-heure, Vladimir KATALOV a présenté le modèle de chiffrement implémenté sur les équipements Apple en effectuant un focus particulier sur la récupération des secrets via les mécanismes iCloud.

Introduction

Alors que de nombreuses données sont présentes sur les smartphones (contacts, calendrier, historiques des appels…), il est parfois nécessaire de pouvoir les récupérer, notamment en cas d’investigation. 
Pour cela, l'acquisition de données (chiffrées ou non) est systématiquement la première étape avant l'extraction des secrets. Pour cela, différentes méthodes peuvent être utilisées:
  • Acquisition via JTAG / Chip-Off / Hex dump : ces procédures permettent d'extraire la mémoire des équipements via un accès physique ; elles ne s’avèrent pas exploitable lorsque les données sont chiffrées. Par ailleurs, des erreurs peuvent survenir lors la capture et provoquer la récupération d’une image corrompue voir causer des dommages sur la mémoire à extraire.
  • Acquisition logicielle : ces procédures visent à utiliser un outil logiciel permettant d’extraire la mémoire d’un équipement. En plus d’offrir des possibilités plus limitées que l’extraction physique, les compatibilités logicielles sont souvent limitées. Par ailleurs, l’utilisation d’un logiciel implique le contournement de la mire de verrouillage de l’écran.
  • Utilisation des fonctionnalités « Cloud » : cette méthode permet de récupérer les données sans nécessité d'accès physique à l'équipement via la récupération des données sauvegardées sur les interfaces de type « cloud » (ex. : iCloud, Google Drive…).

Données sauvegardées dans les Cloud

De plus en plus de données présentes sur les smartphones et autres équipements mobiles sont synchronisées sur des plateformes Cloud (proposées par les éditeurs leader tels que Google, Apple et Microsoft). Les données transmises peuvent être de différentes natures :
  • Les données de sauvegardes (« backups ») : ces données correspondent aux éléments sauvegardés pour la restauration d’un système complet. Ainsi, pour ce type de sauvegarde, la quasi-totalité des données sont transmises vers plateforme Cloud.
  • Les données de synchronisation : ces données correspondent à certaines informations partagées entre les différents appareils synchronisés sur le compte Cloud. Elles peuvent être de différentes natures (détaillées dans les sections suivantes).
  • Les données partagées : ces données correspondent aux fichiers partagés sur le Cloud ; seuls les fichiers définis par l’utilisateur sont sauvegardés (type Google Drive…).

Données de sauvegardes (backup)

Les données de sauvegardes contiennent principalement les images systèmes complètes des équipements (notamment sur Apple). En revanche, les données suivantes ne sont pas communément accessibles :
  • Données des applications tierces ;
  • Mots de passe (ou alors sur des parties additionnelles chiffrées).
Cependant, dans la majorité des cas, aucune fonctionnalité native ne permet la récupération des images sauvegardées (notamment via les interfaces Web de type iCloud) ; des outils tiers (comme celui développé par la société ElcomSoft) peuvent alors être nécessaires.

Données synchronisées

En dehors des sauvegardes, d’autres données sont automatiquement sauvegardées sur les systèmes de type Cloud via les fonctions de synchronisation, notamment:
  • Les contacts;
  • L’historique des appels;
  • Les messages (SMS, iMessage, Hangout…);
  • Les mails ;
  • Les activités Internet (historique de navigation…) ;
  • Les mots de passe ;
Bien que les données sauvegardées par cette méthode soient plus restreintes que celles relatives aux backups complets, de nombreuses données sensibles et potentiellement intéressantes peuvent être récupérées. Par ailleurs, ces données sont bien souvent répliquées sur les autres équipements qui peuvent alors constituer un autre vecteur d’attaque.

Protection du « porte-clés » Apple

La fonctionnalité de porte-clés Apple (ou Keychain) permet la conservation des secrets de l’utilisateur de manière sécurisée ; elle permet en particulier de limiter la saisie des mots de passe applicatifs (Safari, Wi-Fi…). Les mots de passe et secrets sont alors conservés dans le porte-clés et accessibles à la demande de l’utilisateur. Les méthodes de gestion des porte-clés diffèrent légèrement entre les OS :

Protection du porte-clés Apple en fonction des plateformes

Porte-clés iOS

Sur la plateforme iOS, le porte-clés est un fichier de type XML et il possède la structure suivante :


Différentes classes de protection peuvent être implémentées, notamment :

Attributs de protection des données

Note: L’attribut _ThisDeviceOnly permet de chiffrer les données à l'aide d'une clé matérielle spécifique à l’équipement. Celle-ci peut être extraite sur les périphériques 32 bits uniquement.

Fichiers de sauvegardes iTunes

L’outil iTunes développé par Apple permet d’effectuer des sauvegardes locales (sur un poste) des données présentes sur les équipements mobiles de type iPhone, iPod et iPad. De nombreuses données sont ainsi sauvegardées, notamment les certains secrets des utilisateurs (keychain).
Afin de limiter les risques de récupération des données, les secrets sont sauvegardés de façon chiffrée (via le mécanisme de chiffrement AES) et conservés dans les fichiers nommés « manifest.plist » ; la clé de chiffrement est quant à elle présente dans l’attribut « BackupKeyBag » lui-même protégé par une clé dérivée du mot de passe mis en place par l’utilisateur.

La génération de la clé de chiffrement / déchiffrement du « keyBag » est générée de la manière suivante :

Mécanismes cryptographiques implémentés en fonction des OS

Note : Une faiblesse introduite sur iOS 10.0 permettait le stockage du condensat cryptographique (sha256) du mot de passe de chiffrement dans une base de données non protégée.

Protection des données iCloud 

La majorité des données transmises vers la plateforme iCloud sont protégées via le mécanisme de chiffrement AES utilisant une clé de 128 bits. Le trousseau iCloud utilise quant à lui une clé de 256 bits afin de conserver les informations plus sensibles (données de bancaires, mots de passe…). La clé de chiffrement est conservée non chiffrée dans le bloc contenant les données sauvegardées. 
Afin de sécuriser les données conservées, certaines mesures de sécurité sont mises en place, notamment :
  • Des notifications par email sont envoyées lors d’un accès aux données (à l’exception d’un accès via un jeton d’authentification) ;
  • Un mécanisme de verrouillage des comptes est mis en place afin de limiter les accès frauduleux (blocage en cas d’activités suspectes) ;
  • Un mode d’authentification à deux facteurs est proposé ;
Note : Le jeton d’authentification peut notamment être récupéré sur un autre équipement sur lequel le même compte a été utilisé.

Protection des données sans activation de l’authentification deux facteurs

Apple propose le mode d’authentification deux facteurs mais il est possible de le désactiver ; un mot de passe d’accès au compte peut alors être défini. Le code de sécurité est en effet facultatif, cependant, si aucun code n’est défini l’utilisateur doit confirmer chaque ajout de nouvel équipement via un équipement déjà enrôlé.

L’avantage principal d’utiliser un code de sécurité réside essentiellement de l’envoi du porte-clés vers le service  « Apple Escrow » (détaillé dans la section suivante), permettant la récupération des données en cas de perte des équipements (voir des numéros de téléphone associés…) avec l’aide du service Apple. 

Note : Bien qu’aucune vulnérabilité n’impacte directement ce mode de fonctionnement, cette méthode n’est pas recommandée par Vladimir KATALOV en raison des erreurs fréquentes lors de la phase de paramétrage.

Protection des données avec activation de l’authentification deux facteurs

La mise en place du mode d’authentification deux facteurs est plus aisée que la méthode précédente, il est simplement nécessaire de choisir un numéro de téléphone sur lequel l’utilisateur recevra les notifications de confirmation. Cette manipulation ne peut pas être effectuée depuis l’interface Web du service iCloud mais uniquement depuis un équipement Apple.
Par ailleurs, afin d’ajouter un équipement sur un même compte iCloud, il est nécessaire d’entrer le code de déverrouillage de l’un des équipements précédemment enrôlés.

Fonctionnement du porte-clés iCloud

Le porte-clés iCloud offre la possibilité aux utilisateurs de synchroniser de manière sécurisée leurs mots de passe entre plusieurs appareils iOS et ordinateurs Mac (sans divulguer ces informations à Apple). Le protocole a été conçu afin de permettre une protection vis-à-vis des scénarios suivants :

  • Compromission du compte iCloud de l’utilisateur ;
  • Compromission du service iCloud (par un employé ou une attaque externe) ;
  • Accès d’un tiers aux comptes de l’utilisateur.

Cercle de confiance

Afin de permettre le partage des données entre les différents équipements, un cercle de confiance est établit entre les différents équipements (lorsque l’authentification deux facteurs est activée). Pour cela, le mécanisme suivant est utilisé :
  • Initialisation du cercle de confiance :
    • Le premier appareil établit un cercle de confiance ;
    • Le premier appareil crée une identité de synchronisation (couple clé publique / privée) ;
    • La clé publique de l’identité de synchronisation est placée dans le cercle et signée par :
      • La clé privée de l’autorisation de synchronisation elle-même ;
      • Une clé asymétrique sur courbe elliptique (via P256) générée à partir du mot de passe du compte iCloud (les paramètres utilisés pour la génération sont également stockés dans le cercle).
    • Le cercle signé est placé dans une zone de stockage (KVS) sur iCloud.
  • Activation du cercle sur un autre appareil :
    • L’appareil crée sa paire de clé d’identification de synchronisation ;
    • L’appareil crée un ticket de candidature (constitué de la clé publique de l’identité de synchronisation de l’appareil) ;
    • L’utilisateur s’authentifie via la soumission de son mot de passe iCloud ;
    • En cas de succès de l’authentification, le ticket est placé dans iCloud.
    • Lorsque le premier appareil constate la présence du ticket, il affiche un message à l’utilisateur afin de confirmer qu’une demande a été effectuée ;
    • Suite à la confirmation, l’utilisateur doit entrer sont mot de passe iCloud afin d’effectuer la vérification du ticket de candidature ;
    • En cas de succès de l’étape précédent, le premier équipement ajoute la clé du nouveau membre au cercle de confiance en la signant avec :
      • Sa clé de synchronisation 
      • La clé secrète générée à partir du mot de passe iCloud.
  • Ajout d’un n-ième membre :
    • La même procédure que pour l’ajout du deuxième équipement est rejouée (la validation peut être effectuée sur l’ensemble des équipements précédemment enrôlés).

En revanche, seuls les éléments possédant l’attribut kSecAttrSyncronizable sont synchronisés par ce mécanisme afin de limiter la réplication de certaines informations possédant un besoin de confidentialité plus élevé. La mise en place de ce protocole permet ensuite le transfert des secrets entre appareils sans possibilité pour Apple de récupérer les données (au moins d’une façon directe).

Service « Escrow proxy »

Le service « Escrow proxy » permet la récupération des mots de passe par l’utilisateur, il n’est cependant disponible que suite à de la mise en place d’un code de sécurité (par défaut une série de quatre chiffres). La clé de chiffrement du trousseau est transmise vers le service « escrow » chiffrée avec le code de sécurité définit :

Transmission de la clé de chiffrement vers le service « escrow »

L’API du service « escrow » permet ensuite d’effectuer différentes actions telles que :

  • Ajouter un enregistrement ;
  • Récupérer un enregistrement ;
  • Récupérer la liste des numéros de téléphone de confiance ;
  • Récupérer les données (en cas de perte) ;
  • ...

Lorsqu’un utilisateur souhaite récupérer les données sauvegardées, la procédure suivante est mise en place :

  • L’utilisateur (authentifié) récupère un jeton via l’appel GetAccountSettings ;
  • L’utilisateur utilise le jeton récupéré afin d’effectuer une synchronisation avec le service (afin de ne récupérer que les données nécessaires) ;
  • L’utilisateur s’authentifie via le protocole SRP : cette étape est complexe mais ne provoque pas de notification et ne requière pas les éléments suivants :
    • Un équipement enrôlé (le code de sécurité d’un des équipements enrôlé est cependant nécessaire) ;
    • Le code de sécurité iCloud ;
  • L’utilisateur récupère les données et effectue les étapes de déchiffrement nécessaires.

Ainsi, un attaquant en capacité de récupérer un jeton d’accès au service iCloud peut récupérer les données stockées sans provoquer de notification chez l’utilisateur légitime.

Conclusion

Actuellement différentes méthodes peuvent être utilisées afin de récupérer les données conservées :

  • Ajouter un nouvel équipement au « cercle de confiance » ; il est alors nécessaire de contourner ou valider l’étape d‘authentification à deux facteurs provoquant ainsi des notifications sur les autres équipements.
  • Récupérer les sauvegardes iCloud (sous réserve d’existence), il est alors nécessaire de :
    • Passer l’authentification deux facteurs (comme ci-dessus) ;
    • Récupérer la clé de chiffrement d’un équipement (récupérable uniquement sur les mobiles 32 bits).
  • Accéder à une sauvegarde locale, cependant, il alors nécessaire de :
    • Posséder un accès physique à un équipement (PC / Mac) ;
    • Posséder la clé de déchiffrement (si la sauvegarde est protégée).
  • Trouver une vulnérabilité dans le protocole de gestion du cercle de confiance ; la façon dont était présenté ce dernier point laisse à penser que le protocole pourrait être vulnérable mais aucune information supplémentaire n’a été divulguée durant la conférence. Il se peut que la vulnérabilité en question soit d'ordre cryptographique et liée au choix des paramètres de la courbe elliptique NIST P-256.

Mahdi BRAIK

Sources


Aucun commentaire:

Enregistrer un commentaire