Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Il reversing e l'hacking di unità auto-crittografanti esterne sono la mia lunga passione. In passato, ho sperimentato con modelli come Zalman VE-400, Zalman ZM-SHE500, e Zalman ZM-VE500. Recentemente, un collega mi ha portato un altro esemplare: Patriot (Aigo) SK8671, che segue un design tipico: un display LCD e una tastiera per inserire il PIN. Ecco cosa ne è venuto fuori...

1. Introduzione
2. Architettura hardware
– 2.1. Scheda madre
– 2.2. Scheda del display LCD
– 2.3. Scheda della tastiera
– 2.4. Guardiamo i cavi
3. Sequenza dei passi dell'attacco
– 3.1. Estraiamo il dump dei dati della flash SPI
– 3.2. Analizziamo le comunicazioni

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.


1. Introduzione

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.
Case

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.
Imballaggio

L'accesso ai dati salvati sul disco, che si presume siano crittografati, è possibile solo dopo l'inserimento del PIN. Alcune osservazioni introduttive su questo dispositivo:

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

2. Architettura hardware

Iniziamo smontando il dispositivo per capire di quali componenti è composto. La parte più noiosa è l'apertura del case: ci sono molte viti microscopiche e plastica. Una volta aperto il case, vediamo il seguente (notate il connettore a cinque pin che ho saldato):

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

2.1. Scheda principale

La scheda principale è piuttosto semplice:

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Le parti più notevoli (vedi dall'alto verso il basso):

  • connettore per il display LCD (CN1);
  • altoparlante (SP1);
  • Pm25LD010 (specifica) chip flash SPI (U2);
  • controller Jmicron JMS539 (specifica) per USB-SATA (U1);
  • connettore USB 3 (J1).

Il chip flash SPI memorizza il firmware per JMS539 e alcune configurazioni.

2.2. Scheda del display LCD

Sulla scheda LCD non c'è nulla di particolare.

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.
Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Solo:

  • display LCD di origine sconosciuta (probabilmente con un set di caratteri cinese); con gestione seriale;
  • connettore a nastro per la scheda della tastiera.

2.3. Scheda della tastiera

Esaminando la scheda della tastiera, le cose prendono una piega più interessante.

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Qui, sul retro, vediamo un connettore a nastro, oltre a Cypress CY8C21434 – microcontrollore PSoC 1 (d'ora in poi lo chiameremo semplicemente PSoC)

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

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

2.4. Guardiamo i cavi

Comprendiamo cosa è collegato a cosa. Per farlo, è sufficiente controllare i cavi con un multimetro:

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Spiegazioni per questo schema disegnato a mano:

  • Il PSoC è descritto nelle specifiche tecniche;
  • il connettore successivo, quello a destra – è l'interfaccia ISSP, che per una sorta di destino corrisponde a quanto scritto su di essa online;
  • il connettore più a destra è il terminale per il connettore a nastro con la scheda della tastiera;
  • il rettangolo nero – è il disegno del connettore CN1, destinato a collegare la scheda principale con la scheda LCD. P11, P13 e P4 sono collegate ai pin PSoC 11, 13 e 4, sulla scheda LCD.

3. Sequenza dei passi dell'attacco

Ora che sappiamo da quali componenti è composto questo dispositivo di archiviazione, dobbiamo: 1) assicurarci che la funzionalità di base della crittografia sia effettivamente presente; 2) scoprire come vengono generati/salvati le chiavi di crittografia; 3) trovare dove viene controllato il PIN.

Per questo ho eseguito i seguenti passaggi:

  • ho effettuato il dump dei dati della memoria flash SPI;
  • ho provato a effettuare il dump dei dati della memoria flash PSoC;
  • ho verificato che lo scambio di dati tra Cypress PSoC e JMS539 contiene effettivamente i tasti premuti;
  • ho confermato che, cambiando la password, nulla viene sovrascritto nella memoria flash SPI;
  • ero troppo pigro per fare il reverse engineering del firmware 8051 di JMS539.

