Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Preokretanje i hakiranje vanjskih diskova koji se sami šifriraju moj je stari hobi. U prošlosti sam imao priliku vježbati s takvim modelima kao što su Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Nedavno mi je kolega donio još jedan eksponat: Patriot (Aigo) SK8671, koji je napravljen prema tipičnom dizajnu - LCD indikator i tipkovnica za unos PIN koda. To je ono što je ispalo iz toga…

1. uvod
2. Arhitektura hardvera
– 2.1. Matična ploča
– 2.2. LCD indikatorska ploča
– 2.3. Ploča s tipkovnicom
– 2.4. Gledajući žice
3. Redoslijed koraka napada
– 3.1. Snimanje podataka sa SPI flash pogona
– 3.2. Njuškanje komunikacije

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove


1. uvod

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove
kućište

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove
Pakiranje

Pristup podacima pohranjenim na disku, koji su navodno šifrirani, ostvaruje se nakon unosa PIN koda. Nekoliko uvodnih napomena o ovom uređaju:

  • Za promjenu PIN koda morate pritisnuti F1 prije otključavanja;
  • PIN kod mora sadržavati od 6 do 9 znamenki;
  • Nakon 15 netočnih pokušaja, disk se briše.

2. Arhitektura hardvera

Prvo rastavljamo uređaj na dijelove kako bismo razumjeli od kojih se komponenti sastoji. Najzamorniji zadatak je otvaranje kućišta: puno mikroskopskih vijaka i plastike. Nakon otvaranja kućišta vidimo sljedeće (obratite pažnju na petopolni konektor koji sam zalemio):

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

2.1. Matična ploča

Glavna ploča je vrlo jednostavna:

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Njegovi najznačajniji dijelovi (vidi odozgo prema dolje):

  • priključak za LCD indikator (CN1);
  • visokotonac (SP1);
  • Pm25LD010 (specifikacija) SPI flash pogon (U2);
  • Jmicron JMS539 kontroler (specifikacija) za USB-SATA (U1);
  • USB 3 konektor (J1).

SPI flash pogon pohranjuje firmware za JMS539 i neke postavke.

2.2. LCD indikatorska ploča

Nema ništa posebno na LCD ploči.

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove
Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Samo:

  • LCD indikator nepoznatog porijekla (vjerojatno sa postavljenim kineskim fontom); sa sekvencijalnom kontrolom;
  • Trakasti konektor za tipkovnicu.

2.3. Ploča s tipkovnicom

Kada se ispituje tipkovnica, stvari poprimaju zanimljiviji smjer.

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Ovdje sa stražnje strane vidimo ribon konektor, kao i Cypress CY8C21434 mikrokontroler PSoC 1 (u daljnjem tekstu jednostavno ćemo ga zvati PSoC)

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

CY8C21434 koristi skup instrukcija M8C (vidi dokumentacija). Na [stranica proizvoda]( (http://www.cypress.com/part/cy8c21434-24ltxi) naznačeno je da podržava tehnologiju CapSense (rješenje tvrtke Cypress, za kapacitivne tipkovnice). Ovdje možete vidjeti pet-pinski konektor koji sam zalemio - ovo je standardni pristup za povezivanje vanjskog programatora preko ISSP sučelja.

2.4. Gledajući žice

Hajdemo shvatiti što je ovdje povezano. Da biste to učinili, samo testirajte žice multimetrom:

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Objašnjenja za ovaj dijagram nacrtan na koljenu:

  • PSoC je opisan u tehničkoj specifikaciji;
  • sljedeći konektor, onaj desno, je ISSP sučelje, koje voljom sudbine odgovara onome što o njemu piše na internetu;
  • Krajnji desni konektor je terminal za trakasti konektor na ploči s tipkovnicom;
  • Crni pravokutnik je crtež CN1 konektora, dizajniranog za spajanje glavne ploče na LCD ploču. P11, P13 i P4 spojeni su na PSoC pinove 11, 13 i 4 na LCD ploči.

3. Redoslijed koraka napada

Sada kada znamo od kojih se komponenti sastoji ovaj pogon, moramo: 1) provjeriti je li osnovna funkcija šifriranja stvarno prisutna; 2) saznajte kako se ključevi za šifriranje generiraju/spremaju; 3) pronaći gdje će se točno PIN kod provjeriti.

Da bih to napravio napravio sam sljedeće korake:

  • skinuo podatke sa SPI flash pogona;
  • pokušao ispisati podatke s PSoC flash pogona;
  • potvrdio da komunikacija između Cypress PSoC i JMS539 zapravo sadrži pritiske tipki;
  • Uvjerio sam se da se prilikom promjene lozinke ništa ne prepisuje na SPI flash disku;
  • bio previše lijen da preokrene 8051 firmware iz JMS539.

3.1. Snimanje podataka sa SPI flash pogona

Ovaj postupak je vrlo jednostavan:

  • spojite sonde na noge flash pogona: CLK, MOSI, MISO i (opcionalno) EN;
  • "njuškanje" komunikacije s njuškalom pomoću logičkog analizatora (koristio sam Saleae Logic Pro 16);
  • dekodiranje SPI protokola i izvoz rezultata u CSV;
  • iskoristite prednost decode_spi.rbza analizu rezultata i dobivanje ispisa.

Imajte na umu da ovaj pristup posebno dobro funkcionira u slučaju JMS539 kontrolera, budući da ovaj kontroler učitava sav firmware s flash pogona u fazi inicijalizacije.

$ 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

Nakon što sam izvadio izlagalište sa SPI flash pogona, došao sam do zaključka da je njegov jedini zadatak pohraniti firmware za upravljački uređaj JMicron, koji je ugrađen u 8051 mikrokontroler. Nažalost, uzimanje dumpa SPI flash pogona pokazalo se beskorisnim:

  • kada se promijeni PIN kod, dump flash pogona ostaje isti;
  • Nakon faze inicijalizacije, uređaj ne pristupa SPI flash disku.

3.2. Njuškanje komunikacije

Ovo je jedan od načina da saznate koji je čip odgovoran za provjeru komunikacije za vrijeme/sadržaj od interesa. Kao što već znamo, USB-SATA kontroler je spojen na Cypress PSoC LCD preko konektora CN1 i dva ribona. Stoga spajamo sonde na tri odgovarajuće noge:

  • P4, opći ulaz/izlaz;
  • P11, I2C SCL;
  • P13, I2C SDA.

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Zatim pokrećemo Saleae logički analizator i na tipkovnici upisujemo: “123456~”. Kao rezultat toga, vidimo sljedeći dijagram.

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Na njemu možemo vidjeti tri kanala razmjene podataka:

  • postoji nekoliko kratkih praska na kanalu P4;
  • na P11 i P13 - gotovo kontinuirana razmjena podataka.

Zumirajući prvi šiljak na kanalu P4 (plavi pravokutnik na prethodnoj slici), vidimo sljedeće:

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Ovdje možete vidjeti da je na P4 gotovo 70ms monotonog signala, koji mi se na prvu činio kao signal sata. Međutim, nakon što sam proveo neko vrijeme provjeravajući svoju pretpostavku, otkrio sam da ovo nije signal sata, već audio stream koji se šalje na visokotonac kada se pritisnu tipke. Stoga ovaj dio signala sam po sebi ne sadrži korisne informacije za nas. Međutim, može se koristiti kao pokazatelj kada PSoC registrira pritisak tipke.

Međutim, najnoviji P4 audio stream je malo drugačiji: to je zvuk za "nevažeći PIN"!

Vraćajući se na grafikon pritiska tipke, zumirajući posljednji grafikon audio toka (ponovo pogledajte plavi pravokutnik), dobivamo:

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

Ovdje vidimo monotone signale na P11. Dakle, izgleda da je ovo signal sata. A P13 su podaci. Primijetite kako se uzorak mijenja nakon završetka zvučnog signala. Bilo bi zanimljivo vidjeti što se ovdje događa.

Protokoli koji rade s dvije žice su obično SPI ili I2C, a tehnička specifikacija na Cypressu navodi da ti pinovi odgovaraju I2C, što vidimo da je točno u našem slučaju:

Preokret i hakiranje Aigo samokriptirajućeg vanjskog HDD pogona. 1. dio: Rastavljanje na dijelove

USB-SATA čipset stalno provjerava PSoC da očita stanje ključa, koji je prema zadanim postavkama "0". Zatim, kada pritisnete tipku "1", mijenja se u "1". Konačni prijenos odmah nakon pritiska na “~” je drugačiji ako se unese pogrešan PIN kod. Međutim, u ovom trenutku nisam provjerio što se tamo zapravo prenosi. Ali sumnjam da je malo vjerojatno da je ovo ključ za šifriranje. U svakom slučaju, pogledajte sljedeći odjeljak da biste razumjeli kako sam uklonio PSoC interni firmware.

Izvor: www.habr.com

Dodajte komentar