Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Inverser et pirater des disques externes à chiffrement automatique est mon ancien passe-temps. Dans le passé, j'ai eu l'occasion de m'entraîner avec des modèles tels que le Zalman VE-400, le Zalman ZM-SHE500, le Zalman ZM-VE500. Tout récemment, un collègue m'a apporté une autre pièce : Patriot (Aigo) SK8671, qui est construit selon un design typique - un indicateur LCD et un clavier pour saisir un code PIN. C'est ce qui en est ressorti…

1. Introduction
2. Architecture matérielle
– 2.1. Carte principale
– 2.2. Tableau indicateur LCD
– 2.3. Tableau de clavier
– 2.4. En regardant les fils
3. Séquence des étapes d'attaque
– 3.1. Prendre un vidage de données à partir d'un lecteur flash SPI
– 3.2. Renifler les communications

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties


1. Introduction

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties
logement

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties
Emballage

L'accès aux données stockées sur le disque, censées être cryptées, s'effectue après saisie du code PIN. Quelques notes introductives sur cet appareil :

  • Pour changer le code PIN, vous devez appuyer sur F1 avant le déverrouillage ;
  • Le code PIN doit contenir de 6 à 9 chiffres ;
  • Après 15 tentatives incorrectes, le disque est effacé.

2. Architecture matérielle

Tout d’abord, nous disséquons l’appareil en plusieurs parties pour comprendre de quels composants il se compose. La tâche la plus fastidieuse est d'ouvrir le boîtier : beaucoup de vis microscopiques et de plastique. Après avoir ouvert le boîtier, on voit ce qui suit (faites attention au connecteur à cinq broches que j'ai soudé) :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

2.1. Carte principale

Le tableau principal est assez simple :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Ses parties les plus remarquables (voir de haut en bas) :

  • connecteur pour indicateur LCD (CN1);
  • tweeter (SP1) ;
  • Pm25LD010 (spécification) Clé USB SPI (U2) ;
  • Contrôleur Jmicron JMS539 (spécification) pour USB-SATA (U1) ;
  • Connecteur USB 3 (J1).

Le lecteur flash SPI stocke le micrologiciel du JMS539 et certains paramètres.

2.2. Tableau indicateur LCD

Il n'y a rien de remarquable sur la carte LCD.

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties
Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Seulement:

  • Indicateur LCD d'origine inconnue (probablement avec un jeu de polices chinoises) ; avec contrôle séquentiel ;
  • Connecteur ruban pour carte clavier.

2.3. Tableau de clavier

En examinant le clavier, les choses prennent une tournure plus intéressante.

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Ici, au dos, nous voyons un connecteur ruban, ainsi qu'un microcontrôleur Cypress CY8C21434 PSoC 1 (ci-après nous l'appellerons simplement PSoC)

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

CY8C21434 utilise le jeu d'instructions M8C (voir documentation). Sur [page produit]( (http://www.cypress.com/part/cy8c21434-24ltxi) il est indiqué qu'il supporte la technologie CapSense (solution de Cypress, pour claviers capacitifs). Ici vous pouvez voir le connecteur à cinq broches que j'ai soudé - il s'agit d'une approche standard pour connecter un programmateur externe via l'interface ISSP.

2.4. En regardant les fils

Voyons ce qui est connecté ici. Pour cela, il suffit de tester les fils avec un multimètre :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Explications pour ce schéma dessiné sur le genou :

  • Le PSoC est décrit dans la spécification technique ;
  • le connecteur suivant, celui de droite, est l'interface ISSP, qui, par la volonté du destin, correspond à ce qui est écrit à son sujet sur Internet ;
  • Le connecteur le plus à droite est la borne du connecteur ruban à la carte clavier ;
  • Le rectangle noir est un dessin du connecteur CN1, conçu pour connecter la carte principale à la carte LCD. P11, P13 et P4 sont connectés aux broches PSoC 11, 13 et 4 de la carte LCD.

3. Séquence des étapes d'attaque

Maintenant que nous savons de quels composants se compose ce lecteur, nous devons : 1) nous assurer que la fonctionnalité de cryptage de base est réellement présente ; 2) découvrir comment les clés de cryptage sont générées/enregistrées ; 3) trouver où exactement le code PIN sera vérifié.

