Le second facteur dans la sauvegarde : décoder une URI otpauth depuis de l'ASCII décimal

Sécurité Mobile Niveau 2/4 ~3 min 7 octobre 2026

Le défi

Un téléphone est revenu lors d'un départ et la file d'analyse en a extrait une sauvegarde applicative non chiffrée. À l'intérieur, un des fichiers de préférences de l'application d'authentification contient une valeur que les développeurs ont stockée sous forme d'une suite de nombres plutôt que de texte, sans doute parce que cela ressemblait moins à un secret. Ce n'est ni chiffré ni haché. Trois comptes s'y trouvent. Récupérez le secret partagé qui génère les codes de la paie.

Ce que tu vas apprendre

  • Reconnaître une suite de nombres compris entre 32 et 126 comme des points de code ASCII
  • Lire les champs d'une URI otpauth et identifier la graine
  • Expliquer pourquoi une graine TOTP divulguée est permanente et indépendante de l'appareil
  • Décrire comment les sauvegardes d'applications deviennent une voie d'exfiltration pour les secrets

Compétences testées

Reconnaissance d'encodageAnalyse d'artefacts mobilesRaisonnement sur l'authentification

Prérequis

  • Le rôle d'une application de code à usage unique
  • Le fait que l'ASCII associe des caractères à des nombres

Comment ça marche

Un code à usage unique basé sur le temps n'est pas un secret en soi. C'est une fonction de l'heure actuelle et d'une graine partagée, calculée de manière identique sur le téléphone et sur le serveur. Scanner un QR code de configuration est ce qui installe la graine sur l'appareil, et le QR code encode une URI otpauth:// dont le paramètre secret est la graine en base32.

Cela fait de la graine l'intégralité du second facteur. Elle ne change jamais, elle est identique sur chaque appareil qui la détient, et son utilisation ne laisse aucune trace distinguable de celle de l'utilisateur réel. Un attaquant qui la copie n'a plus besoin du téléphone, et le titulaire du compte n'a aucun moyen de le remarquer. La récupération suppose que l'émetteur réinitialise l'enrôlement, ce que presque personne ne fait après avoir simplement récupéré un appareil.

C'est le stockage qui pose problème. Les graines doivent se trouver dans le magasin de clés de la plateforme, marquées pour être exclues des sauvegardes de l'appareil. Quand une application les conserve dans des préférences ordinaires, elles voyagent partout où va la sauvegarde, et écrire chaque caractère sous forme de nombre décimal n'est en rien une protection : ce sont les mêmes octets, épelés différemment, lisibles par quiconque remarque que les valeurs ne dépassent jamais 126.

Erreurs fréquentes

  • Répondre avec la graine de Corvid Mail ou de Thornbury VPN. Les trois lignes se ressemblent. Le libellé demande la paie.
  • Soumettre l'URI entière. La réponse est la valeur de secret, pas la ligne dans laquelle elle se trouve.
  • Essayer du base64 ou du base32 sur l'entrée. Aucun des deux alphabets ne contient d'espaces, et les nombres révèlent de quoi il s'agit avant même de toucher un bouton.
  • Attendre un code à six chiffres. Le code change toutes les trente secondes. La graine, elle, ne change pas, c'est pour cela qu'elle est ce qui compte.

Comment s'en protéger

Gardez les graines hors de tout ce qui peut être copié.

  • Stockez-les dans le magasin de clés matériel, avec le drapeau no-backup activé. Un authentificateur qui survit à une restauration sur un nouveau téléphone est un authentificateur qui a placé vos graines à un endroit accessible à une sauvegarde.
  • Excluez le répertoire de données de l'application des sauvegardes automatiques, et testez cette exclusion plutôt que de faire confiance au manifeste.
  • Réenrôlez systématiquement le second facteur lors d'un départ. Récupérer le combiné ne révoque pas ce qu'il contenait.
  • Privilégiez des facteurs résistants au phishing et liés à un appareil, comme une passkey ou une clé matérielle, dont le matériel privé ne peut être exporté d'aucune façon.

Solution complète

Les membres Pro et Max débloquent la solution complète étape par étape.

Passer Pro

Statistiques de la communauté

205 résolutions
86% taux de réussite
M2F14M3 Premier sang

Hacks du jour associés

31 000+ Hackers Vrais labs Gratuit
Commencer Gratuitement ou résolvez le hack du jour, sans compte