3.1. Effettuare il dump dei dati della memoria flash SPI

Questa procedura è molto semplice:

  • collegare le sonde ai pin della flash: CLK, MOSI, MISO e (opzionalmente) EN;
  • “annusare” le comunicazioni con un sniffatore, utilizzando un analizzatore logico (ho utilizzato il Saleae Logic Pro 16);
  • decodificare il protocollo SPI ed esportare i risultati in CSV;
  • utilizzare decode_spi.rb, per analizzare i risultati e ottenere il dump.

Si prega di notare che questo approccio funziona particolarmente bene con il controller JMS539, poiché questo controller carica l'intero firmware dalla flash durante la 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 estratto il dump dalla memoria flash SPI, sono giunto alla conclusione che il suo unico compito è memorizzare il firmware per il dispositivo di controllo JMicron, che è integrato nel microcontrollore 8051. Sfortunatamente, l'estrazione del dump della memoria flash SPI si è rivelata inutile:

  • quando si cambia il codice PIN, il dump della memoria rimane lo stesso;
  • dopo la fase di inizializzazione, il dispositivo non accede alla memoria flash SPI.

3.2. Analizziamo le comunicazioni

Questo è uno dei modi per scoprire quale chip è responsabile della verifica delle comunicazioni, per il tempo/contenuto in questione. Come già sappiamo, il controller USB-SATA è collegato al Cypress PSoC LCD tramite il connettore CN1 e due bande. Pertanto, colleghiamo le sonde ai tre pin corrispondenti:

  • P4, input/output comune;
  • P11, I2C SCL;
  • P13, I2C SDA.

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Poi avviamo l'analizzatore logico Saleae e digitiamo sulla tastiera: “123456~”. Il risultato è il seguente diagramma.

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

In esso possiamo vedere tre canali di scambio dati:

  • sul canale P4 ci sono alcuni brevi picchi;
  • sui canali P11 e P13 – uno scambio dati quasi continuo.

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

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Qui si vede che su P4 ci sono quasi 70 ms di segnale uniforme, che inizialmente pensavo fungesse da segnale di sincronizzazione. Tuttavia, dopo aver speso un po' di tempo a verificare la mia ipotesi, ho scoperto che non era un segnale di sincronizzazione, ma un flusso audio riprodotto su un altoparlante al momento della pressione dei tasti. Pertanto, questa porzione di segnale non contiene informazioni utili per noi. Tuttavia, può essere usata come indicatore — per sapere quando il PSoC registra la pressione di un tasto.

Tuttavia, l'ultimo flusso audio del canale P4 è leggermente diverso dagli altri: è il suono per 'codice PIN errato'!

Tornando al grafico della pressione dei tasti, ingrandendo il grafico dell'ultimo flusso audio (vedi di nuovo il rettangolo blu), otteniamo:

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Qui vediamo segnali uniformi su P11. Quindi sembra proprio che questo sia il segnale di sincronizzazione. E P13 sono i dati. Nota come il modello cambia dopo la fine del segnale sonoro. Sarebbe interessante vedere cosa sta succedendo qui.

I protocolli che operano con due fili sono solitamente SPI o I2C, e nella specifica tecnica di Cypress si afferma che questi contatti sono compatibili con I2C, il che è ovviamente valido anche per il nostro caso:

Reverse engineering e hacking di un'unità HDD esterna auto-crittografante Aigo. Parte 1: Smontiamo in parti.

Il chipset USB-SATA interroga costantemente il PSoC per leggere lo stato del tasto, che per impostazione predefinita è "0". Poi, quando si preme il tasto, cambia in "1". La trasmissione finale, subito dopo aver premuto il “~”, è diversa se il codice PIN inserito è errato. Tuttavia, al momento non ho verificato cosa venga effettivamente trasmesso. Ma sospetto che difficilmente si tratti di una chiave di crittografia. In ogni caso, guarda la sezione successiva per capire come ho estratto il dump del firmware interno del PSoC.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster