Aujourd'hui, je veux parler de fonctionnalités peu connues d'iOS liées à la protection des sauvegardes, en contournant cette protection (récursivité) et la protection contre le contournement de la protection (double récursivité). La cerise sur le gâteau sera une courte instruction qui vous permettra de contourner la protection contre le contournement de la protection de sauvegarde (par exemple, la récursivité de troisième ordre), ainsi que des recommandations qui aideront à protéger contre le contournement de la protection contre le contournement de la protection de sauvegarde (excellente, récursion de quatrième ordre - je pense que gagné une médaille!).
Protection de sauvegarde: alors que tout est simple
Système de sauvegarde IOS - vraiment hors compétition. Nous avons vu quelque chose de similaire en termes de sauvegardes locales dans BlackBerry 10, mais ce système est mort et BlackBerry n'est jamais entré dans le cloud. (Soit dit en passant, dans BlackBerry 10 OS, les sauvegardes étaient toujours cryptées et la clé était toujours stockée dans le cloud, soit dans le BlackBerry ID de l'utilisateur, soit sur le réseau d'entreprise). Il était assez décent de sauvegarder sur le «cloud» et dans Windows Phone 8.1, ainsi que dans Windows 10 Mobile - mais ces systèmes sont maintenant morts et il n'y a jamais eu de sauvegardes locales.
Le seul concurrent d'iOS est le système Android, dont les sauvegardes sont créées exclusivement dans le cloud (nous ignorerons la commande adb backup: il y a encore moins de données réellement enregistrées par cette commande qu'elles n'entrent dans le cloud). Oui, certaines astuces aideront à extraire plus de données, mais les sauvegardes dans Android sont loin d'être idéales.
Dans le cadre de cet article, nous nous intéressons principalement aux sauvegardes locales; J'ai
écrit sur leur contenu
sur notre blog plus tôt. Ils peuvent être créés, par exemple, dans l'application iTunes, mais pas seulement: il existe de nombreuses applications tierces (y compris notre propre iOS Forensic Toolkit) qui, une fois connectées à l'iPhone, en créeront une copie de sauvegarde. À propos, à l'aide de Toolkit, une sauvegarde peut parfois être retirée du téléphone même lorsque l'écran est verrouillé et que le code de verrouillage est inconnu (des fichiers de verrouillage sont utilisés pour cela).
Une copie de sauvegarde est un moyen pratique, universel et très simple d'extraire une nouvelle copie de données d'un périphérique de stockage bien protégé (et, soit dit en passant, crypté). Presque toutes les choses les plus intéressantes se retrouvent dans les sauvegardes: à la fois les données de la plupart des applications et les connexions avec les mots de passe que l'utilisateur a enregistrés dans le navigateur Safari et les applications tierces, et les mots de passe pour le Wi-Fi et les sauvegardes d'horloge, et les données sur l'activité des utilisateurs (étapes, battement de cœur) à un moment donné). Tomber dans les sauvegardes et bien d'autres choses essentielles à l'enquête sur les crimes.
Pourquoi ai-je besoin d'une sauvegarde si le code de verrouillage est connu?On nous pose souvent la question (pour être précis dans le libellé, ils «prétendent»): si le code de verrouillage est déjà connu, alors pourquoi avons-nous besoin d'une copie de sauvegarde? Puis-je tout voir sur l'iPhone lui-même?
Non, pas tous. Même si le code de verrouillage est connu, toutes les données intéressantes ne peuvent pas être consultées sur l'iPhone lui-même. L'iPhone sauvegarde beaucoup de données dans les sauvegardes, même au-delà de la volonté de l'utilisateur. L'utilisateur peut même ne pas savoir que ces données existent! Cela s'applique, par exemple, à l'historique du navigateur Safari - sur le téléphone lui-même ou dans iCloud, vous pouvez afficher l'historique des 30 derniers jours et l'historique complet pendant toute la durée d'utilisation du téléphone est sauvegardé (si l'utilisateur n'a pas effacé manuellement l'historique). Soit dit en passant, exactement la même chose s'applique à l'historique des appels: dans l'application Téléphone, il n'est visible que pour les 30 derniers jours et les informations sur tous les appels sont enregistrées dans la copie de sauvegarde. À lui seul, cela suffit pour que les forces de l'ordre recherchent des sauvegardes, mais ce n'est pas tout. L'utilisateur peut supprimer certains des messages dans le programme de messagerie instantanée - et vous ne les verrez pas sur l'écran de l'appareil; en même temps, une base de données au format SQLite peut contenir des enregistrements supprimés pendant une longue période - jusqu'à ce que la procédure de récupération de place périodique soit lancée. Les choses importantes sont l'analyse, la recherche, l'exportation de données, y compris les données supprimées (la première demande de la police est «où était l'utilisateur à telle ou telle date», essayez de répondre à cette question avec intérêt, en ayant votre propre téléphone entre les mains et détectez combien de temps cela prendra, et l'analyse des données de la sauvegarde donnera une réponse en une seconde.) Il y a aussi peu de choses - par exemple, la date à laquelle le contact a été ajouté ou la date à laquelle l'événement a été créé sur le calendrier, qui ne sont pas visibles dans l'interface utilisateur.
Dans le même temps, entre les mains de l'attaquant, la sauvegarde se transforme en arme contre l'utilisateur. Les identifiants et mots de passe du trousseau vous permettent de "détourner" des comptes, d'accéder à la correspondance et à l'argent de l'utilisateur. Pour éviter cela, Apple permet à l'utilisateur de définir un mot de passe pour les sauvegardes.
Si un mot de passe est défini, la sauvegarde complète sera cryptée avec une clé forte, qui est générée en fonction du mot de passe. Le cryptage a lieu à l'intérieur de l'appareil; si un mot de passe est défini, les données non chiffrées ne quittent tout simplement pas le téléphone. Par conséquent, quel que soit le programme de sauvegarde que vous utilisez, le résultat sera le même: sauvegarde cryptée.
Le chiffrement des sauvegardes locales dans les versions relativement récentes d'iOS (10.2 et plus récentes) est si fort que même en utilisant l'accélération matérielle avec le GPU Nvidia GTX 1080, nous n'avons pas pu obtenir la vitesse de recherche de plus d'une centaine de mots de passe par seconde. En conséquence, une attaque frontale est inutile même si un simple mot de passe de 7 caractères seulement est utilisé (moyenne hospitalière). Cependant, même si vous avez un mot de passe de cryptage fort sur votre téléphone, vous pouvez extraire des photos et des fichiers multimédias si vous connaissez le code d'accès ou si vous avez un verrouillage.
Dans iOS 10.2 et jusqu'à la sortie d'iOS 11, un mot de passe de sauvegarde long et compliqué était une protection absolue; il n'y avait aucun moyen de supprimer ou de changer le mot de passe sans d'abord saisir l'ancien, dans les anciennes versions du système n'existaient pas. Dans iOS 11, la situation a changé.
Première récursivité: réinitialiser le mot de passe pour la sauvegarde
J'ai déjà écrit sur ce qui peut être fait dans iOS 11, 12 et 13 en utilisant un code de verrouillage. Entre beaucoup d'autres choses, dans ces versions d'iOS, un code de verrouillage d'écran peut être utilisé pour réinitialiser le mot de passe de sauvegarde. Désormais, si un attaquant a appris le code de verrouillage de l'écran, il peut réinitialiser le mot de passe sur une sauvegarde locale, connecter le téléphone à l'ordinateur et extraire toutes les données, ainsi que décrypter tous les mots de passe du trousseau.
Le site Web d'Apple fournit
des instructions détaillées sur la procédure à suivre pour réinitialiser le mot de passe de la sauvegarde:
Dans iOS 11 ou version ultérieure, vous pouvez créer une sauvegarde cryptée de votre appareil en réinitialisant votre mot de passe. Pour ce faire, procédez comme suit:
- Sur votre appareil iOS, sélectionnez Paramètres> Général> Réinitialiser.
- Cliquez sur "Réinitialiser tous les paramètres" et entrez le mot de passe iOS.
- Suivez les instructions de réinitialisation. Cela n'affectera pas les données utilisateur ou les mots de passe, mais réinitialisera les paramètres tels que la luminosité de l'affichage, la position du programme sur l'écran d'accueil et le papier peint. Le mot de passe pour chiffrer les sauvegardes sera également supprimé. (Entre parenthèses: à ce stade, l'appareil vous demandera d'entrer un code de verrouillage d'écran).
- Reconnectez l'appareil à iTunes et créez une nouvelle sauvegarde chiffrée.
- Vous ne pouvez pas utiliser de sauvegardes chiffrées créées précédemment, mais vous pouvez utiliser iTunes pour sauvegarder les données actuelles et définir un nouveau mot de passe de sauvegarde.
Sur un appareil équipé d'iOS 10 ou d'une version antérieure, la réinitialisation du mot de passe n'est pas possible.
Deuxième récursivité: nous nous protégeons contre les tentatives de réinitialisation du mot de passe pour la sauvegarde
La facilité avec laquelle un attaquant peut contourner votre mot de passe le plus complexe et le plus long en entrant simplement un code de verrouillage d'écran est désagréablement incroyable. Cependant, vous pouvez essayer de vous protéger de ce fléau. Le mécanisme de protection sera ici les restrictions de contrôle parental (iOS 11) ou le mot de passe de l'heure d'écran (iOS 12 et 13). Par souci de simplicité, je décrirai exactement iOS 12.
Disons que votre iPhone est tombé entre les mains d'un attaquant. Supposons qu'un attaquant ait réussi à espionner votre code de verrouillage; Maintenant, il essaie de détacher le téléphone du cloud et de fusionner en même temps une copie des données, en accédant aux mots de passe du trousseau. Vous pouvez vous protéger contre un tel développement d'événements à l'aide du mot de passe Screen Time. Vous pouvez en savoir plus sur les possibilités de contrôler le temps d'écran dans l'article Apple
Utilisation du contrôle parental sur les appareils iPhone, iPad et iPod touch d'un enfant . Nous sommes maintenant intéressés par une autre possibilité de ce système: empêcher le téléphone de réinitialiser le mot de passe pour la sauvegarde.
Curieusement, limiter la possibilité de réinitialiser le mot de passe pour la sauvegarde iOS locale est assez simple: tout ce que vous avez à faire est de définir le mot de passe Screen Time en tant que tel. La complexité de ce mot de passe est faible: la seule option disponible est un code PIN à 4 chiffres. Néanmoins, une telle protection est généralement assez fiable. Étant donné que ce mot de passe est utilisé très rarement et diffère du code de verrouillage de l'appareil, il ne peut pas être espionné accidentellement. Ce code est nécessaire dans des cas extrêmement rares lorsque vous souhaitez modifier les paramètres ou désactiver les restrictions. Vous pouvez définir un code aléatoire en l'écrivant sur un morceau de papier laissé à la maison - et ce sera complètement sûr.
Que se passe-t-il si j'essaie de réinitialiser mon mot de passe pour la sauvegarde maintenant? À la première étape, il n'y a aucune différence: le système vous demandera le mot de passe de verrouillage de l'appareil. Mais juste après cela, un mot de passe supplémentaire pour le temps d'écran à 4 chiffres sera demandé. Cette mesure de sécurité est tout à fait capable non seulement de repousser les curieux, mais aussi de protéger l'iPhone contre les tentatives de piratage assez graves.
Récursivité trois: Comment trouver le mot de passe de l'heure de l'écran
Le mot de passe du temps d'écran est stocké sur l'appareil lui-même. Il est impossible de le récupérer dans un délai raisonnable: un petit espace de 10 000 combinaisons est protégé par des retards progressifs entre les tentatives d'entrée. Après plusieurs tentatives infructueuses, le système limitera la vitesse d'énumération des mots de passe du temps d'écran en introduisant des délais progressifs de 1, 5, 15 et 60 minutes. Après 10 tentatives infructueuses, chaque tentative ultérieure peut être effectuée au plus tôt une heure après la précédente; le redémarrage de l'appareil n'aidera pas à accélérer le processus. Ainsi, les 10 000 combinaisons peuvent être triées en 416 jours.
Cependant, il existe des moyens plus intéressants. Je ferai une réservation tout de suite: le premier ne fonctionne que lorsque le mot de passe de la copie de sauvegarde n'est pas défini ou connu, et le second si vous pouvez jailbreaker l'iPhone (c'est-à-dire que la version iOS dessus n'est pas plus récente que iOS 12.2).
Pour l'iPhone avec un mot de passe inconnu pour la sauvegarde exécutée sur la dernière version d'iOS (aujourd'hui c'est 12.4), il n'y a aucun moyen de trouver le mot de passe du Screen Time (pour l'instant).
Méthode 1: extraire de la sauvegardeDans iOS 7-11, ce mot de passe (appelé les restrictions) est stocké sous forme de hachage. L'algorithme est relativement robuste (pbkdf2-hmac-sha1, mais le nombre d'itérations est relativement petit). Étant donné que ce mot de passe ne comprend toujours que 4 chiffres, une recherche complète du hachage sur l'ordinateur prend plusieurs secondes. Le hachage lui-même est stocké dans le fichier com.apple.restrictionspassword.plist, qui tombe dans la sauvegarde. En conséquence, le mot de passe Restrictions peut être ouvert si nous avons (l'un des):
- sauvegarde sans mot de passe
- sauvegarde avec mot de passe, plus mot de passe
Dans iOS 12 (ici, c'est le mot de passe de l'heure de l'écran, ou de l'heure de l'écran) est stocké en clair. Non, la sécurité n'a pas empiré: le mot de passe a été déplacé vers le trousseau. Néanmoins, la classe de protection du mot de passe pour Screen Time a été affectée au minimum: il n'est pas lié à l'appareil. La classe de protection minimale est attribuée intentionnellement. Cela est fait de sorte que lors de la restauration d'un nouvel iPhone à partir de la sauvegarde, le mot de passe Screen Time est défini automatiquement (ainsi Apple a fermé le potentiel de suppression du mot de passe Screen Time en créant une sauvegarde, en réinitialisant l'appareil puis en restaurant à partir de la sauvegarde). Les enregistrements de trousseau avec des classes de protection supérieures ne se retrouvent pas dans les sauvegardes ou finissent, mais sont protégés par la clé matérielle du périphérique (c'est-à-dire qu'ils ne peuvent être restaurés que sur le même périphérique).
Pour obtenir le mot de passe du temps d'écran, vous avez besoin de:
- sauvegarde avec mot de passe et mot de passe
Méthode 2: par jailbreakDe toute évidence, la première méthode ne fonctionnera que lorsque le mot de passe pour la sauvegarde n'est pas défini ou connu. Si le mot de passe pour la sauvegarde est défini, mais qu'il n'est pas connu, alors le seul moyen restant de connaître le mot de passe de l'heure de l'écran est d'accéder au trousseau. Pour les anciennes versions d'iOS, vous avez besoin d'une copie du système de fichiers.
Pour iOS 7-11, vous avez besoin de:
- image d'un système de fichiers tourné par EIFT (besoin d'un jailbreak) ou GrayKey (le jailbreak n'est pas nécessaire, un code de verrouillage de l'appareil suffit, mais le produit lui-même n'est disponible que pour les forces de l'ordre de certains pays)
Pour iOS 12:
- Porte-clés extrait par EIFT ou GrayKey
Est-il nécessaire de le faire? Je ne suis pas sûr: s'il était possible d'installer un jailbreak, alors, tout d'abord, tous les mots de passe peuvent être extraits sans intermédiaire sous la forme d'une sauvegarde. Deuxièmement, vous pouvez trouver le mot de passe pour la sauvegarde en déchiffrant le trousseau: le mot de passe pour la sauvegarde (tout comme le mot de passe pour le temps d'écran) y est stocké en clair. Cependant, si l'objectif est de supprimer les restrictions de temps d'écran, cette approche est tout à fait appropriée.
Encore une choseFait intéressant, le mot de passe Screen Time est également stocké dans le cloud iCloud, mais uniquement si vous activez l'authentification à deux facteurs et activez l'option Screen Time «Partager sur plusieurs appareils». La clé elle-même ne tombe pas dans le trousseau cloud, mais est stockée séparément (approximativement sous la même forme que la clé pour restaurer l'accès aux volumes FileVault 2 chiffrés). Il n'existe actuellement aucun mécanisme pour l'extraire d'iCloud et l'afficher. Nous y travaillons; À l'automne, il est prévu de publier la dernière version d'Elcomsoft Phone Breaker, qui aura cette fonctionnalité (si rien ne change dans le mécanisme de stockage avec la sortie d'iOS 13; il y a une telle possibilité: iOS 13 a déjà changé l'emplacement de stockage pour ce mot de passe).
Dans tous les cas, pour retirer le mot de passe Screen Time d'iCloud, vous aurez besoin de tous les éléments suivants:
- nom d'utilisateur et mot de passe de l'utilisateur Apple ID (iCloud)
- code de verrouillage de l'écran de l'appareil
- l'accès au deuxième facteur d'authentification (c'est l'appareil lui-même, si le code de verrouillage est connu; cependant, une carte SIM avec un numéro de téléphone de confiance suffit)
Mais nous n'avons pas vérifié le scénario en réinitialisant l'appareil puis en le restaurant à partir de la sauvegarde «cloud», donc je ne peux pas dire avec certitude si le mot de passe Screen Time est activé si je crée une sauvegarde dans iCloud, réinitialise l'iPhone et récupère à partir du cloud. De plus, le système peut se comporter différemment dans les cas où le même iPhone ou le nouvel appareil est restauré à partir de la sauvegarde.
Quatrième récursivité, dernière: comment protéger l'accès au mot de passe Screen Time
Nous arrivons donc au dernier point. Si votre objectif est de sécuriser l'appareil autant que possible, il est dans votre intérêt de vous assurer que le mot de passe de l'heure de l'écran n'est ni réinitialisé ni reconnu. Comme dans la partie précédente, j'ai deux nouvelles: bonnes et mauvaises.
La bonne nouvelle est que la protection du mot de passe Screen Time contre une personne moyenne et même un pirate professionnel est assez simple: il suffit de définir un mot de passe long et fort pour une copie de sauvegarde, puis de maintenir l'appareil à jour en installant les dernières versions d'iOS juste après leur sortie. Les jailbreaks pour les nouvelles versions d'iOS ne sortent pas tout de suite. Parfois, des mois s'écoulent entre la sortie d'une mise à jour iOS et l'apparition d'un jailbreak fonctionnel.
Vous pouvez avoir peur d'un scénario où un appareil volé (avec un code de blocage connu d'un attaquant) est mis sur une étagère en attendant l'apparition d'un jailbreak. Ici, cependant, la fonction «Effacer [appareil]» standard du portail Find my iPhone peut vous aider. Le fait est que pour installer le jailbreak, vous devez d'abord signer le fichier IPA, puis confirmer la signature numérique directement sur l'iPhone lui-même. La signature numérique est vérifiée sur le serveur Apple; c'est-à-dire que l'attaquant devra autoriser la mise en ligne de l'iPhone volé. À ce moment, la commande pour effacer le périphérique fonctionnera très probablement.
Les attaquants peuvent résoudre ce problème en utilisant des configurations de routeur spéciales, dans lesquelles l'accès aux nœuds responsables de la fonctionnalité Localiser mon iPhone sera refusé. De plus, au lieu du certificat habituel, ils peuvent utiliser un certificat de développeur pour signer le jailbreak, ce qui n'exige pas que l'iPhone se connecte pour confirmer la signature numérique.
La mauvaise nouvelle est que, peu importe vos efforts, vous ne pourrez pas protéger votre iPhone de l'accès via les systèmes GrayKey ou UFED Premium: leurs développeurs ont pu contourner la plupart des mécanismes de sécurité de l'iPhone. Si le code de verrouillage de l'écran est connu, les utilisateurs de ces complexes pourront accéder au système de fichiers et décrypter le trousseau sans aucun problème particulier. En revanche, ces complexes ne sont disponibles que pour les forces de l'ordre, et en aucun cas dans aucun pays (par exemple, ils ne sont pas fournis à la Russie). Les mettre entre les mains des attaquants est pratiquement exclu. Ainsi, il est peu probable que vous soyez exposé à ce danger.