- Si BitLocker sans mot de passe repose sur un TPM discret (discrete TPM), il est possible de capturer la clé en clair sur le bus SPI au moment où la VMK est transmise du TPM au CPU pendant le démarrage
- L’expérience sur un Lenovo L13 a été menée avec un DSLogic Plus à moins de 100 dollars, mais ses limites d’échantillonnage étaient importantes pour lire de façon fiable un bus SPI à 33 MHz
- Les données capturées doivent être interprétées dans l’ordre SPI → TIS → TPM 2.0, et la clé de 32 octets commençant par
5761a été retrouvée dans le tampon de réponseTPM2_Unseal - Avec la clé extraite, la partition BitLocker est montée à l’aide de
dislocker-fuse, puissethc.exeest remplacé parcmd.exeafin d’obtenir un shell SYSTEM en appuyant cinq fois sur Maj - Un TPM discret seul offre difficilement une protection suffisante ; les vraies mesures de défense reposent sur l’utilisation de fTPM ou sur la configuration d’un PIN ou d’une phrase de passe BitLocker
BitLocker sans mot de passe et la faiblesse des TPM discrets
- Une partition BitLocker est chiffrée avec la FVEK (Full Volume Encryption Key)
- La FVEK est elle-même chiffrée avec la VMK (Volume Master Key), puis stockée sur le disque avec les données chiffrées
- Cette structure permet la rotation des clés sans devoir rechiffrer tout le disque
- La VMK est stockée dans le TPM
- Le disque ne peut donc être déchiffré que lorsqu’il démarre sur cet ordinateur
- Active Directory dispose d’un mécanisme de récupération
- Le point vulnérable est le moment où le CPU demande au TPM de lui transmettre la VMK pour déchiffrer le disque
- La VMK traverse le bus SPI entre le TPM et le CPU en clair
- En capturant cette valeur, on peut l’utiliser pour déchiffrer le disque BitLocker
Matériel utilisé pour capturer les communications TPM
- Le matériel de test est un analyseur logique DSLogic Plus
- Il a été acheté en 2021 pour moins de 100 dollars, taxes et livraison comprises
- Pour obtenir un signal stable, il faut une fréquence d’échantillonnage environ 3 à 4 fois supérieure à la fréquence du bus
- Le bus SPI cible étant à 33 MHz, un échantillonnage d’au moins 100 MHz est nécessaire
- Les spécifications du DSLogic Plus annoncent jusqu’à 400 MHz sur 16 canaux, mais les conditions d’utilisation réelles sont limitées
- Le DSLogic Plus présente des limites nettes selon le mode de capture et le nombre de canaux
- Quand le nombre de canaux capturés simultanément augmente, la fréquence d’échantillonnage baisse
- Le mode stream permet de capturer de gros volumes de données pendant environ 1 minute, mais il est limité à 100 MHz sur 3 canaux
- Le mode buffer permet bien un échantillonnage à 400 MHz, mais ne fonctionne que quelques millisecondes, ce qui n’est pas pratique pour cette tâche
- Une option plus professionnelle est Saleae, environ 10 fois plus chère ; d’autres appareils sont disponibles dans la liste du matériel pris en charge par sigrok
Connexion à la carte et timing de capture
- SPI étant un bus partagé, il n’est pas nécessaire de se connecter directement aux petites broches du TPM
- S’il existe un composant plus grand connecté au même bus SPI, on peut se brancher dessus
- Dans l’expérience, une flash SPI voisine a été identifiée et utilisée
- Les marquages du composant permettaient de retrouver facilement la fiche technique et de confirmer son usage
- Avec le DSLogic, seules 3 des lignes SPI ont été capturées en raison de la baisse de fréquence d’échantillonnage
- Les lignes importantes sont CLK, MOSI et MISO
- La tension de seuil doit être réglée à environ la moitié de la tension du signal
- La tension mesurée du signal était de 3,3 V, et le seuil approprié était d’environ 1,6 V
- La VMK recherchée est utilisée vers la fin de la phase POST
- Sur le Lenovo L13, c’était juste après l’écran de démarrage, vers la 14e seconde d’un démarrage total d’environ 25 secondes
- Il y avait déjà de l’activité SPI auparavant, mais il s’agissait surtout de lectures et de vérifications en début de démarrage, pas de communications TPM
- On peut lancer la capture juste après le démarrage, ou attendre environ 7 secondes pour réduire les données inutiles
Interprétation SPI, TIS et TPM 2.0
- Les signaux capturés doivent être interprétés en trois couches : SPI, TIS et TPM 2.0
- SPI est un protocole simple, interprétable même avec un analyseur logique généraliste
- Au moment où l’horloge passe de 0 à 1, l’état de la ligne de données devient la valeur du bit
- Dans l’exemple, MOSI vaut 0 pendant 8 cycles d’horloge et s’interprète donc comme
0x00, tandis que MISO n’a que le premier bit activé et s’interprète comme0x80
- La partie la plus difficile a été TIS (TPM Interface Specification)
- Aucun décodeur fonctionnel n’a été trouvé, il a donc fallu traiter cela manuellement
- Les décodeurs libsigrok n’ont pas réussi à interpréter correctement les données, mais ont aidé à localiser approximativement les zones où avaient lieu les échanges TPM
- L’échec peut venir de l’absence de Chip Select dans la capture, d’une horloge imprécise, de certains octets manquants ou d’une autre raison
- Les requêtes envoyées du maître vers l’esclave suivent un motif répétitif
- L’esclave envoie
80pour signaler qu’il est prêt - Le maître envoie l’en-tête
D4 00 24et les octets TPM - L’esclave confirme la lecture avec
01 FF
- L’esclave envoie
- Les réponses de l’esclave vers le maître dépendent de la configuration et de la lecture des registres
- La trame d’exemple est le résultat de la lecture d’un octet à l’adresse
D4 00 24 - L’esclave démarre la transaction avec
80, puis la valeur intéressante0x80apparaît
- La trame d’exemple est le résultat de la lecture d’un octet à l’adresse
Trouver la clé dans la réponse TPM2_Unseal
- La commande TPM qui demande le retour de la clé est TPM2_Unseal
- Cette commande est définie dans la partie 3 de la spécification TPM 2.0
- Pour isoler les transactions TPM, l’attention s’est portée sur les réponses de la ligne MISO plutôt que sur les trames de requête
- Les données SPI brutes ont été filtrées avec le masque
80 00 00 00 01 .., en ne conservant que le dernier octet wildcard - Le début d’une transaction TPM est identifié par les en-têtes
80 01ou80 02 - La réponse contenant la clé est une réponse d’authentification plus longue et commence par
80 02
- Les données SPI brutes ont été filtrées avec le masque
- Il y avait environ 10 ms de délai entre la commande Unseal et la réponse
- L’en-tête
80 02indique une session avec mot de passe, et diffère de l’en-tête en clair80 01utilisé par la plupart des requêtes - Le délai semble provenir de l’authentification de la requête et du traitement HMAC de la réponse
- L’en-tête
- Les commandes et réponses TPM sont obtenues en réassemblant les octets un par un
- L’outil tpmstream-web a été utilisé pour le décodage
- Dans le tampon de réponse, la clé commence par
5761et mesure 32 octets
Montage du disque et backdoor
- Après avoir enregistré la clé extraite dans un fichier, elle est passée à
dislocker-fusepour monter la partition BitLocker - L’exemple de commande crée le fichier de clé, connecte
/dev/sdd3à./mnt/, puis monte de nouveaudislocker-filedans./mnt2/ - La backdoor la plus simple consiste à remplacer le programme Sticky Keys de Windows par
cmd.exeWindows/System32/cmd.exeest copié versWindows/System32/sethc.exe- Après avoir remis le disque dans le portable et redémarré, appuyer 5 fois sur la touche Maj permet d’obtenir un shell SYSTEM
Limites du matériel et mesures de défense
- Le DSLogic est difficile à recommander pour cette tâche
- De nombreuses captures ont échoué et ont dû être jetées
- Un échantillonnage à 3 fois la vitesse du bus suffisait à peine à obtenir une horloge cohérente, et certains octets manquaient
- Les limites du matériel ont obligé à comprendre le protocole en profondeur et à consacrer beaucoup de temps à l’interprétation manuelle des captures
- Si c’est l’employeur qui achète le matériel, il semble préférable d’opter pour un analyseur logique professionnel
- Contrairement à ce que l’on pourrait attendre, l’utilisation d’un TPM discret n’améliore pas la sécurité du système et peut créer une illusion de sécurité
- Il existe deux mesures de défense
- Utiliser fTPM
- Si un TPM discret doit être utilisé, configurer un PIN ou une phrase de passe pour BitLocker
- Microsoft recommande également de configurer un PIN ou une phrase de passe BitLocker pour les zones de l’organisation nécessitant un niveau plus élevé de protection des données
1 commentaires
Avis sur Hacker News
Tous les TPM prennent en charge les sessions chiffrées pour empêcher ce type d’attaque par homme du milieu. Il suffit d’utiliser
TPM2_StartAuthSessionet de demander le chiffrement pour chaque commande de session, mais BitLocker ne le fait pas : c’est une grave défaillance. Microsoft doit corriger cela.À titre de comparaison, systemd utilise des sessions chiffrées quand on emploie le chiffrement de disque LUKS avec un TPM : https://github.com/systemd/systemd/commit/acbb504eaf1be51572...
Je connais mal les TPM, donc je me demande comment fonctionnent les sessions authentifiées. Comment le système d’exploitation prouve-t-il son identité au TPM d’une manière qu’un attaquant ne puisse pas contrefaire dans une vraie attaque par homme du milieu ? Les secrets ou clés stockés côté système d’exploitation devraient, il me semble, être en clair sur le disque puisqu’on n’a pas encore la clé de chiffrement.
Même si le système d’exploitation vérifiait d’une façon ou d’une autre l’identité du TPM et rendait impossible un contournement en modifiant quelques fichiers sur le disque, je ne vois pas ce qui empêcherait un attaquant d’exécuter la même routine dans un émulateur. À moins de l’intégrer à un environnement d’exécution sécurisé côté CPU, comme Intel ME ou SGX, il semble difficile d’obtenir une vraie sécurité avec cette approche, et dans ce cas le TPM ne servirait sans doute plus à grand-chose.
Il y a aussi un autre article de 2021.
https://arstechnica.com/gadgets/2021/08/how-to-go-from-stole...
Certains fabricants de PC portables proposent une option qui efface le TPM lorsqu’on ouvre la machine. Si vous avez ouvert votre portable pour voir s’il était possible d’ajouter de la RAM, mieux vaut espérer avoir accès à la clé de récupération BitLocker ou en avoir une sauvegarde.
On pourrait peut-être aussi y accéder en découpant le plastique. Un peu comme la scène d’extraction du parasite dans Matrix.
Rien de nouveau. La configuration par défaut ne demande pas de PIN, mais la documentation Microsoft décrit plusieurs attaques et recommande de configurer un PIN BitLocker pour les empêcher complètement. Comme le TPM bloque les tentatives par force brute, le PIN peut être assez faible.
Exemple : https://learn.microsoft.com/en-us/windows/security/operating...
Behavior:Win32/AccessibilityEscalationAvec BitLocker et ce type de chiffrement, je n’ai jamais vraiment compris cette architecture où la clé de déchiffrement est fournie automatiquement par le système. Si le portable entier est volé, quelle sécurité BitLocker apporte-t-il ? Du point de vue de l’attaquant, le système démarre simplement et demande le mot de passe du compte utilisateur.
D’après ce que j’ai compris, cela protège mes données si l’on retire le disque dur du portable pour essayer de l’utiliser sur un autre système. À cause de cette incompréhension peut-être stupide, j’ai toujours configuré BitLocker avec un mot de passe à saisir manuellement, et j’ai toujours fait pareil avec LUKS. Est-ce complètement faux ?
Le plus probable est qu’il efface le disque pour le revendre, pas qu’il tente réellement une attaque par cold boot. Cela dit, tout dépend du modèle de menace. Personnellement, la principale raison pour laquelle j’utilise le chiffrement complet du disque sur mes machines personnelles est de réduire la nécessité de détruire physiquement les supports de stockage au moment de s’en débarrasser.
Même si un disque dur tombe en panne, je n’ai pas besoin de le démonter réellement pour m’assurer que mes données ont disparu. Mes appareils sont généralement en veille lorsque je suis à l’extérieur, donc si quelqu’un veut mener une attaque par cold boot, il peut de toute façon le faire.
Comme tu le dis, si la clé de déchiffrement est fournie automatiquement au système, elle se trouve en RAM et est prête à être exportée par un attaquant puis réutilisée sur le disque chiffré. L’attaque par cold boot[1] est un vecteur d’attaque qui mérite d’être approfondi pour déterminer s’il correspond à ton modèle de menace.
[1] https://en.wikipedia.org/wiki/Cold_boot_attack
Si la clé passe par un bus partagé, cela signifie-t-il que n’importe quel composant du système peut l’intercepter aussi facilement que cet analyseur logique ? Ça ressemble à un cauchemar de sécurité de la chaîne d’approvisionnement
Si n’importe qui peut démarrer le portable et accéder au disque dur déchiffré, quelle différence cela fait-il de sniffer d’abord la clé ? Si l’on pouvait démarrer le portable, on avait de toute façon accès au résultat final
Si l’on veut que BitLocker protège contre le vol d’un portable, il faut de toute façon utiliser un mot de passe et désactiver la veille simple, par opposition à l’hibernation
Alors, que fait réellement le matériel « de confiance » du TPM dans ce cas ? Les mesures de démarrage peuvent-elles aussi être falsifiées ? Et en plus, c’est d’une stupidité ahurissante. Pourquoi le matériau de clé circule-t-il en clair sur le bus ? Il n’y a même pas une sorte de protocole d’échange de clés
[1] Il est aussi question ici d’effacement sécurisé, ce qui est un cas encore plus faible. Mais si le chiffrement complet du disque repose sur une EEPROM que l’on peut retirer de son socket et détruire physiquement, cela résout tout aussi efficacement cette partie
Je me demande quel logiciel a été utilisé pour transformer les signaux bruts en 0 et en 1. J’ai depuis longtemps un projet similaire : lire des données numériques sur des cassettes des années 80. J’ai obtenu des fichiers
.wavdes bandes d’assez bonne qualité, mais je n’ai toujours pas trouvé l’outil ou la bibliothèque adéquats pour les convertir en 0 et 1Bien sûr, le vrai plaisir commencera une fois qu’il faudra décoder les 0 et les 1. Je sais comment les bits sont encodés, c’est de la modulation par déplacement de fréquence[0]. Ce que j’ignore, c’est quoi utiliser pour décoder cela en un flux de bits que je puisse traiter ensuite
[0] https://en.wikipedia.org/wiki/Frequency-shift_keying
On peut produire une sortie numérique en comparant les sorties d’une paire de ces filtres. On peut aussi utiliser une transformée de Fourier discrète glissante parcimonieuse, mais l’interpolation entre les bins de fréquence est plus fastidieuse, alors que le filtre de Goertzel s’en charge à votre place
Je ne connais pas d’algorithme ou de logiciel unique qui transforme n’importe quel signal brut en octets. Il faut déterminer quel type de modulation le signal utilise, puis trouver le décodeur correspondant ou l’écrire soi-même. En général, cela implique du filtrage et plusieurs algorithmes mathématiques, mais un programme de décodage de base est souvent assez court et simple
C’est une compétence assez chouette à acquérir, parce que les mêmes techniques servent dans toutes sortes de domaines. Par exemple, après avoir appris un peu de DSP, beaucoup de possibilités se sont ouvertes en communications radio, en musique et sound design, ainsi qu’en traitement d’images et de vidéos
Ou bien, puisque l’auteur mentionne DSlogic, il existe peut-être un fork de ces programmes fourni par le fabricant de cet analyseur logique
Le signal brut passait généralement dans une bascule de Schmitt pour implémenter une hystérésis et obtenir des fronts stables. Cela compensait ainsi la polarité du signal de la bande et les variations du moteur
Il est ironique de lire que « utiliser un TPM physique séparé réduit en réalité la sécurité »
Mon portable de 2015 n’avait pas de TPM physique, et quand j’ai essayé de l’activer, le message disait « Autoriser BitLocker sans TPM compatible (mot de passe ou clé de démarrage sur clé USB requis) », donc j’ai pensé que c’était moins sûr. Heureusement que je n’utilisais de toute façon pas BitLocker
C’est très drôle que le truc de cour de récré consistant à renommer l’invite de commandes en gestionnaire d’accessibilité, comme à l’époque de Windows Vista, fonctionne encore tel quel
On imagine que Windows authentifierait quelque chose qui s’exécute avec des droits administrateur sans connexion, mais Windows semble être à 75 % du théâtre de sécurité, et les 25 % restants ressemblent aussi à une autre forme de théâtre
La même technique avait été décrite en 2021 :
https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-in...