Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Reverse engineering and hacking external self-encrypting drives has been a long-standing hobby of mine. In the past, I have worked with models such as Zalman VE-400, Zalman ZM-SHE500, and Zalman ZM-VE500. Just recently, a colleague brought me another specimen: Patriot (Aigo) SK8671, which is built in a typical design – a display and a keyboard for PIN code entry. Here’s what I made of it…

1. Inleiding
2. Hardware architecture
– 2.1. Main board
– 2.2. LCD indicator board
– 2.3. Keyboard board
– 2.4. Looking at the wires
3. Sequence of attack steps
– 3.1. Dumping the data from the SPI flash
– 3.2. Sniffing the communications

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat


1. Inleiding

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat
Behuizing

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat
Packaging

Access to the data saved on the disk, which is supposedly encrypted, occurs after entering the PIN code. A few introductory remarks regarding this device:

  • To change the PIN code, you must press F1 before unlocking;
  • The PIN code must consist of 6 to 9 digits;
  • After 15 incorrect attempts, the disk is cleared.

2. Hardware architecture

First, we disassemble the device to understand what components it consists of. The most tedious task is opening the case: many microscopic screws and plastic. Once the case is opened, we see the following (note the five-pin connector soldered by me):

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

2.1. Main board

The main board is quite simple:

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

The most noteworthy parts (see top to bottom):

The SPI flash stores the firmware for JMS539 and some settings.

2.2. LCD indicator board

There’s nothing remarkable on the LCD board.

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat
Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Just:

  • LCD indicator of unknown origin (probably from a Chinese font set); with serial control;
  • ribbon connector for the keyboard board.

2.3. Keyboard board

Upon inspecting the keyboard board, things take a more interesting turn.

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Here, on the back side, we see a ribbon connector, as well as a Cypress CY8C21434 – a PSoC 1 microcontroller (from now on, we will simply call it PSoC)

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

The CY8C21434 uses an M8C instruction set (see. documentatie). On the [product page]( (http://www.cypress.com/part/cy8c21434-24ltxi) it is stated that it supports the CapSense (a solution from Cypress for capacitive keyboards). Here we see the five-pin connector soldered by me – this is the standard approach for connecting an external programmer via the ISSP interface.

2.4. Kijken naar de draden

Laten we bekijken wat hier met elkaar verbonden is. Het is voldoende om de draden door te meten met een multimeter:

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Toelichtingen bij dit op de knie getekende schema:

  • PSoC is beschreven in de technische specificatie;
  • de volgende aansluiting, degene rechts ervan – is de ISSP-interface, die toevallig overeenkomt met wat erover op internet is geschreven;
  • de uiterst rechtse aansluiting – is de terminal voor de ribbon connector met de toetsenbordplank;
  • de zwarte rechthoek – schema van de connector CN1, bedoeld voor de verbinding van de hoofdprintplaat met de LCD-printplaat. P11, P13 en P4 zijn verbonden met de pinnen PSoC 11, 13 en 4, op de LCD-printplaat.

3. Sequence of attack steps

Nu we weten uit welke componenten deze opslag bestaat, moeten we: 1) ervoor zorgen dat de basisfunctionaliteit van versleuteling werkelijk aanwezig is; 2) achterhalen hoe de versleutelingssleutels worden gegenereerd/opgeslagen; 3) vinden waar de pincode precies wordt gecontroleerd.

Daarvoor heb ik de volgende stappen ondernomen:

  • een dump van de SPI-flash gemaakt;
  • getracht een dump van de PSoC-flash te maken;
  • erop toegezien dat de gegevensuitwisseling tussen de Cypress PSoC en JMS539 feitelijk de ingedrukte toetsen bevat;
  • erop toegezien dat er niets wordt herschreven in de SPI-flash bij het wijzigen van het wachtwoord;
  • was te lui om de 8051-firmware van de JMS539 te reverse-engineeren.

3.1. Maak een dump van de SPI-flash

Deze procedure is heel eenvoudig:

  • sluit de sondes aan op de pinnen van de flash: CLK, MOSI, MISO en (optioneel) EN;
  • «sniff» de communicatie met een scanner, gebruikmakend van een logic analyzer (ik gebruikte Saleae Logic Pro 16);
  • decodeer het SPI-protocol en exporteer de resultaten naar CSV;
  • gebruik decode_spi.rb, om de resultaten te parseren en een dump te verkrijgen.

Let op, deze aanpak werkt bijzonder goed met de JMS539-controller, omdat deze controller tijdens de initialisatiefase alle firmware van de flashlaadt.

$ 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

Na het maken van de dump van de SPI-flash, kwam ik tot de conclusie dat het enige doel ervan is om de firmware voor het JMicron-besturingsapparaat op te slaan, dat is ingebouwd in de 8051-microcontroller. Helaas bleek het nemen van de dump van de SPI-flash nutteloos:

  • bij het wijzigen van de pincode blijft de dump van de flash hetzelfde;
  • na de initialisatiefase maakt het apparaat geen verbinding meer met de SPI-flash.

3.2. We onderzoeken de communicatie

Dit is een van de manieren om te achterhalen welke chip verantwoordelijk is voor het controleren van communicatie, voor de interessante tijd/content. Zoals bekend is, is de USB-SATA-controller verbonden met de LCD Cypress PSoC via connector CN1 en twee linten. Daarom sluiten we sondes aan op de drie overeenkomende pinnen:

  • P4, algemene I/O;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Vervolgens starten we de Saleae logische analistor en typen we op het toetsenbord: “123456~”. Het resultaat is de volgende diagram.

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Hierop zien we drie kanalen voor gegevensuitwisseling:

  • op kanaal P4 enkele korte pieken;
  • op P11 en P13 – bijna continu gegevensuitwisseling.

Door de eerste piek op kanaal P4 (de blauwe rechthoek van de vorige afbeelding) te vergroten, zien we het volgende:

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Hier is te zien dat er bijna 70 ms van eenzelfde signaal op P4 is, wat in eerste instantie leek te fungeren als een synchronsignaal. Echter, na enige tijd besteed aan het controleren van mijn hypothese, ontdekte ik dat dit geen synchronsignaal is, maar een audiostream die wordt uitgegeven aan de buzzer bij het indrukken van toetsen. Dus op zichzelf geeft dit signaalsegment ons geen nuttige informatie. Maar het kan worden gebruikt als een indicator — om het moment te weten wanneer de PSoC de toetsindruk detecteert.

Echter, de laatste audiostream op kanaal P4 verschilt een beetje van de andere: dit is het geluid voor ‘onjuiste pincode’!

Terugkijkend naar de diagram van toetsindrukken, krijgen we bij het vergroten van de diagram van de laatste audiostream (zie opnieuw de blauwe rechthoek):

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

Hier zien we uniforme signalen op P11. Dus het lijkt erop dat dit het synchronsignaal is. En P13 zijn de gegevens. Let op hoe het patroon verandert na het einde van het geluidssignaal. Het zou interessant zijn om te zien wat hier gebeurt.

Protocollen die met twee draden werken, zijn meestal SPI of I2C, en in de technische specificatie van Cypress staat dat deze contacten overeenkomen met I2C, wat zoals we zien ook voor onze situatie geldt:

Reverseren en hacken van een zelfversleutelende externe HDD Aigo. Deel 1: We dissecteren het apparaat

De USB-SATA-chipset ondervraagt voortdurend de PSoC om de status van de toets te lezen, die standaard op '0' staat. Vervolgens verandert deze in '1' wanneer de toets '1' wordt ingedrukt. De uiteindelijke transmissie, onmiddellijk na het indrukken van '˜', verschilt als een onjuiste pincode is ingevoerd. Tot nu toe heb ik echter niet gecontroleerd wat er daadwerkelijk wordt verzonden. Maar ik vermoed dat het moeilijk is dat dit de versleuteling sleutel is. Hoe dan ook, zie de volgende sectie om te begrijpen hoe ik de interne firmware van de PSoC heb gedumpt.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster