Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Å reversere og hacke eksterne selvkrypterende stasjoner er min gamle hobby. Tidligere hadde jeg muligheten til å øve med modeller som Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. For nylig brakte en kollega meg en annen utstilling: Patriot (Aigo) SK8671, som er bygget i henhold til et typisk design - en LCD-indikator og et tastatur for å taste inn en PIN-kode. Det var det som kom ut av det...

1. Introduksjon
2. Maskinvarearkitektur
– 2.1. Hovedkort
– 2.2. LCD-indikatortavle
– 2.3. Tastaturbord
– 2.4. Ser på ledningene
3. Sekvens av angrepstrinn
– 3.1. Tar en datadump fra en SPI-flash-stasjon
– 3.2. Sniffende kommunikasjon

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler


1. Introduksjon

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler
bolig

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler
Pakking

Tilgang til dataene som er lagret på disken, som visstnok er kryptert, utføres etter inntasting av PIN-koden. Noen få innledende merknader om denne enheten:

  • For å endre PIN-koden må du trykke F1 før du låser opp;
  • PIN-koden må inneholde fra 6 til 9 sifre;
  • Etter 15 feil forsøk blir disken tømt.

2. Maskinvarearkitektur

Først dissekerer vi enheten i deler for å forstå hvilke komponenter den består av. Den kjedeligste oppgaven er å åpne saken: mange mikroskopiske skruer og plast. Etter å ha åpnet dekselet, ser vi følgende (vær oppmerksom på fem-pinners kontakten jeg loddet):

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

2.1. Hovedkort

Hovedkortet er ganske enkelt:

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

De mest bemerkelsesverdige delene (se fra topp til bunn):

  • kontakt for LCD-indikator (CN1);
  • diskanthøyttaler (SP1);
  • Pm25LD010 (spesifikasjon) SPI flash-stasjon (U2);
  • Jmicron JMS539 kontroller (spesifikasjon) for USB-SATA (U1);
  • USB 3-kontakt (J1).

SPI-flashstasjonen lagrer fastvaren for JMS539 og noen innstillinger.

2.2. LCD-indikatortavle

Det er ikke noe bemerkelsesverdig på LCD-tavlen.

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler
Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Bare:

  • LCD-indikator av ukjent opprinnelse (sannsynligvis med et kinesisk skriftsett); med sekvensiell kontroll;
  • Båndkontakt for tastatur.

2.3. Tastaturbord

Når du undersøker tastaturet, tar ting en mer interessant vending.

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Her, på baksiden, ser vi en båndkontakt, samt en Cypress CY8C21434 mikrokontroller PSoC 1 (heretter vil vi ganske enkelt kalle det PSoC)

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

CY8C21434 bruker M8C instruksjonssettet (se dokumentasjon). På [produktside]( (http://www.cypress.com/part/cy8c21434-24ltxi) det er indikert at den støtter teknologien CapSense (løsning fra Cypress, for kapasitive tastaturer). Her kan du se fempinskontakten jeg loddet - dette er en standard tilnærming for å koble til en ekstern programmerer via ISSP-grensesnittet.

2.4. Ser på ledningene

La oss finne ut hva som henger sammen her. For å gjøre dette, test bare ledningene med et multimeter:

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Forklaringer for dette diagrammet tegnet på kneet:

  • PSoC er beskrevet i den tekniske spesifikasjonen;
  • den neste kontakten, den til høyre, er ISSP-grensesnittet, som etter skjebnens vilje tilsvarer det som er skrevet om det på Internett;
  • Kontakten lengst til høyre er terminalen for båndkontakten til tastaturet;
  • Det svarte rektangelet er en tegning av CN1-kontakten, designet for å koble hovedkortet til LCD-kortet. P11, P13 og P4 er koblet til PSoC-pinner 11, 13 og 4, på LCD-kortet.

3. Sekvens av angrepstrinn

Nå som vi vet hvilke komponenter denne stasjonen består av, må vi: 1) sørge for at den grunnleggende krypteringsfunksjonaliteten faktisk er til stede; 2) finne ut hvordan krypteringsnøkler genereres/lagres; 3) finn hvor nøyaktig PIN-koden skal sjekkes.

