Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Reverse Engineering und Hacken von externen selbstverschlüsselnden Laufwerken ist seit langem mein Hobby. In der Vergangenheit hatte ich die Gelegenheit, mit Modellen wie Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500 zu arbeiten. Vor kurzem hat mir ein Kollege noch ein weiteres Exemplar gebracht: Patriot (Aigo) SK8671, das in einem typischen Design gebaut ist – mit einem LCD-Display und einer Tastatur zum Eingeben des PIN-Codes. Das ist das Ergebnis...

1. Einführung
2. Hardware-Architektur
– 2.1. Hauptplatine
– 2.2. LCD-Display-Platine
– 2.3. Tastatur-Platine
– 2.4. Wir schauen uns die Drähte an
3. Schritt-für-Schritt-Angriffsequenz
– 3.1. Daten-Dump der SPI-Flash-Speicher
– 3.2. Kommunikationsüberprüfung

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile


1. Einführung

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile
Gehäuse

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile
Verpackung

Der Zugang zu den auf der Festplatte gespeicherten Daten, die angeblich verschlüsselt sind, erfolgt nach Eingabe des PIN-Codes. Einige einführende Bemerkungen zu diesem Gerät:

  • Um den PIN-Code zu ändern, muss F1 vor der Entsperrung gedrückt werden;
  • Der PIN-Code muss aus 6 bis 9 Ziffern bestehen;
  • Nach 15 falschen Versuchen wird das Laufwerk gelöscht.

2. Hardware-Architektur

Zuerst zerlegen wir das Gerät in Einzelteile, um zu verstehen, aus welchen Komponenten es besteht. Die mühsamste Aufgabe ist das Öffnen des Gehäuses: viele mikroskopische Schrauben und Plastik. Nach dem Öffnen des Gehäuses sehen wir Folgendes (beachten Sie den von mir angelöteten fünf-poligen Stecker):

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

2.1. Hauptplatine

Die Hauptplatine ist ziemlich einfach:

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Die bemerkenswertesten Teile (von oben nach unten):

  • Stecker für das LCD-Display (CN1);
  • Buzzer (SP1);
  • Pm25LD010 (Spezifikation) SPI-Flash-Speicher (U2);
  • Jmicron JMS539 (Spezifikation) Controller für USB-SATA (U1);
  • USB 3 Schnittstelle (J1).

Der SPI-Flash-Speicher speichert die Firmware für JMS539 und einige Einstellungen.

2.2. LCD-Display-Platine

Auf der LCD-Platine gibt es nichts Bemerkenswertes.

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile
Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Nur:

  • LCD-Display unbekannter Herkunft (wahrscheinlich mit einem chinesischen Schriftsatz); mit serieller Steuerung;
  • Flachbandstecker für die Tastatur-Platine.

2.3. Tastatur-Platine

Bei der Untersuchung der Tastatur-Platine wird es interessanter.

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Hier auf der Rückseite sehen wir einen Flachbandstecker sowie einen Cypress CY8C21434 – einen PSoC 1 Mikrocontroller (im Folgenden einfach PSoC genannt)

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Der CY8C21434 verwendet den M8C Befehlssatz (siehe. Dokumentation). Auf der [Produktseite]( (http://www.cypress.com/part/cy8c21434-24ltxi) wird angegeben, dass er die Technologie CapSense unterstützt. (Entscheidung von Cypress für kapazitive Tastaturen). Hier sehen wir den von mir angelöteten fünfpoligen Stecker – dies ist der Standardansatz zur Verbindung eines externen Programmiergerätes über die ISSP-Schnittstelle.

2.4. Wir schauen uns die Drähte an

Lassen Sie uns klären, was hier mit was verbunden ist. Dazu genügt es, die Drähte mit einem Multimeter durchzumessen:

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Erklärungen zu diesem hastig skizzierten Diagramm:

  • PSoC ist in der technischen Spezifikation beschrieben;
  • der nächste Stecker, der rechts liegt – ISSP-Schnittstelle, die dem entspricht, was im Internet über ihn geschrieben wird;
  • der ganz rechte Stecker – das ist der Anschluss für den Flachbandstecker zur Tastaturplatine;
  • schwarzes Rechteck – Schaltbild des Steckers CN1, das für die Verbindung der Hauptplatine mit dem LCD-Panel vorgesehen ist. P11, P13 und P4 sind an die Pins PSoC 11, 13 und 4 auf dem LCD-Panel angeschlossen.

3. Schritt-für-Schritt-Angriffsequenz

Jetzt, da wir wissen, aus welchen Komponenten dieser Speicher besteht, müssen wir: 1) sicherstellen, dass die grundlegende Verschlüsselungsfunktionalität tatsächlich vorhanden ist; 2) herausfinden, wie die Verschlüsselungsschlüssel generiert/speichert werden; 3) finden, wo genau der PIN-Code überprüft wird.

