Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Inverter e piratear unidades de autocifrado externas é o meu vello pasatempo. No pasado, tiven a oportunidade de practicar con modelos como Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Hai pouco, un compañeiro trouxome outra exposición: Patriot (Aigo) SK8671, que está construído segundo un deseño típico: un indicador LCD e un teclado para introducir un código PIN. Iso foi o que saíu...

1. Introdución
2. Arquitectura de hardware
– 2.1. Placa principal
– 2.2. Placa indicadora LCD
– 2.3. Placa de teclado
– 2.4. Mirando os fíos
3. Secuencia de pasos de ataque
- 3.1. Facendo un volcado de datos dunha unidade flash SPI
– 3.2. Esnifando comunicacións

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes


1. Introdución

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes
Vivenda

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes
Embalaxe

O acceso aos datos almacenados no disco, supostamente cifrados, realízase tras introducir o código PIN. Algunhas notas introdutorias sobre este dispositivo:

  • Para cambiar o código PIN, debes premer F1 antes de desbloquear;
  • O código PIN debe conter de 6 a 9 díxitos;
  • Despois de 15 intentos incorrectos, o disco borrarase.

2. Arquitectura de hardware

En primeiro lugar, dividimos o dispositivo en partes para comprender de que compoñentes consta. A tarefa máis tediosa é abrir a caixa: moitos parafusos microscópicos e plástico. Despois de abrir o caso, vemos o seguinte (presta atención ao conector de cinco pinos que soldei):

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

2.1. Placa principal

O taboleiro principal é bastante sinxelo:

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

As súas partes máis salientables (ver de arriba a abaixo):

  • conector para indicador LCD (CN1);
  • tweeter (SP1);
  • PM25LD010 (especificación) Unidade flash SPI (U2);
  • controlador Jmicron JMS539 (especificación) para USB-SATA (U1);
  • Conector USB 3 (J1).

A unidade flash SPI almacena o firmware para JMS539 e algunhas configuracións.

2.2. Placa indicadora LCD

Non hai nada notable na placa LCD.

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes
Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Só:

  • Indicador LCD de orixe descoñecida (probablemente cun conxunto de fontes chinés); con control secuencial;
  • Conector de cinta para placa de teclado.

2.3. Placa de teclado

Ao examinar o teclado do teclado, as cousas dan un xiro máis interesante.

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Aquí, na parte traseira, vemos un conector de cinta, así como un microcontrolador Cypress CY8C21434 PSoC 1 (en diante simplemente chamarémolo PSoC)

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

CY8C21434 usa o conxunto de instrucións M8C (ver documentación). En [Páxina do produto]( (http://www.cypress.com/part/cy8c21434-24ltxi) indícase que admite a tecnoloxía CapSense (solución de Cypress, para teclados capacitivos). Aquí podes ver o conector de cinco pinos que soldei: este é un enfoque estándar para conectar un programador externo a través da interface ISSP.

2.4. Mirando os fíos

Imos descubrir o que está conectado aquí. Para iso, proba os cables cun multímetro:

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Explicacións para este diagrama debuxado no xeonllo:

  • O PSoC descríbese na especificación técnica;
  • o seguinte conector, o da dereita, é a interface ISSP, que, por vontade do destino, se corresponde co que se escribe sobre ela en Internet;
  • O conector máis á dereita é o terminal para o conector de cinta ao taboleiro do teclado;
  • O rectángulo negro é un debuxo do conector CN1, deseñado para conectar a placa principal á placa LCD. P11, P13 e P4 están conectados aos pinos PSoC 11, 13 e 4, na placa LCD.

3. Secuencia de pasos de ataque

Agora que sabemos de que compoñentes consiste esta unidade, debemos: 1) asegurarnos de que a funcionalidade básica de cifrado estea realmente presente; 2) descubrir como se xeran/gardan as claves de cifrado; 3) atopar onde se comprobará exactamente o código PIN.

