Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Invertire e hackerare unità esterne con crittografia automatica è il mio vecchio hobby. In passato ho avuto l'opportunità di esercitarmi con modelli come Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Proprio di recente, un collega mi ha portato un altro oggetto: Patriot (Aigo) SK8671, costruito secondo un design tipico: un indicatore LCD e una tastiera per l'immissione di un codice PIN. Questo è quello che ne è venuto fuori...

1. introduzione
2. Architettura hardware
– 2.1. Scheda principale
– 2.2. Scheda indicatore LCD
– 2.3. Scheda tastiera
– 2.4. Guardando i fili
3. Sequenza delle fasi di attacco
– 3.1. Effettuare un dump dei dati da un'unità flash SPI
– 3.2. Fiutare le comunicazioni

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti


1. introduzione

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti
alloggiamento

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti
Imballaggio

L'accesso ai dati memorizzati sul disco, presumibilmente crittografati, avviene dopo aver inserito il codice PIN. Alcune note introduttive su questo dispositivo:

  • Per modificare il codice PIN è necessario premere F1 prima dello sblocco;
  • Il codice PIN deve contenere da 6 a 9 cifre;
  • Dopo 15 tentativi errati, il disco viene cancellato.

2. Architettura hardware

Innanzitutto, analizziamo il dispositivo in parti per capire da quali componenti è composto. Il compito più noioso è aprire la custodia: un sacco di viti microscopiche e plastica. Aprendo il case vediamo quanto segue (attenzione al connettore a cinque pin che ho saldato):

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

2.1. Scheda principale

La scheda principale è abbastanza semplice:

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Le sue parti più importanti (vedi dall'alto al basso):

  • connettore per indicatore LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 (specificazione) Chiavetta SPI (U2);
  • Controller Jmicron JMS539 (specificazione) per USB-SATA (U1);
  • Connettore USB 3 (J1).

L'unità flash SPI memorizza il firmware per JMS539 e alcune impostazioni.

2.2. Scheda indicatore LCD

Non c'è nulla di straordinario sulla scheda LCD.

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti
Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Soltanto:

  • Indicatore LCD di origine sconosciuta (probabilmente con un set di caratteri cinesi); con controllo sequenziale;
  • Connettore a nastro per tastiera.

2.3. Scheda tastiera

Quando si esamina la tastiera, le cose prendono una piega più interessante.

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Qui, sul retro, vediamo un connettore a nastro, nonché un microcontrollore Cypress CY8C21434 PSoC 1 (di seguito lo chiameremo semplicemente PSoC)

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

CY8C21434 utilizza il set di istruzioni M8C (vedi documentazione). Nella [pagina del prodotto]( (http://www.cypress.com/part/cy8c21434-24ltxi) è indicato che supporta la tecnologia CapSense (soluzione Cypress, per tastiere capacitive). Qui puoi vedere il connettore a cinque pin che ho saldato: questo è un approccio standard per collegare un programmatore esterno tramite l'interfaccia ISSP.

2.4. Guardando i fili

Scopriamo cosa è collegato qui. Per fare ciò, basta testare i fili con un multimetro:

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Spiegazioni per questo diagramma disegnato sul ginocchio:

  • Il PSoC è descritto nelle specifiche tecniche;
  • il connettore successivo, quello a destra, è l'interfaccia ISSP, che, per volontà del destino, corrisponde a quanto scritto a riguardo su Internet;
  • Il connettore più a destra è il terminale per il connettore a nastro alla scheda tastiera;
  • Il rettangolo nero è un disegno del connettore CN1, progettato per collegare la scheda principale alla scheda LCD. P11, P13 e P4 sono collegati ai pin PSoC 11, 13 e 4, sulla scheda LCD.

3. Sequenza delle fasi di attacco

Ora che sappiamo di quali componenti è composta questa unità, dobbiamo: 1) assicurarci che la funzionalità di crittografia di base sia effettivamente presente; 2) scoprire come vengono generate/salvate le chiavi di crittografia; 3) trovare dove verrà controllato esattamente il codice PIN.

Per fare ciò ho eseguito i seguenti passaggi:

  • ha effettuato un dump dei dati da un'unità flash SPI;
  • ho provato a scaricare i dati da un'unità flash PSoC;
  • verificato che la comunicazione tra Cypress PSoC e JMS539 contenga effettivamente sequenze di tasti;
  • Mi sono assicurato che quando si modifica la password, nulla venga sovrascritto nell'unità flash SPI;
  • era troppo pigro per invertire il firmware 8051 da JMS539.

3.1. Effettuare un dump dei dati da un'unità flash SPI

Questa procedura è molto semplice:

  • collegare le sonde ai piedini della chiavetta USB: CLK, MOSI, MISO e (opzionale) EN;
  • Comunicazioni "sniffate" con uno sniffer utilizzando un analizzatore logico (ho usato Saleae Logic Pro 16);
  • decodificare il protocollo SPI ed esportare i risultati in CSV;
  • approfittare decodifica_spi.rbper analizzare i risultati e ottenere un dump.

Tieni presente che questo approccio funziona particolarmente bene nel caso del controller JMS539, poiché questo controller carica tutto il firmware dall'unità flash in fase di inizializzazione.

$ 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

Dopo aver effettuato un dump dall'unità flash SPI, sono giunto alla conclusione che il suo unico compito è archiviare il firmware per il dispositivo di controllo JMicron, integrato nel microcontrollore 8051. Sfortunatamente, eseguire un dump dell'unità flash SPI si è rivelato inutile:

  • quando si cambia il codice PIN, il dump della chiavetta rimane lo stesso;
  • Dopo la fase di inizializzazione, il dispositivo non accede all'unità flash SPI.

3.2. Fiutare le comunicazioni

Questo è un modo per scoprire quale chip è responsabile del controllo delle comunicazioni per il tempo/contenuto di interesse. Come già sappiamo, il controller USB-SATA è collegato al display LCD PSoC di Cypress tramite il connettore CN1 e due piattine. Colleghiamo quindi le sonde alle tre gambe corrispondenti:

  • P4, ingresso/uscita generale;
  • P11, I2C SCL;
  • P13, I2C SDA.

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Quindi lanciamo l'analizzatore logico Saleae e inseriamo sulla tastiera: “123456~”. Di conseguenza, vediamo il seguente diagramma.

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Su di esso possiamo vedere tre canali di scambio dati:

  • ci sono diversi brevi burst sul canale P4;
  • su P11 e P13 - scambio di dati quasi continuo.

Ingrandendo il primo picco sul canale P4 (rettangolo blu nella figura precedente), vediamo quanto segue:

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Qui puoi vedere che su P4 ci sono quasi 70 ms di segnale monotono, che all'inizio mi sembrava svolgere il ruolo di un segnale di clock. Tuttavia, dopo aver passato un po' di tempo a verificare le mie ipotesi, ho scoperto che non si tratta di un segnale di clock, ma di un flusso audio che viene inviato al tweeter quando vengono premuti i tasti. Pertanto, questa sezione del segnale stesso non contiene informazioni utili per noi. Tuttavia, può essere utilizzato come indicatore per sapere quando il PSoC registra la pressione di un tasto.

Tuttavia, l'ultimo flusso audio P4 è leggermente diverso: è l'audio per il "PIN non valido"!

Tornando al grafico della sequenza di tasti, ingrandendo l'ultimo grafico del flusso audio (vedi ancora il rettangolo blu), otteniamo:

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Qui vediamo segnali monotoni su P11. Quindi sembra che questo sia il segnale dell'orologio. E P13 sono dati. Notare come cambia il pattern al termine del segnale acustico. Sarebbe interessante vedere cosa succede qui.

I protocolli che funzionano con due fili sono solitamente SPI o I2C e le specifiche tecniche di Cypress affermano che questi pin corrispondono a I2C, cosa che vediamo essere vera nel nostro caso:

Inversione e hacking dell'unità HDD esterna con crittografia automatica Aigo. Parte 1: Dissezione in parti

Il chipset USB-SATA interroga costantemente il PSoC per leggere lo stato della chiave, che per impostazione predefinita è "0". Quindi, quando si preme il tasto "1", cambia in "1". La trasmissione finale immediatamente dopo aver premuto “~” è diversa se viene inserito il codice PIN errato. Tuttavia, al momento non ho verificato cosa viene effettivamente trasmesso lì. Ma sospetto che sia improbabile che si tratti di una chiave di crittografia. Ad ogni modo, consulta la sezione successiva per capire come ho rimosso il firmware interno del PSoC.

Fonte: habr.com

Aggiungi un commento