Zu diesem Zweck habe ich folgende Schritte unternommen:

  • Daten-Dump des SPI-Flash-Speichers erstellt;
  • versucht, einen Dump der PSoC-Firmware zu erstellen;
  • sichergestellt, dass der Datenaustausch zwischen Cypress PSoC und JMS539 tatsächlich die gedrückten Tasten enthält;
  • überprüft, dass beim Ändern des Passworts im SPI-Flash-Speicher nichts überschrieben wird;
  • war zu faul, um die 8051-Firmware von JMS539 zurückzuverfolgen.

3.1. Erstellen eines Daten-Dumps des SPI-Flash-Speichers

Dieses Verfahren ist sehr einfach:

  • Verbinden Sie die Sonden mit den Pins des Flash-Speichers: CLK, MOSI, MISO und (optional) EN;
  • die Kommunikation mit einem Sniffer abhören, indem Sie einen Logikanalysator verwenden (ich habe verwendet Saleae Logic Pro 16);
  • den SPI-Protokoll dekodieren und die Ergebnisse in CSV exportieren;
  • benutzen Sie decode_spi.rb, um die Ergebnisse zu parsen und einen Dump zu erhalten.

Beachten Sie, dass dieser Ansatz im Fall des JMS539-Controllers besonders gut funktioniert, da dieser Controller beim Initialisieren die gesamte Firmware vom Flash 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 ein Dump von dem SPI-Flash gezogen habe, bin ich zu dem Schluss gekommen, dass dessen einzige Aufgabe – die Speicherung der Firmware für das Steuergerät von JMicron ist, das in den 8051-Mikrocontroller eingebaut ist. Leider hat sich das Ziehen des Dumps von dem SPI-Flash als nutzlos herausgestellt:

  • bei der Änderung des PIN-Codes bleibt der Dump des Flashs gleich;
  • nach der Initialisierungsphase spricht das Gerät nicht mehr mit dem SPI-Flash.

3.2. Überwachung der Kommunikation

Dies ist eine Möglichkeit herauszufinden, welcher Chip für die Überprüfung der Kommunikation bezüglich Zeit/Inhalt verantwortlich ist. Wie wir bereits wissen, ist der USB-SATA-Controller mit dem Cypress PSoC LCD über den Anschluss CN1 und zwei Bänder verbunden. Daher schließen wir die Sonden an die drei entsprechenden Pins an:

  • P4, allgemeine Ein- und Ausgaben;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Dann starten wir den Saleae-Logikanalysator und geben auf der Tastatur ein: "123456~". Das Ergebnis zeigt uns das folgende Diagramm.

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Darin können wir drei Datenkanäle sehen:

  • auf dem Kanal P4 gibt es mehrere kurze Pulse;
  • auf P11 und P13 – einen fast kontinuierlichen Datenaustausch.

Wenn wir den ersten Pulse auf dem Kanal P4 (blaues Rechteck des vorherigen Diagramms) vergrößern, sehen wir Folgendes:

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Hier ist zu sehen, dass auf P4 fast 70ms ein einheitliches Signal vorliegt, das mir zunächst wie ein SynchronisationSignal vorkam. Nach genauerer Prüfung habe ich jedoch festgestellt, dass es sich nicht um ein Synchronisationssignal handelt, sondern um einen Audiostream, der bei Tastendruck über einen Lautsprecher ausgegeben wird. Daher enthält dieser Abschnitt des Signals für uns keine nützlichen Informationen. Er kann jedoch als Indikator verwendet werden, um zu wissen, wann der PSoC die Tasteneingabe registriert.

Der letzte Audiostream des Kanals P4 unterscheidet sich jedoch etwas von den anderen: Es ist das Geräusch für "falscher PIN-Code"!

Wenn wir zum Diagramm der Tastenanschläge zurückkehren und das letzte Audiostream-Diagramm vergrößern (siehe erneut das blaue Rechteck), erhalten wir:

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Hier sehen wir einheitliche Signale auf P11. Es scheint also, dass dies das Synchronisationssignal ist. Und P13 – Daten. Beachten Sie, wie sich das Muster nach dem Ende des Tonsignals ändert. Es wäre interessant zu sehen, was hier geschieht.

Protokolle, die mit zwei Drähten arbeiten, sind normalerweise SPI oder I2C, und in den technischen Spezifikationen von Cypress steht, dass diese Anschlüsse zu I2C gehören, was sich, wie wir sehen, auch für unseren Fall bewahrheitet:

Reverse Engineering und Hacken eines selbstverschlüsselnden externen HDD-Laufwerks von Aigo. Teil 1: Zerlegen in Einzelteile

Der USB-SATA-Chipsatz fragt ständig den PSoC ab, um den Zustand der Taste zu lesen, der standardmäßig "0" ist. Wenn die Taste "1" gedrückt wird, ändert sich der Zustand auf "1". Die endgültige Übertragung unterscheidet sich, unmittelbar nach dem Drücken von "~", wenn ein falscher PIN-Code eingegeben wird. Ich habe jedoch bis jetzt noch nicht überprüft, was tatsächlich übertragen wird. Ich vermute jedoch, dass es sich kaum um einen Verschlüsselungsschlüssel handelt. Sieh dir auf jeden Fall den nächsten Abschnitt an, um zu verstehen, wie ich das interne Firmware-Abbild des PSoC extrahiert habe.

Quelle: habr.com

60GB SSD 8Gb DDR4