For å gjøre dette gjorde jeg følgende trinn:

  • tok en datadump fra en SPI-flash-stasjon;
  • prøvde å dumpe data fra en PSoC-flash-stasjon;
  • bekreftet at kommunikasjonen mellom Cypress PSoC og JMS539 faktisk inneholder tastetrykk;
  • Jeg sørget for at når jeg endret passordet, blir ingenting overskrevet i SPI-flashstasjonen;
  • var for lat til å reversere 8051-fastvaren fra JMS539.

3.1. Tar en datadump fra en SPI-flash-stasjon

Denne prosedyren er veldig enkel:

  • koble sonder til bena på flash-stasjonen: CLK, MOSI, MISO og (valgfritt) EN;
  • "sniff" kommunikasjon med en sniffer ved hjelp av en logikkanalysator (jeg brukte Saleae Logic Pro 16);
  • dekode SPI-protokollen og eksporter resultater til CSV;
  • dra nytte av decode_spi.rbfor å analysere resultatene og få en dump.

Vær oppmerksom på at denne tilnærmingen fungerer spesielt godt i tilfellet med JMS539-kontrolleren, siden denne kontrolleren laster all fastvaren fra flash-stasjonen 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

Etter å ha tatt en dump fra SPI-flashstasjonen, kom jeg til den konklusjon at dens eneste oppgave er å lagre fastvaren for JMicron-kontrollenheten, som er innebygd i 8051-mikrokontrolleren. Dessverre viste det seg å være ubrukelig å dumpe SPI-flashstasjonen:

  • når PIN-koden endres, forblir flash-stasjonsdumpen den samme;
  • Etter initialiseringsstadiet får ikke enheten tilgang til SPI-flashstasjonen.

3.2. Sniffende kommunikasjon

Dette er en måte å finne hvilken brikke som er ansvarlig for å sjekke kommunikasjonen for tidspunktet/innholdet av interesse. Som vi allerede vet, er USB-SATA-kontrolleren koblet til Cypress PSoC LCD via kontakt CN1 og to bånd. Derfor kobler vi probene til de tre tilsvarende bena:

  • P4, generell inngang/utgang;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Deretter starter vi Saleae-logikkanalysatoren og skriver inn på tastaturet: "123456~". Som et resultat ser vi følgende diagram.

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

På den kan vi se tre datautvekslingskanaler:

  • det er flere korte serier på kanal P4;
  • på P11 og P13 - nesten kontinuerlig datautveksling.

Zoomer vi inn på den første piggen på kanal P4 (blått rektangel i forrige figur), ser vi følgende:

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Her kan du se at på P4 er det nesten 70 ms av et monotont signal, som for meg først så ut til å spille rollen som et klokkesignal. Etter å ha brukt litt tid på å sjekke gjetning, oppdaget jeg at dette ikke er et klokkesignal, men en lydstrøm som sendes ut til diskanthøyttaleren når tastene trykkes. Derfor inneholder ikke denne delen av selve signalet nyttig informasjon for oss. Den kan imidlertid brukes som en indikator for å vite når PSoC registrerer et tastetrykk.

Den siste P4-lydstrømmen er imidlertid litt annerledes: det er lyden for den "ugyldige PIN-koden"!

Når vi går tilbake til tastetrykkgrafen, zoomer inn på den siste lydstrømgrafen (se det blå rektangelet igjen), får vi:

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

Her ser vi monotone signaler på P11. Så det ser ut som dette er klokkesignalet. Og P13 er data. Legg merke til hvordan mønsteret endres etter at pipetonen slutter. Det hadde vært interessant å se hva som skjer her.

Protokoller som fungerer med to ledninger er vanligvis SPI eller I2C, og den tekniske spesifikasjonen på Cypress sier at disse pinnene tilsvarer I2C, som vi ser er sant i vårt tilfelle:

Reversering og hacking av Aigo selvkrypterende ekstern HDD-stasjon. Del 1: Dissekere i deler

USB-SATA-brikkesettet spør konstant PSoC-en for å lese nøkkelens tilstand, som som standard er "0". Deretter, når du trykker på "1"-tasten, endres den til "1". Den siste overføringen umiddelbart etter å ha trykket på "~" er annerledes hvis feil PIN-kode er tastet inn. Men for øyeblikket har jeg ikke sjekket hva som faktisk overføres der. Men jeg mistenker at dette neppe er en krypteringsnøkkel. Uansett, se neste avsnitt for å forstå hvordan jeg fjernet den interne PSoC-fastvaren.

Kilde: www.habr.com

Legg til en kommentar