Pour ce faire, j'ai suivi les étapes suivantes :

  • a effectué un vidage de données à partir d'un lecteur flash SPI ;
  • a essayé de vider les données d'un lecteur flash PSoC ;
  • vérifié que la communication entre Cypress PSoC et JMS539 contient réellement des frappes au clavier ;
  • Je me suis assuré que lors de la modification du mot de passe, rien n'était écrasé dans la clé USB SPI ;
  • était trop paresseux pour inverser le firmware 8051 de JMS539.

3.1. Prendre un vidage de données à partir d'un lecteur flash SPI

Cette procédure est très simple :

  • connectez les sondes aux pattes de la clé USB : CLK, MOSI, MISO et (facultatif) EN ;
  • "renifler" les communications avec un renifleur à l'aide d'un analyseur logique (j'ai utilisé Saleae Logic Pro 16);
  • décoder le protocole SPI et exporter les résultats au format CSV ;
  • profiter de decode_spi.rbpour analyser les résultats et obtenir un dump.

Veuillez noter que cette approche fonctionne particulièrement bien dans le cas du contrôleur JMS539, puisque ce contrôleur charge tout le firmware du lecteur flash au stade de l'initialisation.

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

Après avoir effectué un dump du lecteur flash SPI, je suis arrivé à la conclusion que sa seule tâche est de stocker le micrologiciel du dispositif de contrôle JMicron, intégré au microcontrôleur 8051. Malheureusement, faire un dump de la clé USB SPI s'est avéré inutile :

  • lorsque le code PIN est modifié, le dump du lecteur flash reste le même ;
  • Après la phase d'initialisation, l'appareil n'accède pas au lecteur flash SPI.

3.2. Renifler les communications

C'est une façon de déterminer quelle puce est chargée de vérifier les communications pour l'heure/le contenu qui vous intéresse. Comme nous le savons déjà, le contrôleur USB-SATA est connecté au LCD Cypress PSoC via le connecteur CN1 et deux rubans. Par conséquent, nous connectons les sondes aux trois pattes correspondantes :

  • P4, entrée/sortie générale ;
  • P11, I2C SCL ;
  • P13, I2C SDA.

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Puis on lance l'analyseur logique Saleae et on saisit sur le clavier : « 123456~ ». En conséquence, nous voyons le diagramme suivant.

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

On y voit trois canaux d'échange de données :

  • il y a plusieurs courtes rafales sur le canal P4 ;
  • sur P11 et P13 - échange de données presque continu.

En zoomant sur le premier pic du canal P4 (rectangle bleu dans la figure précédente), on voit ce qui suit :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Ici vous pouvez voir que sur P4 il y a près de 70 ms d'un signal monotone, qui m'a d'abord semblé jouer le rôle d'un signal d'horloge. Cependant, après avoir passé un peu de temps à vérifier mes suppositions, j'ai découvert qu'il ne s'agissait pas d'un signal d'horloge, mais d'un flux audio qui est émis vers le tweeter lorsque les touches sont enfoncées. Par conséquent, cette section du signal elle-même ne contient aucune information utile pour nous. Cependant, il peut être utilisé comme indicateur pour savoir quand le PSoC enregistre une pression sur une touche.

Cependant, le dernier flux audio P4 est un peu différent : c'est l'audio du « PIN invalide » !

En revenant au graphique de frappe, en zoomant sur le dernier graphique du flux audio (voir à nouveau le rectangle bleu), nous obtenons :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Ici, nous voyons des signaux monotones sur P11. Il semble donc que ce soit le signal d'horloge. Et P13 sont des données. Remarquez comment le motif change après la fin du bip. Il serait intéressant de voir ce qui se passe ici.

Les protocoles qui fonctionnent avec deux fils sont généralement SPI ou I2C, et la spécification technique sur Cypress indique que ces broches correspondent à I2C, ce qui, comme nous le voyons, est vrai dans notre cas :

Inversion et piratage du disque dur externe à cryptage automatique Aigo. Partie 1 : Disséquer en plusieurs parties

Le chipset USB-SATA interroge constamment le PSoC pour lire l'état de la clé, qui par défaut est « 0 ». Ensuite, lorsque vous appuyez sur la touche « 1 », cela passe à « 1 ». La transmission finale immédiatement après avoir appuyé sur « ~ » est différente si un mauvais code PIN est saisi. Cependant, pour le moment, je n’ai pas vérifié ce qui s’y transmet réellement. Mais je soupçonne qu’il est peu probable qu’il s’agisse d’une clé de cryptage. Quoi qu'il en soit, consultez la section suivante pour comprendre comment j'ai supprimé le firmware interne du PSoC.

Source: habr.com

Ajouter un commentaire