Para facelo fixen os seguintes pasos:

  • levou un volcado de datos dunha unidade flash SPI;
  • intentou volcar datos dunha unidade flash PSoC;
  • comprobou que a comunicación entre Cypress PSoC e JMS539 contén realmente pulsacións de tecla;
  • Asegureime de que ao cambiar o contrasinal non se sobrescribe nada na unidade flash SPI;
  • foi demasiado preguiceiro para revertir o firmware 8051 de JMS539.

3.1. Facendo un volcado de datos dunha unidade flash SPI

Este procedemento é moi sinxelo:

  • conectar sondas ás patas da unidade flash: CLK, MOSI, MISO e (opcional) EN;
  • "sniff" as comunicacións cun sniffer usando un analizador lóxico (eu usei Saleae Logic Pro 16);
  • decodificar o protocolo SPI e exportar os resultados a CSV;
  • aproveitar vantaxe decode_spi.rbpara analizar os resultados e obter un vertedoiro.

Teña en conta que este enfoque funciona especialmente ben no caso do controlador JMS539, xa que este controlador carga todo o firmware da unidade flash na fase de inicialización.

$ 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

Despois de verter a unidade flash SPI, cheguei á conclusión de que a súa única tarefa é almacenar o firmware para o dispositivo de control JMicron, que está integrado no microcontrolador 8051. Desafortunadamente, tirar a unidade flash SPI resultou inútil:

  • cando se cambia o código PIN, o volcado da unidade flash segue sendo o mesmo;
  • Despois da fase de inicialización, o dispositivo non accede á unidade flash SPI.

3.2. Esnifando comunicacións

Esta é unha forma de atopar que chip é o responsable de comprobar as comunicacións para o tempo/contido de interese. Como xa sabemos, o controlador USB-SATA está conectado á pantalla LCD Cypress PSoC mediante o conector CN1 e dúas cintas. Polo tanto, conectamos as sondas ás tres patas correspondentes:

  • P4, entrada/saída xeral;
  • P11, I2C SCL;
  • P13, I2C SDA.

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Despois iniciamos o analizador lóxico Saleae e introducimos no teclado: "123456~". Como resultado, vemos o seguinte diagrama.

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Nel podemos ver tres canles de intercambio de datos:

  • hai varias ráfagas curtas na canle P4;
  • en P11 e P13 - intercambio de datos case continuo.

Facendo zoom no primeiro pico da canle P4 (rectángulo azul na figura anterior), vemos o seguinte:

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Aquí podedes ver que no P4 hai case 70ms dun sinal monótono, que nun principio pareceume que desempeñaba o papel dun sinal de reloxo. Non obstante, despois de pasar algún tempo comprobando a miña suposición, descubrín que non se trata dun sinal de reloxo, senón dun fluxo de audio que se transmite ao tweeter cando se preme as teclas. Polo tanto, esta sección do sinal en si non contén información útil para nós. Non obstante, pódese usar como indicador para saber cando o PSoC rexistra unha pulsación de tecla.

Non obstante, a última emisión de audio de P4 é un pouco diferente: é o audio do "PIN non válido".

Volvendo ao gráfico de pulsación de teclas, ampliando o último gráfico de fluxo de audio (ver o rectángulo azul de novo), obtemos:

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

Aquí vemos sinais monótonos en P11. Polo tanto, parece que este é o sinal do reloxo. E P13 son datos. Observa como cambia o patrón despois de que remata o pitido. Sería interesante ver que pasa aquí.

Os protocolos que funcionan con dous cables adoitan ser SPI ou I2C, e a especificación técnica de Cypress indica que estes pinos corresponden a I2C, o que vemos que é certo no noso caso:

Inverter e piratear a unidade HDD externa autocifrada de Aigo. Parte 1: Disección en partes

O chipset USB-SATA consulta constantemente o PSoC para ler o estado da chave, que por defecto é "0". Despois, cando preme a tecla "1", cambia a "1". A transmisión final inmediatamente despois de premer "~" é diferente se se introduce un código PIN incorrecto. Porén, polo momento non comprobei o que realmente se transmite alí. Pero sospeito que é improbable que isto sexa unha clave de cifrado. De todos os xeitos, consulta a seguinte sección para entender como eliminei o firmware interno do PSoC.

Fonte: www.habr.com

Engadir un comentario