Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Aigo enkrĂŒpteeritud vĂ€listingimustes olevate mĂ€luseadmete tagasivaatamine ja hĂ€kkimine on olnud minu pikaajaline hobi. Varem olen uurinud selliseid mudeleid nagu Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Hiljuti tĂ”i kolleeg mulle veel ĂŒhe eksponaadi: Patriot (Aigo) SK8671, mis on ehitatud tĂŒĂŒpilise kujunduse jĂ€rgi – LCD-ekraan ja PIN-koodi sisestamiseks klaviatuur. Selline tulemus sai


1. Sissejuhatus
2. Riistvaraarhitektuur
– 2.1. Emaplaat
– 2.2. LCD-ekraani plaat
– 2.3. Klaviatuuriplaat
– 2.4. Vaatame kaableid
3. RĂŒnnaku sammude jĂ€rjestus
– 3.1. Kausime SPI-mĂ€ludump'i
– 3.2. Nuusime sidekanaleid

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks


1. Sissejuhatus

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks
Korpus

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks
Pakend

PÀÀs salvestatud andmetele, mis on vĂ€idetavalt krĂŒpteeritud, toimub pĂ€rast PIN-koodi sisestamist. MĂ”ned sissejuhatavad mĂ€rkused selle seadme kohta:

  • PIN-koodi muutmiseks tuleb enne avamist vajutada F1;
  • PIN-kood peab sisaldama 6 kuni 9 numbrit;
  • PĂ€rast 15 vale katset kustutatakse ketas.

2. Riistvaraarhitektuur

Esiteks avame seadme osadeks, et mĂ”ista, millistest komponentidest see koosneb. KĂ”ige tĂŒĂŒtum tegevus on korpuse avamine: palju mikroskoopilisi kruvi ja plastikut. Korpuse avades nĂ€eme jĂ€rgmist (pange tĂ€hele minu poolt jootetud viiekontaktilist pesa):

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

2.1. Emaplaat

Emaplaat on ĂŒsna lihtne:

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Selle silmapaistvamad osad (vt ĂŒlalt alla):

  • LCD-ekraani pesa (CN1);
  • kĂ”lar (SP1);
  • Pm25LD010 (spetsifikatsioon) SPI-mĂ€lu (U2);
  • Jmicron JMS539 (spetsifikatsioon) USB-SATA jaoks (U1);
  • USB 3 pesa (J1).

SPI-mÀlu salvestab JMS539 jaoks tarkvara ja mÔned seaded.

2.2. LCD-ekraani plaat

LCD-plaadil ei ole midagi tÀhelepanuvÀÀrset.

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks
Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Lihtsalt:

  • Tundmatu pĂ€ritolu LCD-ekraan (tĂ”enĂ€oliselt Hiina fondikomplektiga); jĂ€rjestikune juhtimine;
  • lintĂŒhendus klaviatuuriplaadile.

2.3. Klaviatuuriplaat

Klaviatuuriplaadi vaatamisel muutub olukord huvitavamaks.

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Siin, tagakĂŒljel, nĂ€eme lintĂŒhendust ja Cypress CY8C21434 – PSoC 1 mikrokontrolerit (edaspidi nimetame seda lihtsalt PSoC-iks)

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

CY8C21434 kasutab M8C kĂ€su komplekti (vt. dokumentatsioon). [Tootearuandes]( (http://www.cypress.com/part/cy8c21434-24ltxi) on mĂ€rgitud, et see toetab tehnoloogiat CapSense (Cypress'i lahendus puutetundlike klaviatuuride jaoks). Siin on nĂ€htav minu joodetud viie kontaktiga pistik – see on standardne lĂ€henemine vĂ€lise programmeerija ĂŒhendamiseks ISSP-liidese kaudu.

2.4. Vaata kaableid

Selgitame, mida siin kokku on ĂŒhendatud. Selleks on piisav, kui mÔÔta kaablite kontinentsiooniga multimeeteriga:

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Selgitused sellele joonistatud skeemile:

  • PSoC on kirjeldatud tehnilises spetsifikatsioonis;
  • jĂ€rgmine pistik, mis on paremal – ISSP-liidese, mis mingil moel vastab sellele, mis sellest Internetis on kirjutatud;
  • kĂ”ige parempoolne pistik – see on klemm lintĂŒhendajale klaviatuuriplaadiga;
  • must ristkĂŒlik – CN1 pistiku joonis, mis on mĂ”eldud pĂ”hjaplaadi ĂŒhendamiseks LCD-plaat. P11, P13 ja P4 – on ĂŒhendatud PSoC-i jalgadele 11, 13 ja 4, LCD-plaat.

3. RĂŒnnaku sammude jĂ€rjestus

NĂŒĂŒd, kui teame, millistest komponentidest see mĂ€luseade koosneb, peame: 1) veenduma, et baasfunktsionaalsus krĂŒpteerimise jaoks on tĂ”eliselt olemas; 2) vĂ€lja selgitama, kuidas genereeritakse/salvestatakse krĂŒpteerimisvĂ”tmed; 3) leidma, kus tĂ€pselt kontrollitakse PIN-koodi.

Selleks tegin jÀrgmised sammud:

  • vĂ”tsin SPI-mĂ€lukiibi andmeid dump'ida;
  • ĂŒritasin PSoC-mĂ€lukiibi andmeid dump'ida;
  • veendusin, et andmevahetus Cypress PSoC-i ja JMS539 vahel sisaldab tĂ”eliselt vajutatud klahve;
  • veendusin, et parooli muutmise korral SPI-mĂ€lukiibi andmeid ei kirjutata ĂŒmber;
  • olin liiga laisk, et ĂŒmber pöörata JMS539 8051 pĂŒsivara.

3.1. SPI-mÀlukiibi andmete dumping

See protseduur on vÀga lihtne:

  • ĂŒhendage sondid mĂ€lukiibi jalgadele: CLK, MOSI, MISO ja (valikuline) EN;
  • "nuusutades" suhtlemist snifferiga, kasutades loogikaanalĂŒsaatorit (kasutasin Saleae Logic Pro 16);
  • dekodeerida SPI-protokolli ja eksportida tulemusi CSV formaati;
  • kasutada decode_spi.rb, et analĂŒĂŒsida tulemusi ja saada dump.

Pange tĂ€hele, et see lĂ€henemine JMS539 kontrolleri puhul töötab eriliselt hĂ€sti, kuna see kontroller laadib algatamise etapis kogu pĂŒsivara mĂ€lukiibist.

$ 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

SPI-flash'ilt mĂ€rkides jĂ”udsin jĂ€reldusele, et selle ainus ĂŒlesanne on salvestada JMicroni juhtimisseadme pĂŒsivara, mis on integreeritud 8051 mikrokontrollerisse. Kahjuks osutus SPI-flashi vĂ€ljajĂ”udmine kasutu:

  • PIN-koodi muutmisel jÀÀb flash'i dump samaks;
  • seadme SPI-flash'i juurde ei pöörduta algatustsĂŒkli jooksul.

3.2. Uurime kommunikatsioone

See on ĂŒks viise, kuidas leida, milline kiip vastutab, et kontrollida kommunikatsioone, huvitavaid aegu/sisu. Nagu juba teame, on USB-SATA kontroller ĂŒhendatud LCD Cypress PSoC-iga, lĂ€bi CN1 pesade ja kahe ribaga. SeetĂ”ttu ĂŒhendame sondid kolme vastava jalaga:

  • P4, ĂŒldine sisse/t vĂ€lja;
  • P11, I2C SCL;
  • P13, I2C SDA.

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

SeejĂ€rel kĂ€ivitan loogilise analĂŒsaatori Saleae ja sisestan klaviatuuril: "123456~". Tulemuseks on jĂ€rgmine diagramm.

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Sellelt vÔime nÀha kolme andmevahetuse kanalit:

  • kanalil P4 mitu lĂŒhikest piiksumist;
  • P11 ja P13 – peaaegu pidev andmevahetus.

Suurendades esimest piiksumist kanalil P4 (sinine ristkĂŒlik eelmisel joonisel), nĂ€eme jĂ€rgmist:

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Siit nĂ€eme, et P4-l on peaaegu 70ms ĂŒhtlane signaal, mis tundus mulle algul sĂŒnkroone signalina. Kuid pĂ€rast mĂ”ningast aega oma oletuse kontrollimisel avastasin, et see ei ole sĂŒnkroone signaal, vaid helivoog, mis antakse vĂ€lja hÀÀlitsi, kui klahve vajutatakse. Seega ei sisalda see signaali osa meie jaoks kasulikku informatsiooni. Siiski saab seda kasutada indikaatorina – et teada hetke, mil PSoC registreerib klahvi vajutamist.

Kuid P4 kanali viimane helivoog erineb natuke teistest: see on heli «vale PIN-kood» jaoks!

Tagasi klahvide vajutamise diagrammi juurde, kui suurendame viimase helivooga diagrammi (vt uuesti sinine ristkĂŒlik), saame:

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

Siin nĂ€eme ĂŒhtlaseid signaale P11-l. Tundub, et see ongi sĂŒnkroone signaal. Ja P13 – andmed. Pange tĂ€hele, kuidas mustri muutub pĂ€rast helisignaali lĂ”ppu. Oleks huvitav nĂ€ha, mis siin toimub.

Protokollid, mis töötavad kahe juhtmega, on tavaliselt SPI vÔi I2C, ja Cypressi tehnilises spetsifikatsioonis öeldakse, et need kontaktid vastavad I2C-le, mis nagu nÀeme kehtib ka meie puhul:

Aigo enkrĂŒpteeritud vĂ€list HDD-draivi tagasivaatamine ja hĂ€kkimine. Osa 1: LĂ”hume osadeks

USB-SATA chipset constantly polls the PSoC to read the state of the key, which is by default "0". Then, when the key "1" is pressed, it changes to "1". The final transmission, just after pressing “~”, differs if an incorrect PIN code is entered. However, at this point, I haven't checked what is actually transmitted there. But I suspect it's unlikely to be the encryption key. Anyway, see the next section to understand how I extracted the firmware dump from the PSoC.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster