Das Umkehren und Hacken externer selbstverschlüsselnder Laufwerke ist mein altes Hobby. In der Vergangenheit habe ich mit Modellen wie dem Zalman VE-400, dem Zalman ZM-SHE500 und dem Zalman ZM-VE500 geübt. In jüngerer Zeit brachte mir ein Kollege ein weiteres Exponat: Patriot (Aigo) SK8671, das nach einem typischen Design gebaut wurde - eine LCD-Anzeige und eine Tastatur zur Eingabe eines PIN-Codes. Hier ist, was daraus wurde ...
1. Einleitung
2. Hardwarearchitektur
- 2.1. Hauptplatine
- 2.2. LCD-Karte
- 2.3. Tastatur
- 2.4. Wir schauen uns die Drähte an
3. Die Reihenfolge der Angriffsschritte
- 3.1. Entfernen Sie den Datendump des SPI-Flash-Laufwerks
- 3.2. Kommunikation schnüffeln

1. Einleitung

Gehäuse

Verpackung
Der Zugriff auf die auf der Festplatte gespeicherten Daten, die angeblich verschlüsselt sind, erfolgt nach Eingabe des PIN-Codes. Einige einleitende Hinweise zu diesem Gerät:
- Um den PIN-Code zu ändern, drücken Sie vor dem Entsperren F1.
- Der PIN-Code muss zwischen 6 und 9 Stellen liegen.
- Nach 15 falschen Versuchen wird die Festplatte gelöscht.
2. Hardwarearchitektur
Zunächst bereiten wir das Gerät in Teile vor, um zu verstehen, aus welchen Komponenten es besteht. Die mühsamste Aufgabe ist das Öffnen des Gehäuses: viele mikroskopisch kleine Zahnräder und Plastik. Nachdem wir das Gehäuse geöffnet haben, sehen wir Folgendes (achten Sie auf den von mir gelöteten fünfpoligen Stecker):

2.1. Hauptplatine
Die Hauptplatine ist ziemlich einfach:

Die bemerkenswertesten Teile (siehe von oben nach unten):
- LCD-Anschluss (CN1);
- Hochtöner (SP1);
- Pm25LD010 ( Spezifikation ) SPI-Flash-Laufwerk (U2);
- Jmicron JMS539-Controller ( Spezifikation ) für USB-SATA (U1);
- USB 3-Anschluss (J1).
Das SPI-Flash-Laufwerk speichert die Firmware für das JMS539 und einige Einstellungen.
2.2. LCD-Karte
Auf der LCD-Platine ist nichts Besonderes zu sehen.


Nur:
- LCD-Anzeige unbekannter Herkunft (wahrscheinlich mit einem chinesischen Schriftsatz); mit sequentieller Steuerung;
- Flachbandanschluss für Tastatur.
2.3. Tastatur
Wenn Sie sich die Tastatur ansehen, werden die Dinge interessanter.

Hier auf der Rückseite sehen wir den Flachbandanschluss sowie die Cypress CY8C21434 - den Mikrocontroller PSoC 1 (im Folgenden einfach PSoC genannt).

CY8C21434 verwendet den M8C-Befehlssatz (siehe Dokumentation ). Auf der Produktseite wird angegeben, dass es die CapSense- Technologie unterstützt (eine Lösung von Cypress für kapazitive Tastaturen). Hier sehe ich den von mir gelöteten fünfpoligen Stecker - dies ist ein Standardansatz zum Anschließen eines externen Programmiergeräts über die ISSP-Schnittstelle.
2.4. Wir schauen uns die Drähte an
Lassen Sie uns herausfinden, was damit zusammenhängt. Dazu reicht es aus, die Drähte mit einem Multimeter anzurufen:

Erklärungen für dieses kniegezeichnete Diagramm:
- PSoC ist in der technischen Spezifikation beschrieben;
- Der nächste Anschluss, der rechts, ist eine ISSP-Schnittstelle, die nach dem Willen des Schicksals dem entspricht, was im Internet darüber geschrieben steht.
- Der Anschluss ganz rechts ist ein Anschluss für einen Flachbandanschluss mit einer Tastaturplatine.
- Das schwarze Rechteck ist eine Zeichnung des CN1-Anschlusses, mit der die Hauptplatine mit der LCD-Platine verbunden wird. P11, P13 und P4 - verbunden mit den PSoC-Beinen 11, 13 und 4 auf der LCD-Platine.
3. Die Reihenfolge der Angriffsschritte
Nachdem wir nun wissen, aus welchen Komponenten dieses Laufwerk besteht, müssen wir: 1) sicherstellen, dass die grundlegende Verschlüsselungsfunktionalität wirklich vorhanden ist; 2) herausfinden, wie Verschlüsselungsschlüssel generiert / gespeichert werden; 3) Finden Sie heraus, wo genau der PIN-Code überprüft wird.
Dazu habe ich folgende Schritte ausgeführt:
- einen Datendump eines SPI-Flash-Laufwerks entfernt;
- Ich habe versucht, den Datendump des PSoC-Flash-Laufwerks zu entfernen.
- Stellen Sie sicher, dass der Datenaustausch zwischen Cypress PSoC und JMS539 tatsächlich die gedrückten Tasten enthält.
- Stellen Sie sicher, dass beim Ändern des Kennworts nichts im SPI-Flash-Laufwerk überschrieben wird.
- war zu faul, um die 8051-Firmware von JMS539 umzukehren.
3.1. Entfernen Sie den Datendump des SPI-Flash-Laufwerks
Dieses Verfahren ist sehr einfach:
Bitte beachten Sie, dass dieser Ansatz beim JMS539-Controller besonders gut funktioniert, da dieser Controller während der Initialisierungsphase die gesamte Firmware vom USB-Flash-Laufwerk lädt.
$ 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
Nachdem ich den Speicherauszug vom SPI-Flash-Laufwerk entfernt hatte, kam ich zu dem Schluss, dass die einzige Aufgabe darin besteht, die Firmware für die JMicron-Steuereinheit zu speichern, die in den 8051-Mikrocontroller integriert ist. Leider erwies sich das Dumping des SPI-Flash-Laufwerks als nutzlos:
- Beim Ändern des PIN-Codes bleibt der Speicherauszug des Flash-Laufwerks unverändert.
- Nach der Initialisierungsphase greift das Gerät nicht auf das SPI-Flash-Laufwerk zu.
3.2. Kommunikation schnüffeln
Dies ist eine Möglichkeit herauszufinden, welcher Chip für die Überprüfung der Kommunikation auf die Zeit / den Inhalt von Interesse verantwortlich ist. Wie wir bereits wissen, ist der USB-SATA-Controller über den CN1-Anschluss und zwei Bänder mit dem Cypress PSoC-LCD verbunden. Deshalb verbinden wir die Sonden mit den drei entsprechenden Beinen:
- P4, allgemeine Eingabe / Ausgabe;
- P11, I2C SCL;
- P13, I2C SDA.

Dann starten wir den Saleae Logic Analyzer und geben auf der Tastatur Folgendes ein: „123456 ~“. Als Ergebnis sehen wir das folgende Diagramm.

Darauf sehen wir drei Datenaustauschkanäle:
- Kanal P4 hat mehrere kurze Bursts;
- auf P11 und P13 - fast kontinuierlicher Datenaustausch.
Wenn Sie den ersten Burst auf Kanal P4 (das blaue Rechteck der vorherigen Abbildung) erhöhen, sehen Sie Folgendes:

Hier können Sie sehen, dass auf P4 fast 70 ms eines einheitlichen Signals vorhanden sind, das, wie es mir zunächst schien, die Rolle eines Taktsignals spielt. Nachdem ich einige Zeit damit verbracht hatte, meine Vermutung zu überprüfen, stellte ich fest, dass dies kein Taktsignal ist, sondern ein Audiostream, der beim Drücken der Tasten an den Quietscher ausgegeben wird. Daher enthält dieser Signalabschnitt selbst keine nützlichen Informationen für uns. Es kann jedoch als Indikator verwendet werden, um den Moment zu kennen, in dem der PSoC einen Tastendruck registriert.
Der letzte Audiostream des P4-Kanals unterscheidet sich jedoch geringfügig von den anderen: Dies ist der Sound für den „falschen Pincode“!
Wenn wir zum Diagramm der Tastenanschläge zurückkehren und das Diagramm des letzten Audiostreams vergrößern (siehe erneut das blaue Rechteck), erhalten wir:

Hier sehen wir monotone Signale auf P11. Es sieht also so aus, als wäre dies die Uhr. Und P13 sind Daten. Beachten Sie, wie sich das Muster nach dem Ende des Signaltons ändert. Es wäre interessant zu sehen, was hier passiert.
Die Protokolle, die mit zwei Drähten arbeiten, sind normalerweise SPI oder I2C, und die technische Spezifikation von Cypress besagt, dass diese Kontakte I2C entsprechen, was, wie wir sehen, für unseren Fall gilt:

Der USB-SATA-Chipsatz fragt ständig den PSoC ab, um den Schlüsselstatus zu lesen, der standardmäßig "0" ist. Wenn Sie dann die Taste "1" drücken, ändert sich diese in "1". Die endgültige Übertragung unmittelbar nach dem Drücken von „~“ ist anders, wenn der falsche PIN-Code eingegeben wird. Im Moment habe ich jedoch nicht überprüft, was dort tatsächlich übertragen wurde. Ich vermute aber, dass dies kaum ein Verschlüsselungsschlüssel ist. Wie auch immer, lesen Sie den nächsten Abschnitt, um zu verstehen, wie ich den Speicherauszug der internen PSoC-Firmware entfernt habe.