Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Obračanje in hekanje zunanjih samošifrirnih pogonov je moj stari hobi. V preteklosti sem imel priložnost vaditi z modeli Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Ravno pred kratkim mi je kolega prinesel še en eksponat: Patriot (Aigo) SK8671, ki je narejen po tipski zasnovi - LCD indikator in tipkovnica za vnos PIN kode. To je tisto, kar je prišlo iz tega …

1. Uvod
2. Arhitektura strojne opreme
– 2.1. Glavna plošča
– 2.2. LCD indikatorska plošča
– 2.3. Plošča s tipkovnico
– 2.4. Gledam žice
3. Zaporedje korakov napada
– 3.1. Izpis podatkov iz bliskovnega pogona SPI
– 3.2. Vohanje komunikacij

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele


1. Uvod

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele
Корпус

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele
Pakiranje

Dostop do podatkov, shranjenih na disku, ki naj bi bil šifriran, se izvede po vnosu PIN kode. Nekaj ​​uvodnih opomb o tej napravi:

  • Če želite spremeniti kodo PIN, morate pred odklepanjem pritisniti F1;
  • PIN koda mora vsebovati od 6 do 9 števk;
  • Po 15 nepravilnih poskusih je disk počiščen.

2. Arhitektura strojne opreme

Najprej napravo razčlenimo na dele, da razumemo, iz katerih komponent je sestavljena. Najbolj dolgočasno opravilo je odpiranje ohišja: veliko mikroskopskih vijakov in plastike. Ko odpremo ohišje, vidimo naslednje (bodite pozorni na petpolni konektor, ki sem ga spajkal):

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

2.1. Glavna plošča

Glavna plošča je precej preprosta:

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Njegovi najpomembnejši deli (glej od zgoraj navzdol):

  • priključek za LCD indikator (CN1);
  • visokotonec (SP1);
  • Pm25LD010 (specifikacijo) bliskovni pogon SPI (U2);
  • Krmilnik Jmicron JMS539 (specifikacijo) za USB-SATA (U1);
  • priključek USB 3 (J1).

Bliskovni pogon SPI shrani vdelano programsko opremo za JMS539 in nekatere nastavitve.

2.2. LCD indikatorska plošča

Na plošči LCD ni nič posebnega.

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele
Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Samo:

  • LCD indikator neznanega izvora (verjetno z nastavljeno kitajsko pisavo); s sekvenčnim nadzorom;
  • Trakasti konektor za tipkovnico.

2.3. Plošča s tipkovnico

Pri pregledu tipkovnice se stvari obrnejo bolj zanimivo.

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Tu na hrbtni strani vidimo trakasti konektor ter mikrokrmilnik Cypress CY8C21434 PSoC 1 (v nadaljevanju ga bomo preprosto imenovali PSoC).

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

CY8C21434 uporablja nabor navodil M8C (glejte dokumentacijo). Na [stran izdelka]( (http://www.cypress.com/part/cy8c21434-24ltxi) je označeno, da podpira tehnologijo CapSense (rešitev podjetja Cypress, za kapacitivne tipkovnice). Tukaj lahko vidite petpolni konektor, ki sem ga spajkal - to je standardni pristop za povezavo zunanjega programatorja prek vmesnika ISSP.

2.4. Gledam žice

Ugotovimo, kaj je tukaj povezano. Če želite to narediti, samo preizkusite žice z multimetrom:

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Razlage za ta diagram, narisan na kolenu:

  • PSoC je opisan v tehnični specifikaciji;
  • naslednji priključek, tisti na desni, je vmesnik ISSP, ki po volji usode ustreza temu, kar o njem piše na internetu;
  • Skrajni desni priključek je priključek za trakasti priključek na tipkovnico;
  • Črni pravokotnik je risba konektorja CN1, namenjenega povezovanju glavne plošče z LCD ploščo. P11, P13 in P4 so priključeni na nožice PSoC 11, 13 in 4 na plošči LCD.

3. Zaporedje korakov napada

Zdaj, ko vemo, iz katerih komponent je sestavljen ta pogon, moramo: 1) zagotoviti, da je osnovna funkcija šifriranja dejansko prisotna; 2) ugotovite, kako se generirajo/shranjujejo šifrirni ključi; 3) poiščite, kje natančno bo preverjena koda PIN.

