Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Väliste isekrüpteerivate draivide tagurdamine ja häkkimine on minu vana hobi. Varem oli mul võimalus harjutada selliste mudelitega nagu Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Just hiljuti tõi kolleeg mulle veel ühe eksponaadi: Patriot (Aigo) SK8671, mis on ehitatud tüüpilise disaini järgi - LCD indikaator ja klaviatuur PIN-koodi sisestamiseks. See sellest välja tuli…

1. Sissejuhatus
2. Riistvara arhitektuur
– 2.1. Põhiplaat
– 2.2. LCD indikaatorplaat
– 2.3. Klaviatuuri tahvel
– 2.4. Juhtmeid vaadates
3. Rünnaku sammude järjestus
– 3.1. SPI-mälupulgalt andmetõmmise võtmine
– 3.2. Sidete nuusutamine

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine


1. Sissejuhatus

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine
Корпус

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine
Pakkendid

Juurdepääs kettale salvestatud andmetele, mis on väidetavalt krüptitud, toimub pärast PIN-koodi sisestamist. Mõned sissejuhatavad märkused selle seadme kohta:

  • PIN-koodi muutmiseks peate enne luku avamist vajutama F1;
  • PIN-kood peab sisaldama 6 kuni 9 numbrit;
  • Pärast 15 vale katset ketas tühjendatakse.

2. Riistvara arhitektuur

Esiteks tükeldame seadme osadeks, et mõista, millistest komponentidest see koosneb. Kõige tüütum ülesanne on korpuse avamine: palju mikroskoopilisi kruvisid ja plastikut. Pärast korpuse avamist näeme järgmist (pöörake tähelepanu viiekontaktilisele pistikule, mille ma jootsin):

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

2.1. Põhiplaat

Põhiplaat on üsna lihtne:

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Selle kõige tähelepanuväärsemad osad (vt ülalt alla):

  • pistik LCD indikaatori jaoks (CN1);
  • tweeter (SP1);
  • Pm25LD010 (spetsifikatsioon) SPI-mälupulk (U2);
  • Jmicron JMS539 kontroller (spetsifikatsioon) USB-SATA (U1) jaoks;
  • USB 3 pistik (J1).

SPI-mälupulk salvestab JMS539 püsivara ja mõned sätted.

2.2. LCD indikaatorplaat

LCD-plaadil pole midagi märkimisväärset.

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine
Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Ainult:

  • Teadmata päritolu LCD-indikaator (ilmselt Hiina fondikomplektiga); järjestikuse juhtimisega;
  • Lintühendus klaviatuuriplaadi jaoks.

2.3. Klaviatuuri tahvel

Klaviatuuritahvlit uurides võtavad asjad huvitavama pöörde.

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Siin, tagaküljel, näeme lindi pistikut, aga ka Cypress CY8C21434 mikrokontrollerit PSoC 1 (edaspidi nimetame seda lihtsalt PSoC-ks)

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

CY8C21434 kasutab M8C käsukomplekti (vt dokumentatsioon). [toote lehel]( (http://www.cypress.com/part/cy8c21434-24ltxi) on märgitud, et see toetab tehnoloogiat CapSense (lahendus firmalt Cypress, mahtuvuslike klaviatuuride jaoks). Siin näete viie kontaktiga pistikut, mille ma jootsin - see on standardne lähenemisviis välise programmeerija ühendamiseks ISSP-liidese kaudu.

2.4. Juhtmeid vaadates

Mõelgem välja, mis siin on seotud. Selleks katsetage lihtsalt juhtmeid multimeetriga:

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Selle põlvele joonistatud diagrammi selgitused:

  • PSoC on kirjeldatud tehnilises kirjelduses;
  • järgmine konnektor, parempoolne, on ISSP liides, mis saatuse tahtel vastab sellele, mis selle kohta Internetis kirjutatakse;
  • Kõige parempoolne pistik on klaviatuuriplaadi lintliidese klemm;
  • Must ristkülik on CN1 pistiku joonis, mis on mõeldud põhiplaadi ühendamiseks LCD-plaadiga. P11, P13 ja P4 on ühendatud vedelkristallplaadi PSoC kontaktidega 11, 13 ja 4.

3. Rünnaku sammude järjestus

Nüüd, kui teame, millistest komponentidest see draiv koosneb, peame: 1) veenduma, et põhilised krüpteerimisfunktsioonid on tegelikult olemas; 2) teada saada, kuidas krüpteerimisvõtmeid genereeritakse/salvestatakse; 3) leia, kus täpselt PIN-koodi kontrollitakse.

