Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Reversere og hacke eksterne selvkrypterende drev er min gamle hobby. Tidligere havde jeg mulighed for at øve mig med modeller som Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. For nylig bragte en kollega mig en anden udstilling: Patriot (Aigo) SK8671, som er bygget efter et typisk design - en LCD-indikator og et tastatur til indtastning af en PIN-kode. Det kom der ud af det...

1. Introduktion
2. Hardwarearkitektur
– 2.1. Hovedtavle
– 2.2. LCD indikator bord
– 2.3. Tastatur bord
– 2.4. Ser på ledningerne
3. Sekvens af angrebstrin
– 3.1. Tager et datadump fra et SPI-flashdrev
– 3.2. Sniffende kommunikation

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele


1. Introduktion

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele
boliger

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele
Pakning

Adgang til de data, der er gemt på disken, som angiveligt er krypteret, udføres efter indtastning af PIN-koden. Et par indledende bemærkninger om denne enhed:

  • For at ændre PIN-koden skal du trykke på F1 før du låser op;
  • PIN-koden skal indeholde fra 6 til 9 cifre;
  • Efter 15 forkerte forsøg er disken ryddet.

2. Hardwarearkitektur

Først dissekerer vi enheden i dele for at forstå, hvilke komponenter den består af. Den mest kedelige opgave er at åbne sagen: en masse mikroskopiske skruer og plastik. Efter at have åbnet sagen ser vi følgende (vær opmærksom på det fembenede stik, jeg loddede):

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

2.1. Hovedtavle

Hovedkortet er ret simpelt:

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Dens mest bemærkelsesværdige dele (se fra top til bund):

  • stik til LCD-indikator (CN1);
  • diskanthøjttaler (SP1);
  • Pm25LD010 (specifikation) SPI-flashdrev (U2);
  • Jmicron JMS539 controller (specifikation) til USB-SATA (U1);
  • USB 3-stik (J1).

SPI-flashdrevet gemmer firmwaren til JMS539 og nogle indstillinger.

2.2. LCD indikator bord

Der er intet bemærkelsesværdigt på LCD-kortet.

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele
Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Kun:

  • LCD-indikator af ukendt oprindelse (sandsynligvis med et kinesisk skrifttypesæt); med sekventiel kontrol;
  • Båndstik til tastaturet.

2.3. Tastatur bord

Når man undersøger tastaturet, tager tingene en mere interessant drejning.

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Her på bagsiden ser vi et båndstik samt en Cypress CY8C21434 mikrocontroller PSoC 1 (i det følgende vil vi blot kalde det PSoC)

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

CY8C21434 bruger M8C instruktionssættet (se dokumentation). På [produktside]((http://www.cypress.com/part/cy8c21434-24ltxi) er det angivet, at det understøtter teknologien CapSense (løsning fra Cypress, til kapacitive tastaturer). Her kan du se det fembenede stik, jeg loddede - dette er en standardtilgang til tilslutning af en ekstern programmør via ISSP-interfacet.

2.4. Ser på ledningerne

Lad os finde ud af, hvad der er forbundet her. For at gøre dette skal du bare teste ledningerne med et multimeter:

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Forklaringer til dette diagram tegnet på knæet:

  • PSoC er beskrevet i den tekniske specifikation;
  • det næste stik, det til højre, er ISSP-grænsefladen, som efter skæbnens vilje svarer til, hvad der er skrevet om det på internettet;
  • Det stik længst til højre er terminalen for båndforbindelsen til tastaturet;
  • Det sorte rektangel er en tegning af CN1-stikket, designet til at forbinde hovedkortet med LCD-kortet. P11, P13 og P4 er forbundet til PSoC-ben 11, 13 og 4 på LCD-kortet.

3. Sekvens af angrebstrin

Nu hvor vi ved, hvilke komponenter dette drev består af, skal vi: 1) sikre os, at den grundlæggende krypteringsfunktionalitet faktisk er til stede; 2) finde ud af, hvordan krypteringsnøgler genereres/gemmes; 3) find, hvor præcis PIN-koden vil blive kontrolleret.