Da bi to naredil, sem naredil naslednje korake:

  • naredil izpis podatkov iz bliskovnega pogona SPI;
  • poskušal izpisati podatke iz bliskovnega pogona PSoC;
  • preveril, da komunikacija med Cypress PSoC in JMS539 dejansko vsebuje pritiske tipk;
  • Prepričal sem se, da pri spreminjanju gesla nič ni prepisano na bliskovnem pogonu SPI;
  • je bil prelen, da bi obrnil vdelano programsko opremo 8051 iz JMS539.

3.1. Izpis podatkov iz bliskovnega pogona SPI

Ta postopek je zelo preprost:

  • priključite sonde na noge bliskovnega pogona: CLK, MOSI, MISO in (neobvezno) EN;
  • »vohanje« komunikacije z vohalnikom z uporabo logičnega analizatorja (uporabil sem Saleae Logic Pro 16);
  • dekodiranje protokola SPI in izvoz rezultatov v CSV;
  • izkoristite decode_spi.rbda razčlenimo rezultate in pridobimo izpis.

Upoštevajte, da ta pristop še posebej dobro deluje v primeru krmilnika JMS539, saj ta krmilnik naloži vso vdelano programsko opremo z bliskovnega pogona v fazi inicializacije.

$ 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

Ko sem vzel odlagališče iz bliskovnega pogona SPI, sem prišel do zaključka, da je njegova edina naloga shranjevanje vdelane programske opreme za krmilno napravo JMicron, ki je vgrajena v mikrokrmilnik 8051. Na žalost se je izpis bliskovnega pogona SPI izkazal za neuporabnega:

  • ko se koda PIN spremeni, izpis bliskovnega pogona ostane enak;
  • Po fazi inicializacije naprava ne dostopa do bliskovnega pogona SPI.

3.2. Vohanje komunikacij

To je eden od načinov, kako ugotoviti, kateri čip je odgovoren za preverjanje komunikacije glede časa/vsebine, ki vas zanima. Kot že vemo, je krmilnik USB-SATA povezan s Cypress PSoC LCD prek konektorja CN1 in dveh trakov. Zato priključimo sonde na tri ustrezne noge:

  • P4, splošni vhod/izhod;
  • P11, I2C SCL;
  • P13, I2C SDA.

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Nato zaženemo logični analizator Saleae in na tipkovnici vnesemo: “123456~”. Kot rezultat vidimo naslednji diagram.

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Na njem vidimo tri kanale za izmenjavo podatkov:

  • na kanalu P4 je več kratkih izbruhov;
  • na P11 in P13 - skoraj neprekinjena izmenjava podatkov.

Če približamo prvo konico na kanalu P4 (modri pravokotnik na prejšnji sliki), vidimo naslednje:

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Tukaj lahko vidite, da je na P4 skoraj 70ms monotonega signala, ki se mi je sprva zdel v vlogi signala ure. Vendar sem po tem, ko sem nekaj časa preverjal svoje ugibanje, odkril, da to ni signal ure, ampak zvočni tok, ki se ob pritisku na tipke odda v visokotonec. Zato ta del signala sam po sebi ne vsebuje koristnih informacij za nas. Lahko pa se uporablja kot indikator, da vemo, kdaj PSoC zabeleži pritisk tipke.

Vendar pa je najnovejši zvočni tok P4 nekoliko drugačen: to je zvok za "neveljavno kodo PIN"!

Če se vrnemo na graf pritiskov tipk in povečamo zadnji graf zvočnega toka (spet glej modri pravokotnik), dobimo:

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Tukaj vidimo monotone signale na P11. Torej izgleda, da je to signal ure. In P13 so podatki. Opazite, kako se vzorec spremeni po koncu piska. Zanimivo bi bilo videti, kaj se bo zgodilo tukaj.

Protokoli, ki delujejo z dvema žicama, so običajno SPI ali I2C, tehnična specifikacija na Cypressu pa navaja, da ti zatiči ustrezajo I2C, kar vidimo, da je res v našem primeru:

Obračanje in vdiranje zunanjega trdega diska Aigo s samošifriranjem. 1. del: Razstavljanje na dele

Nabor čipov USB-SATA nenehno preverja PSoC, da prebere stanje ključa, ki je privzeto »0«. Nato, ko pritisnete tipko "1", se spremeni v "1". Končni prenos takoj po pritisku na “~” je drugačen, če je vnesena napačna koda PIN. Nisem pa trenutno preveril, kaj se tam dejansko prenaša. Vendar sumim, da to verjetno ni šifrirni ključ. Kakor koli že, glejte naslednji razdelek, če želite razumeti, kako sem odstranil notranjo vdelano programsko opremo PSoC.

Vir: www.habr.com

Dodaj komentar