Selleks tegin järgmised sammud:

  • võttis SPI-mälupulgalt andmekogu;
  • proovis andmeid PSoC-mälupulgalt tühjendada;
  • kontrollis, kas Cypress PSoC ja JMS539 vaheline side sisaldab tegelikult klahvivajutusi;
  • Veendusin, et parooli muutmisel SPI-mälupulgal midagi üle ei kirjutata;
  • oli liiga laisk, et 8051 püsivara JMS539-st tagasi pöörata.

3.1. SPI-mälupulgalt andmetõmmise võtmine

See protseduur on väga lihtne:

  • ühendage sondid välkmäluseadme jalgadega: CLK, MOSI, MISO ja (valikuline) EN;
  • "nuusutama" sidet nuusutajaga, kasutades loogikaanalüsaatorit (kasutasin Saleae Logic Pro 16);
  • dekodeerida SPI protokoll ja eksportida tulemused CSV-sse;
  • ära kasutama decode_spi.rbtulemuste sõelumiseks ja prügimäe saamiseks.

Pange tähele, et see lähenemine töötab eriti hästi JMS539 kontrolleri puhul, kuna see kontroller laadib kogu püsivara mälupulgalt initsialiseerimisetapis.

$ 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

Võttes SPI-mälupulgalt prügikasti, jõudsin järeldusele, et selle ainus ülesanne on salvestada JMicroni juhtseadme püsivara, mis on sisseehitatud mikrokontrollerisse 8051. Kahjuks osutus SPI-mälupulga tühjendamine kasutuks:

  • PIN-koodi muutmisel jääb välkmälupulk samaks;
  • Pärast lähtestamisetappi ei pääse seade SPI-mälupulgale juurde.

3.2. Sidete nuusutamine

See on üks viise leida, milline kiip vastutab huvipakkuva aja/sisu side kontrollimise eest. Nagu me juba teame, on USB-SATA kontroller ühendatud Cypress PSoC LCD-ga konnektori CN1 ja kahe lindi kaudu. Seetõttu ühendame sondid kolme vastava jalaga:

  • P4, üldine sisend/väljund;
  • P11, I2C SCL;
  • P13, I2C SDA.

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Seejärel käivitame Saleae loogikaanalüsaatori ja sisestame klaviatuuril: “123456~”. Selle tulemusena näeme järgmist diagrammi.

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Sellel näeme kolme andmevahetuskanalit:

  • kanalil P4 on mitu lühikest katkestust;
  • kohta P11 ja P13 - peaaegu pidev andmevahetus.

Suumides sisse kanali P4 esimest piiki (eelmisel joonisel sinine ristkülik), näeme järgmist:

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Siin on näha, et P4 peal on peaaegu 70ms monotoonset signaali, mis mulle alguses tundus kellasignaali rolli täitvat. Kui olin aga oma oletuse kontrollinud mõnda aega, avastasin, et tegemist pole mitte kellasignaaliga, vaid helivooga, mis klahvivajutusega tweeterisse väljastatakse. Seetõttu ei sisalda see signaali osa meie jaoks kasulikku teavet. Siiski saab seda kasutada indikaatorina, et teada saada, millal PSoC registreerib klahvivajutuse.

Viimane P4 helivoog on aga pisut erinev: see on "kehtetu PIN-koodi" heli!

Tulles tagasi klahvivajutuse graafiku juurde, suurendades viimast helivoo graafikut (vaata uuesti sinist ristkülikut), saame:

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

Siin näeme P11 monotoonseid signaale. Seega tundub, et see on kella signaal. Ja P13 on andmed. Pange tähele, kuidas muster pärast piiksu lõppu muutub. Huvitav oleks näha, mis siin toimub.

Kahe juhtmega töötavad protokollid on tavaliselt SPI või I2C ja Cypressi tehnilistes kirjeldustes on öeldud, et need kontaktid vastavad I2C-le, mis meie puhul on tõsi:

Tagurdamine ja häkkimine Aigo isekrüpteeriv väline kõvaketas. Osa 1: Osadeks tükeldamine

USB-SATA kiibistik küsib pidevalt PSoC-d, et lugeda võtme olekut, mis vaikimisi on "0". Seejärel, kui vajutate klahvi "1", muutub see "1"-ks. Vale PIN-koodi sisestamise korral erineb lõplik edastus kohe pärast “~” vajutamist. Samas ei ole ma hetkel kontrollinud, mida seal tegelikult edastatakse. Kuid ma kahtlustan, et see pole tõenäoliselt krüpteerimisvõti. Igatahes vaadake järgmist jaotist, et mõista, kuidas ma PSoC sisemise püsivara eemaldasin.

Allikas: www.habr.com

Lisa kommentaar