For at gøre dette gjorde jeg følgende trin:

  • tog et datadump fra et SPI-flashdrev;
  • forsøgte at dumpe data fra et PSoC-flashdrev;
  • verificeret, at kommunikationen mellem Cypress PSoC og JMS539 faktisk indeholder tastetryk;
  • Jeg sørgede for, at når jeg ændrede adgangskoden, bliver intet overskrevet i SPI-flashdrevet;
  • var for doven til at vende 8051-firmwaren fra JMS539.

3.1. Tager et datadump fra et SPI-flashdrev

Denne procedure er meget enkel:

  • tilslut prober til benene på flashdrevet: CLK, MOSI, MISO og (valgfrit) EN;
  • "snif" kommunikation med en sniffer ved hjælp af en logisk analysator (jeg brugte Saleae Logic Pro 16);
  • afkode SPI-protokol og eksporter resultater til CSV;
  • udnytte decode_spi.rbfor at analysere resultaterne og få et dump.

Bemærk venligst, at denne fremgangsmåde fungerer særligt godt i tilfælde af JMS539-controlleren, da denne controller indlæser al firmwaren fra flashdrevet på initialiseringsstadiet.

$ 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

Efter at have taget et dump fra SPI-flashdrevet, kom jeg til den konklusion, at dens eneste opgave er at gemme firmwaren til JMicron-kontrolenheden, som er indbygget i 8051-mikrocontrolleren. Desværre viste det sig at være nytteløst at tage et dump af SPI-flashdrevet:

  • når PIN-koden ændres, forbliver flashdrevets dump den samme;
  • Efter initialiseringsfasen har enheden ikke adgang til SPI-flashdrevet.

3.2. Sniffende kommunikation

Dette er en måde at finde ud af, hvilken chip der er ansvarlig for at kontrollere kommunikationen for tidspunktet/indholdet af interesse. Som vi allerede ved, er USB-SATA-controlleren forbundet til Cypress PSoC LCD via stik CN1 og to bånd. Derfor forbinder vi proberne til de tre tilsvarende ben:

  • P4, generel input/output;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Derefter starter vi Saleae logikanalysatoren og indtaster på tastaturet: "123456~". Som et resultat ser vi følgende diagram.

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

På den kan vi se tre dataudvekslingskanaler:

  • der er flere korte udbrud på kanal P4;
  • på P11 og P13 - næsten kontinuerlig dataudveksling.

Zoomer vi ind på den første spids på kanal P4 (blåt rektangel i den forrige figur), ser vi følgende:

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Her kan du se, at der på P4 er næsten 70ms af et monotont signal, som i første omgang forekom mig at spille rollen som et ursignal. Men efter at have brugt noget tid på at tjekke mit gæt, opdagede jeg, at dette ikke er et ursignal, men en lydstrøm, der udsendes til diskanthøjttaleren, når der trykkes på tasterne. Derfor indeholder dette afsnit af selve signalet ikke nyttig information for os. Det kan dog bruges som en indikator for at vide, hvornår PSoC'en registrerer et tastetryk.

Den seneste P4-lydstream er dog lidt anderledes: det er lyden for den "ugyldige PIN-kode"!

Vender vi tilbage til tastetryksgrafen og zoomer ind på den sidste lydstreamgraf (se det blå rektangel igen), får vi:

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

Her ser vi monotone signaler på P11. Så det ser ud til, at dette er ursignalet. Og P13 er data. Læg mærke til, hvordan mønsteret ændres efter bippet slutter. Det ville være interessant at se, hvad der sker her.

Protokoller, der fungerer med to ledninger, er normalt SPI eller I2C, og den tekniske specifikation på Cypress siger, at disse ben svarer til I2C, hvilket vi ser er sandt i vores tilfælde:

Reversering og hacking af Aigo selvkrypterende eksternt HDD-drev. Del 1: Dissekere i dele

USB-SATA-chipsættet poller konstant PSoC'en for at læse nøglens tilstand, som som standard er "0". Derefter, når du trykker på "1"-tasten, ændres den til "1". Den endelige transmission umiddelbart efter tryk på "~" er anderledes, hvis den forkerte PIN-kode er indtastet. Jeg har dog i øjeblikket ikke tjekket, hvad der rent faktisk transmitteres der. Men jeg formoder, at dette næppe er en krypteringsnøgle. Under alle omstændigheder, se næste afsnit for at forstå, hvordan jeg fjernede den interne PSoC-firmware.

Kilde: www.habr.com

Tilføj en kommentar