Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Inversarea și piratarea unităților externe cu auto-criptare este vechiul meu hobby. În trecut, am avut ocazia să exersez cu modele precum Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Recent, un coleg mi-a adus o altă expoziție: Patriot (Aigo) SK8671, care este construit după un design tipic - un indicator LCD și o tastatură pentru introducerea unui cod PIN. Asta a iesit din asta...

1. Introducere
2. Arhitectura hardware
– 2.1. Placa principală
– 2.2. Placa indicatoare LCD
– 2.3. Tastatură cu tastatură
– 2.4. Privind firele
3. Secvența pașilor de atac
– 3.1. Preluarea unui dump de date de pe o unitate flash SPI
– 3.2. Adulmecând comunicații

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți


1. Introducere

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți
carcasă

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți
Ambalare

Accesul la datele stocate pe disc, care se presupune că sunt criptate, se realizează după introducerea codului PIN. Câteva note introductive despre acest dispozitiv:

  • Pentru a schimba codul PIN, trebuie să apăsați F1 înainte de deblocare;
  • Codul PIN trebuie să conțină de la 6 la 9 cifre;
  • După 15 încercări incorecte, discul este șters.

2. Arhitectura hardware

În primul rând, disecăm dispozitivul în părți pentru a înțelege din ce componente constă. Cea mai obositoare sarcină este deschiderea carcasei: o mulțime de șuruburi microscopice și plastic. După ce am deschis carcasa, vedem următoarele (atenție la conectorul cu cinci pini pe care l-am lipit):

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

2.1. Placa principală

Placa principală este destul de simplă:

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Cele mai notabile părți ale sale (vezi de sus în jos):

  • conector pentru indicator LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 (specificație) unitate flash SPI (U2);
  • Controler Jmicron JMS539 (specificație) pentru USB-SATA (U1);
  • Conector USB 3 (J1).

Unitatea flash SPI stochează firmware-ul pentru JMS539 și unele setări.

2.2. Placa indicatoare LCD

Nu este nimic remarcabil pe placa LCD.

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți
Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Numai:

  • Indicator LCD de origine necunoscută (probabil cu un set de fonturi chinezești); cu control secvenţial;
  • Conector tip panglică pentru placa tastaturii.

2.3. Tastatură cu tastatură

Când examinăm tastatura, lucrurile iau o întorsătură mai interesantă.

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Aici, pe partea din spate, vedem un conector tip panglică, precum și un microcontroler Cypress CY8C21434 PSoC 1 (în continuare îl vom numi pur și simplu PSoC)

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

CY8C21434 utilizează setul de instrucțiuni M8C (vezi documentație). Pe [pagina produsului]( (http://www.cypress.com/part/cy8c21434-24ltxi) se indică faptul că suportă tehnologia CapSense (soluție de la Cypress, pentru tastaturi capacitive). Aici puteți vedea conectorul cu cinci pini pe care l-am lipit - aceasta este o abordare standard pentru conectarea unui programator extern prin interfața ISSP.

2.4. Privind firele

Să ne dăm seama ce este conectat aici. Pentru a face acest lucru, trebuie doar să testați firele cu un multimetru:

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Explicații pentru această diagramă desenată pe genunchi:

  • PSoC este descris în specificația tehnică;
  • următorul conector, cel din dreapta, este interfața ISSP, care, prin voința sorții, corespunde cu ceea ce se scrie despre ea pe Internet;
  • Conectorul din dreapta este terminalul pentru conectorul panglică la placa tastaturii;
  • Dreptunghiul negru este un desen al conectorului CN1, conceput pentru a conecta placa principală la placa LCD. P11, P13 și P4 sunt conectate la pinii PSoC 11, 13 și 4, de pe placa LCD.

3. Secvența pașilor de atac

Acum că știm din ce componente constă această unitate, trebuie să: 1) să ne asigurăm că funcționalitatea de bază de criptare este efectiv prezentă; 2) aflați cum sunt generate/salvate cheile de criptare; 3) găsiți unde exact va fi verificat codul PIN.

Pentru a face acest lucru am făcut următorii pași:

  • a luat un dump de date de pe o unitate flash SPI;
  • a încercat să dump datele de pe o unitate flash PSoC;
  • a verificat că comunicarea dintre Cypress PSoC și JMS539 conține efectiv apăsări de taste;
  • M-am asigurat că la schimbarea parolei, nimic nu este suprascris în unitatea flash SPI;
  • a fost prea leneș să inverseze firmware-ul 8051 de la JMS539.

