ProHoster > Блог > Administracija > Preokretanje i hakovanje Aigo eksternog HDD diska koji se samošifruje. Dio 1: Seciranje na dijelove
Preokretanje i hakovanje Aigo eksternog HDD diska koji se samošifruje. Dio 1: Seciranje na dijelove
Preokretanje i hakovanje eksternih samošifrujućih diskova moj je stari hobi. U prošlosti sam imao priliku vježbati sa takvim modelima kao što su Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Nedavno mi je kolega doneo još jedan eksponat: Patriot (Aigo) SK8671, koji je napravljen po tipičnom dizajnu - LCD indikator i tastatura za unos PIN koda. Eto šta je iz toga proizašlo…
Pristup podacima pohranjenim na disku, koji su navodno šifrirani, vrši se nakon unosa PIN koda. Nekoliko uvodnih napomena o ovom uređaju:
Da biste promijenili PIN kod, morate pritisnuti F1 prije otključavanja;
PIN kod mora sadržavati od 6 do 9 cifara;
Nakon 15 pogrešnih pokušaja, disk se briše.
2. Arhitektura hardvera
Prvo, seciramo 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 petopinski konektor koji sam zalemio):
2.1. Glavna ploča
Glavna ploča je prilično jednostavna:
Njegovi najznačajniji dijelovi (pogledajte odozgo prema dolje):
Jmicron JMS539 kontroler (specifikacija) za USB-SATA (U1);
USB 3 konektor (J1).
SPI fleš disk čuva firmver za JMS539 i neka podešavanja.
2.2. LCD indikatorska ploča
Na LCD ploči nema ničeg značajnog.
samo:
LCD indikator nepoznatog porijekla (vjerovatno s kineskim fontom); sa sekvencijalnom kontrolom;
Ribbon konektor za tastaturu.
2.3. Tastaturna ploča
Kada se ispita tastatura, stvari dobijaju zanimljiviji obrt.
Ovdje na poleđini vidimo ribbon konektor, kao i Cypress CY8C21434 mikrokontroler PSoC 1 (u daljem tekstu ćemo ga jednostavno zvati PSoC)
CY8C21434 koristi M8C skup instrukcija (vidi dokumentaciju). Na [stranici proizvoda]( (http://www.cypress.com/part/cy8c21434-24ltxi) naznačeno je da podržava tehnologiju CapSense (rešenje iz Cypressa, za kapacitivne tastature). Ovdje možete vidjeti petopinski konektor koji sam zalemio - ovo je standardni pristup za povezivanje eksternog programatora preko ISSP sučelja.
2.4. Gledajući žice
Hajde da shvatimo šta je ovde povezano. Da biste to učinili, samo testirajte žice multimetrom:
Objašnjenja za ovaj dijagram nacrtan na kolenu:
PSoC je opisan u tehničkoj specifikaciji;
sledeći konektor, onaj sa desne strane, je ISSP interfejs, koji voljom sudbine odgovara onome što o njemu piše na internetu;
Krajnji desni konektor je terminal za vrpcu konektor za tastaturu;
Crni pravougaonik je crtež CN1 konektora, dizajniran da poveže glavnu ploču sa LCD pločom. P11, P13 i P4 su povezani na PSoC pinove 11, 13 i 4, na LCD ploči.
3. Redoslijed napadačkih koraka
Sada kada znamo od kojih se komponenti sastoji ovaj drajv, moramo: 1) da se uverimo da je osnovna funkcionalnost šifrovanja zaista prisutna; 2) saznati kako se generišu/čuvaju ključevi za šifrovanje; 3) pronaći gdje će se tačno provjeriti PIN kod.
Da to uradim uradio sam sledeće korake:
preuzeo dump podataka sa SPI fleš diska;
pokušao da izbaci podatke sa PSoC fleš diska;
potvrđeno da komunikacija između Cypress PSoC-a i JMS539 zapravo sadrži pritiske na tipke;
Uvjerio sam se da prilikom promjene lozinke ništa nije prepisano u SPI fleš disk;
bio previše lijen da poništi firmver 8051 sa JMS539.
3.1. Uzimanje dump podataka sa SPI fleš diska
Ova procedura je vrlo jednostavna:
povežite sonde na noge fleš diska: CLK, MOSI, MISO i (opciono) EN;
„njušiti“ komunikaciju sa njuškačem pomoću logičkog analizatora (ja sam koristio Saleae Logic Pro 16);
dekodiranje SPI protokola i izvoz rezultata u CSV;
iskoristite decode_spi.rbda analizirate rezultate i dobijete dump.
Imajte na umu da ovaj pristup posebno dobro funkcioniše u slučaju JMS539 kontrolera, jer ovaj kontroler učitava sav firmver sa fleš diska u fazi inicijalizacije.
Nakon što sam napravio dump sa SPI fleš diska, došao sam do zaključka da je njegov jedini zadatak pohranjivanje firmvera za JMicron kontrolni uređaj, koji je ugrađen u 8051 mikrokontroler. Nažalost, uzimanje dump-a SPI fleš diska pokazalo se beskorisnim:
kada se PIN kod promeni, dump fleš diska ostaje isti;
Nakon faze inicijalizacije, uređaj ne pristupa SPI fleš disku.
3.2. Njuškanje komunikacija
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 povezan na Cypress PSoC LCD preko konektora CN1 i dva ribona. Stoga povezujemo sonde na tri odgovarajuće krake:
P4, opšti ulaz/izlaz;
P11, I2C SCL;
P13, I2C SDA.
Zatim pokrećemo Saleae logički analizator i unosimo na tastaturi: “123456~”. Kao rezultat, vidimo sljedeći dijagram.
Na njemu možemo vidjeti tri kanala za razmjenu podataka:
postoji nekoliko kratkih rafala na kanalu P4;
na P11 i P13 - gotovo kontinuirana razmjena podataka.
Zumirajući prvi šiljak na kanalu P4 (plavi pravougaonik na prethodnoj slici), vidimo sledeće:
Ovdje možete vidjeti da na P4 postoji skoro 70ms monotonog signala, što mi se u početku činilo da igra ulogu taktnog signala. Međutim, nakon što sam proveo neko vrijeme provjeravajući svoju pretpostavku, otkrio sam da ovo nije signal sata, već audio stream koji se emituje na visokotonac kada se pritisnu tipke. Stoga ovaj dio samog signala ne sadrži korisne informacije za nas. Međutim, može se koristiti kao indikator da se zna kada PSoC registruje pritisak na taster.
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 na tipku, zumiranjem na posljednji graf audio toka (pogledajte ponovo plavi pravougaonik), dobijamo:
Ovdje vidimo monotone signale na P11. Dakle, izgleda da je ovo signal sata. A P13 je podatak. Primijetite kako se obrazac mijenja nakon završetka zvučnog signala. Bilo bi zanimljivo vidjeti šta se ovdje dešava.
Protokoli koji rade sa dvije žice su obično SPI ili I2C, a tehničke specifikacije na Cypressu navode da ovi pinovi odgovaraju I2C, što vidimo da je istina u našem slučaju:
USB-SATA čipset stalno ispituje PSoC da bi pročitao stanje ključa, koje je po defaultu "0". Zatim, kada pritisnete tipku "1", ona se mijenja u "1". Konačni prijenos odmah nakon pritiska na “~” je drugačiji ako se unese pogrešan PIN kod. Međutim, trenutno nisam provjerio šta se zapravo tamo prenosi. Ali sumnjam da je malo vjerovatno da se radi o ključu za šifriranje. U svakom slučaju, pogledajte sljedeći odjeljak da biste razumjeli kako sam uklonio PSoC interni firmver.