Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

Att Ă„terverse och hacka externa sjĂ€lv-krypterande enheter har lĂ€nge varit min hobby. Tidigare har jag arbetat med sĂ„dana modeller som Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Nyligen fick jag en ny enhet av en kollega: Patriot (Aigo) SK8671, som Ă€r byggd med en typisk design – en LCD-skĂ€rm och ett tangentbord för att ange PIN-kod. HĂ€r Ă€r vad jag kom fram till


1. Inledning
2. HÄrdvaruarkitektur
– 2.1. Moderkort
– 2.2. LCD-skĂ€rmkretskort
– 2.3. Tangentbordskort
– 2.4. Tittar pĂ„ kablarna
3. Steg för attacksekvens
– 3.1. Tar en dump av SPI-flashminnet
– 3.2. Avlyssnar kommunikationen

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece


1. Inledning

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece
Chassi

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece
Förpackning

Åtkomst till data som pĂ„stĂ„s vara krypterade pĂ„ disken fĂ„s efter att PIN-koden angetts. NĂ„gra inledande kommentarer om denna enhet:

  • För att Ă€ndra PIN-koden mĂ„ste F1 tryckas ned före upplĂ„sning;
  • PIN-koden mĂ„ste bestĂ„ av mellan 6 och 9 siffror;
  • Efter 15 misslyckade försök raderas disken.

2. HÄrdvaruarkitektur

Först demonterar vi enheten för att förstÄ vilka komponenter den bestÄr av. Det mest trÄkiga momentet Àr att öppna chassit: mÄnga mikroskopiska skruvar och plast. NÀr vi har öppnat chassit ser vi följande (notera den fempoliga kontakt som jag har lött fast):

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

2.1. Moderkort

Moderkortet Àr ganska enkelt:

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

De mest anmÀrkningsvÀrda delarna (se ovanifrÄn och ner):

  • kontakt för LCD-skĂ€rm (CN1);
  • summer (SP1);
  • Pm25LD010 (specifikation) SPI-flash (U2);
  • kontrollern Jmicron JMS539 (specifikation) för USB-SATA (U1);
  • USB 3-kontakt (J1).

SPI-flash-minnet lagrar firmware för JMS539 och vissa instÀllningar.

2.2. LCD-skÀrmkretskort

Det finns inget anmÀrkningsvÀrt pÄ LCD-kortet.

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece
Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

Bara:

  • LCD-skĂ€rm av okĂ€nt ursprung (troligen med ett kinesiskt typsnittssĂ€tt); med seriell styrning;
  • bandkabel för tangentbordskortet.

2.3. Tangentbordskort

Vid inspektion av tangentbordskortet fÄr saker en mer intressant vÀndning.

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

HĂ€r pĂ„ baksidan ser vi en bandkabel och ocksĂ„ Cypress CY8C21434 – en PSoC 1 mikroprocessor (hĂ€danefter kallad PSoC).

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

CY8C21434 anvĂ€nder M8C instruktioner (se. dokumentationen). PĂ„ [produktens sida]( (http://www.cypress.com/part/cy8c21434-24ltxi) anges att den stöder teknologin CapSense (lösning frĂ„n Cypress för kapacitiva tangentbord). HĂ€r ser vi den fempoliga kontakt som jag lött fast – det Ă€r en standardmetod för att ansluta en extern programmerare via ISSP-grĂ€nssnittet.

2.4. Titta pÄ kablarna

LÄt oss reda ut vad som hÀnger ihop hÀr. För detta rÀcker det med att mÀta kablarna med en multimeter:

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

Förklaringar till detta hastigt ritade diagram:

  • PSoC beskrivs i den tekniska specifikationen;
  • den nĂ€sta kontakten, den som ligger till höger - ISSP-grĂ€nssnittet, som av ödet överensstĂ€mmer med vad som stĂ„r om det pĂ„ Internet;
  • den allra högra kontakten - detta Ă€r terminalen för bandanslutningen med tangentbordsplĂ„ten;
  • den svarta rektangeln - ritning av kontakten CN1, avsedd för att ansluta huvudkortet med LCD-kortet. P11, P13 och P4 - Ă€r anslutna till benen PSoC 11, 13 och 4 pĂ„ LCD-kortet.

3. Steg för attacksekvens

Nu nÀr vi vet vilka komponenter denna lagringsenhet bestÄr av, behöver vi: 1) sÀkerstÀlla att den grundlÀggande krypteringsfunktionen verkligen Àr nÀrvarande; 2) ta reda pÄ hur krypteringsnycklar genereras/sparas; 3) finna ut var PIN-koden kontrolleras.