3.1. Preluarea unui dump de date de pe o unitate flash SPI

Această procedură este foarte simplă:

  • conectați sonde la picioarele unității flash: CLK, MOSI, MISO și (opțional) EN;
  • „adulmecă” comunicațiile cu un sniffer folosind un analizor logic (am folosit Saleae Logic Pro 16);
  • decodați protocolul SPI și exportați rezultatele în CSV;
  • profita decode_spi.rbpentru a analiza rezultatele și a obține un dump.

Vă rugăm să rețineți că această abordare funcționează mai ales bine în cazul controlerului JMS539, deoarece acest controler încarcă tot firmware-ul de pe unitatea flash în etapa de inițializare.

$ 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

După ce am făcut o descărcare de pe unitatea flash SPI, am ajuns la concluzia că singura sa sarcină este să stocheze firmware-ul pentru dispozitivul de control JMicron, care este încorporat în microcontrolerul 8051. Din păcate, aruncarea unității flash SPI s-a dovedit a fi inutilă:

  • când codul PIN este schimbat, descărcarea unității flash rămâne aceeași;
  • După etapa de inițializare, dispozitivul nu accesează unitatea flash SPI.

3.2. Adulmecând comunicații

Aceasta este o modalitate de a găsi ce cip este responsabil pentru verificarea comunicațiilor pentru timpul/conținutul de interes. După cum știm deja, controlerul USB-SATA este conectat la Cypress PSoC LCD prin conectorul CN1 și două panglici. Prin urmare, conectăm sondele la cele trei picioare corespunzătoare:

  • P4, intrare/ieșire generală;
  • P11, I2C SCL;
  • P13, I2C SDA.

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Apoi lansăm analizorul logic Saleae și introducem pe tastatură: „123456~”. Ca rezultat, vedem următoarea diagramă.

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Pe el putem vedea trei canale de schimb de date:

  • există mai multe rafale scurte pe canalul P4;
  • pe P11 și P13 - schimb de date aproape continuu.

Mărind primul vârf de pe canalul P4 (dreptunghi albastru în figura anterioară), vedem următoarele:

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Aici puteți vedea că pe P4 există aproape 70ms de semnal monoton, care la început mi s-a părut că joacă rolul unui semnal de ceas. Cu toate acestea, după ce am petrecut ceva timp verificându-mi presupunerea, am descoperit că acesta nu este un semnal de ceas, ci un flux audio care este transmis către tweeter atunci când sunt apăsate tastele. Prin urmare, această secțiune a semnalului în sine nu conține informații utile pentru noi. Cu toate acestea, poate fi folosit ca indicator pentru a ști când PSoC înregistrează o apăsare de tastă.

Cu toate acestea, cel mai recent flux audio P4 este puțin diferit: este audio pentru „PIN-ul nevalid”!

Revenind la graficul apăsării tastei, mărind ultimul grafic al fluxului audio (vedeți din nou dreptunghiul albastru), obținem:

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Aici vedem semnale monotone pe P11. Deci se pare că acesta este semnalul ceasului. Și P13 sunt date. Observați cum se schimbă modelul după ce se termină semnalul sonor. Ar fi interesant de văzut ce se întâmplă aici.

Protocoalele care funcționează cu două fire sunt de obicei SPI sau I2C, iar specificația tehnică de pe Cypress afirmă că acești pini corespund I2C, ceea ce vedem că este adevărat în cazul nostru:

Inversarea și piratarea unității HDD externe cu auto-criptare Aigo. Partea 1: Disecția în părți

Chipsetul USB-SATA interogează constant PSoC pentru a citi starea cheii, care în mod implicit este „0”. Apoi, când apăsați tasta „1”, aceasta se schimbă în „1”. Transmisia finală imediat după apăsarea „~” este diferită dacă este introdus codul PIN greșit. Cu toate acestea, momentan nu am verificat ce se transmite de fapt acolo. Dar bănuiesc că este puțin probabil să fie o cheie de criptare. Oricum, consultați secțiunea următoare pentru a înțelege cum am eliminat firmware-ul intern PSoC.

Sursa: www.habr.com

Adauga un comentariu