Inverser et pirater le disque dur externe à chiffrement automatique d'Aigo. Partie 1: Dissection en parties

Inverser et pirater des disques externes à chiffrement automatique est mon ancien passe-temps. Dans le passé, je pratiquais avec des modèles tels que le Zalman VE-400, le Zalman ZM-SHE500, le Zalman ZM-VE500. Plus récemment, un collègue m'a apporté une autre exposition: Patriot (Aigo) SK8671, qui est construite selon une conception typique - un indicateur LCD et un clavier pour entrer un code PIN. Voici ce qui en est sorti ...


1. Introduction
2. Architecture matérielle
- 2.1. Carte principale
- 2.2. Carte LCD
- 2.3. Carte clavier
- 2.4. Nous regardons les fils
3. La séquence des étapes d'attaque
- 3.1. Supprimer le vidage de données du lecteur flash SPI
- 3.2. Communication sniff




1. Introduction



Logement



Emballage


L'accès aux données stockées sur le disque, qui est censé être crypté, se fait après saisie du code PIN. Quelques notes d'introduction sur cet appareil:


  • Pour changer le code PIN, appuyez sur F1 avant de déverrouiller;
  • Le code PIN doit comprendre entre 6 et 9 chiffres;
  • Après 15 tentatives incorrectes, le disque est effacé.


2. Architecture matérielle


Tout d'abord, nous préparons l'appareil en plusieurs parties afin de comprendre de quels composants il se compose. La tâche la plus fastidieuse est d'ouvrir le boîtier: beaucoup de rouages ​​microscopiques et de plastique. Après avoir ouvert le boîtier, nous voyons ce qui suit (faites attention au connecteur à cinq broches soudé par moi):




2.1. Carte principale


La carte principale est assez simple:



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


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

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



2.2. Carte LCD


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




Juste:


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


2.3. Carte clavier


Lorsque vous regardez le clavier, les choses prennent une tournure plus intéressante.



Ici, à l'arrière, nous voyons le connecteur ruban, ainsi que le Cypress CY8C21434 - le microcontrôleur PSoC 1 (ci-après dénommé simplement PSoC)



CY8C21434 utilise le jeu d'instructions M8C (voir la documentation ). Sur la page du produit, il est indiqué qu'il prend en charge la technologie CapSense (une solution de Cypress, pour les claviers capacitifs). Ici, je peux voir le connecteur à cinq broches soudé par moi - c'est une approche standard pour connecter un programmateur externe via l'interface ISSP.



2.4. Nous regardons les fils


Voyons ce qui est lié à cela. Pour ce faire, il suffit de sonner les fils avec un multimètre:



Explications pour ce diagramme dessiné au genou:


  • PSoC est décrit dans la spécification technique;
  • le connecteur suivant, celui de droite est une interface ISSP qui, par la volonté du destin, correspond à ce qui est écrit à ce sujet sur Internet;
  • le connecteur le plus à droite est une borne pour un connecteur ruban avec une 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 - connectés aux pieds PSoC 11, 13 et 4, sur la carte LCD.


3. La 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 chiffrement de base est réellement présente; 2) découvrir comment les clés de chiffrement sont générées / stockées; 3) trouver où exactement le code PIN est vérifié.


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


  • supprimé un vidage de données d'un lecteur flash SPI;
  • J'ai essayé de supprimer le vidage de données du lecteur flash PSoC;
  • fait en sorte que l'échange de données entre Cypress PSoC et JMS539 contienne réellement les touches enfoncées;
  • fait en sorte que lors du changement de mot de passe, rien ne soit écrasé dans le lecteur flash SPI;
  • était trop paresseux pour inverser le firmware 8051 de JMS539.


3.1. Supprimer le vidage de données du lecteur flash SPI


Cette procédure est très simple:


  • connectez les sondes aux pieds du lecteur flash: CLK, MOSI, MISO et (en option) EN;
  • Communications «sniff» utilisant un sniffer utilisant un analyseur logique (j'ai utilisé Saleae Logic Pro 16 );
  • décoder le protocole SPI et exporter les résultats vers CSV;
  • Utilisez decode_spi.rb pour analyser les résultats et obtenir un vidage.

Veuillez noter que cette approche dans le cas du contrôleur JMS539 fonctionne particulièrement bien, car ce contrôleur charge l'intégralité du micrologiciel à partir du lecteur flash USB pendant la phase d'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 retiré le vidage du lecteur flash SPI, je suis arrivé à la conclusion que sa seule tâche est de stocker le firmware de l'unité de contrôle JMicron, qui est intégrée au microcontrôleur 8051. Malheureusement, vider le lecteur flash SPI s'est avéré inutile:


  • lors du changement de code PIN, le vidage 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. Communication sniff


C'est une façon de trouver quelle puce est responsable de la vérification des communications pour l'heure / le contenu qui vous intéresse. Comme nous le savons déjà, le contrôleur USB-SATA est connecté à l'écran LCD Cypress PSoC via le connecteur CN1 et deux bandes. Par conséquent, nous connectons les sondes aux trois jambes correspondantes:


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


Ensuite, nous démarrons l'analyseur logique Saleae et entrons sur le clavier: «123456 ~». En conséquence, nous voyons le diagramme suivant.



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


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

En augmentant la première rafale sur le canal P4 (le rectangle bleu de la figure précédente), nous voyons ce qui suit:



Ici, vous pouvez voir que sur P4, il y a près de 70 ms d'un signal uniforme, qui, comme il me semblait au début, joue le rôle d'un signal d'horloge. Cependant, après avoir passé un certain temps à essayer de vérifier ma supposition, j'ai trouvé que ce n'est pas un signal d'horloge, mais un flux audio qui est émis vers le squeaker lorsque vous appuyez sur les touches. Par conséquent, cette section de signal elle-même ne contient pas d'informations utiles pour nous. Cependant, il peut être utilisé comme indicateur - pour connaître le moment où le PSoC enregistre une frappe.


Cependant, le dernier flux audio du canal P4 est légèrement différent des autres: c'est le son du «mauvais code PIN»!


Revenant au diagramme des frappes, en augmentant le diagramme du dernier flux audio (voir à nouveau le rectangle bleu) on obtient:



Ici, nous voyons des signaux monotones sur P11. Il semble donc que ce soit l'horloge. Et P13 est 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 de Cypress dit que ces contacts correspondent à I2C, ce qui, comme nous le voyons, est vrai pour notre cas:



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

Source: https://habr.com/ru/post/fr455515/


All Articles