För detta gjorde jag följande steg:

  • tog en dump av SPI-flashminnet;
  • försökte ta en dump av PSoC-flashminnet;
  • försĂ€kra mig om att datakommunikationen mellan Cypress PSoC och JMS539 faktiskt innehĂ„ller tryckta tangenter;
  • visade mig att ingenting skrivs om i SPI-flashminnet vid Ă€ndring av lösenord;
  • var för lat för att reversera 8051-firmware frĂ„n JMS539.

3.1. Tar dump av SPI-flashminnet

Denna procedur Àr mycket enkel:

  • anslut sonderna till benen pĂ„ flashminnet: CLK, MOSI, MISO och (valfritt) EN;
  • "sniffa" kommunikationen med en sniffare, med hjĂ€lp av en logikanalysator (jag anvĂ€nde Saleae Logic Pro 16);
  • avkoda SPI-protokollet och exportera resultaten i CSV;
  • anvĂ€nda decode_spi.rb, för att parsa resultaten och fĂ„ dumpen.

Observera att denna metod för JMS539-kontrollern fungerar sÀrskilt bra, eftersom denna controller under initialiseringen laddar hela firmware frÄn flashminnet.

$ 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 att ha tagit dumpen frÄn SPI-flashminnet kom jag fram till att dess enda uppgift Àr att lagra firmware för JMicron-kontrollern, som Àr inbyggd i 8051-mikrokontrollern. TyvÀrr visade det sig att dumpen av SPI-flashminnet var vÀrdelös:

  • vid Ă€ndring av PIN-koden förblir dumpen av flashminnet densamma;
  • efter initialiseringssteget kommunicerar enheten inte lĂ€ngre med SPI-flashminnet.

3.2. Vi sniffar kommunikationen

Detta Àr ett av sÀtten att hitta vilken chip som ansvarar för att verifiera kommunikationen för de intressanta tids-/innehÄllsdelarna. Som vi redan vet Àr USB-SATA-kontrollern kopplad till LCD Cypress PSoC genom CN1-kontakten och tvÄ band. SÄ vi ansluter sonderna till de tre motsvarande stift:

  • P4, allmĂ€nt in-/utgĂ„ng;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

DĂ€refter startar vi logikanalysatorn Saleae och skriver pĂ„ tangentbordet: “123456~”. Resultatet visar följande diagram.

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

PĂ„ det kan vi se tre datakanaler:

  • pĂ„ kanal P4 nĂ„gra korta pulsar;
  • pĂ„ P11 och P13 – nĂ€stan kontinuerlig datakommunikation.

NÀr vi förstorar den första puls pÄ kanal P4 (den blÄ rektangeln i den föregÄende bilden), ser vi följande:

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

HĂ€r kan vi se att P4 har nĂ€stan 70 ms enhetligt signal, vilket för mig först verkade vara en synkroniseringssignal. Men efter att ha spenderat lite tid pĂ„ att kontrollera min hypotes upptĂ€ckte jag att det inte Ă€r en synkroniseringssignal, utan en ljudström som skickas till högtalaren nĂ€r tangenterna trycks ned. SĂ„ detta segment av signalen innehĂ„ller inte anvĂ€ndbar information för oss. Men det kan anvĂ€ndas som en indikator — för att veta nĂ€r PSoC registrerar ett tangenttryck.

Men den senaste ljudströmmen frÄn kanal P4 skiljer sig lite frÄn de andra: det Àr ljudet för 'fel PIN-kod'!

Tillbaka till diagrammet över tangenttryck, nÀr vi förstorar diagrammet för den senaste ljudströmmen (se den blÄ rektangeln igen), fÄr vi:

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

HĂ€r ser vi enhetliga signaler pĂ„ P11. SĂ„ det verkar som att detta Ă€r synkroniseringssignalen. Och P13 – data. Observera hur mönstret förĂ€ndras efter att ljudsignalen har avslutats. Det skulle vara intressant att se vad som hĂ€r hĂ€nder.

Protokoll som arbetar med tvÄ ledare Àr vanligtvis SPI eller I2C, och i den tekniska specifikationen för Cypress sÀgs det att dessa kontakter motsvarar I2C, vilket vi ser Àr sant Àven i vÄrt fall:

Reversing and hacking a self-encrypting external HDD Aigo. Part 1: Dissecting it piece by piece

USB-SATA-chipsetet interrogates PSoC kontinuerligt för att lÀsa tillstÄndet av knappen, som som standard Àr "0". NÀr knappen "1" trycks in, Àndras den till "1". Slutöverföringen, direkt efter att "~" tryckts, skiljer sig om en felaktig PIN-kod matas in. Men just nu har jag inte kontrollerat vad som faktiskt överförs. Men jag misstÀnker att det knappast Àr en krypteringsnyckel. Hur som helst, se nÀsta avsnitt för att förstÄ hur jag extraherade en dump frÄn den interna PSoC-firmware.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster