Invertir y piratear el HDD externo de autocifrado de Aigo. Parte 1: disección en partes

Invertir y piratear discos externos de autocifrado es mi antiguo pasatiempo. En el pasado, solía practicar con modelos como el Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Más recientemente, un colega me trajo otra exhibición: Patriot (Aigo) SK8671, que está construida de acuerdo con un diseño típico: un indicador LCD y un teclado para ingresar un código PIN. Esto es lo que salió de eso ...


1. Introducción
2. Arquitectura de hardware
- 2.1. Tablero principal
- 2.2. Tablero LCD
- 2.3. Tablero de teclado
- 2.4. Nos fijamos en los cables
3. La secuencia de pasos de ataque.
- 3.1. Elimine el volcado de datos de la unidad flash SPI
- 3.2. Olfatear la comunicación




1. Introducción



Vivienda



Embalaje


El acceso a los datos almacenados en el disco, que supuestamente está cifrado, se realiza después de ingresar el código PIN. Algunas notas introductorias sobre este dispositivo:


  • Para cambiar el código PIN, presione F1 antes de desbloquear;
  • El código PIN debe tener entre 6 y 9 dígitos;
  • Después de 15 intentos incorrectos, el disco se borra.


2. Arquitectura de hardware


Primero, preparamos el dispositivo en partes para comprender en qué componentes está compuesto. La tarea más tediosa es abrir el estuche: muchos dientes microscópicos y plástico. Una vez abierto el caso, vemos lo siguiente (preste atención al conector de cinco pines soldado por mí):




2.1. Tablero principal


El tablero principal es bastante simple:



Sus partes más notables (ver de arriba a abajo):


  • Conector LCD (CN1);
  • tweeter (SP1);
  • Unidad flash SPI Pm25LD010 ( especificación ) (U2);
  • Controlador Jmicron JMS539 ( especificación ) para USB-SATA (U1);
  • Conector USB 3 (J1).

La unidad flash SPI almacena el firmware para el JMS539 y algunas configuraciones.



2.2. Tablero LCD


No hay nada notable en la placa LCD.




Solo:


  • Indicador LCD de origen desconocido (probablemente con un conjunto de fuentes chino); con control secuencial;
  • conector de cinta para tablero de teclado.


2.3. Tablero de teclado


Cuando miras el tablero del teclado, las cosas adquieren un giro más interesante.



Aquí, en la parte posterior, vemos el conector de cinta, así como el Cypress CY8C21434, el microcontrolador PSoC 1 (en lo sucesivo denominado simplemente PSoC)



CY8C21434 utiliza el conjunto de instrucciones M8C (ver documentación ). En la página del producto, se indica que es compatible con la tecnología CapSense (una solución de Cypress para teclados capacitivos). Aquí puedo ver el conector de cinco pines soldado por mí: este es un enfoque estándar para conectar un programador externo a través de la interfaz ISSP.



2.4. Nos fijamos en los cables


Veamos qué está relacionado con esto. Para hacer esto, es suficiente hacer sonar los cables con un multímetro:



Explicaciones para este diagrama dibujado a la rodilla:


  • PSoC se describe en la especificación técnica;
  • el siguiente conector, el de la derecha, es una interfaz ISSP que, por voluntad del destino, corresponde a lo que se escribe sobre él en Internet;
  • el conector de la derecha es un terminal para un conector de cinta con una placa de teclado;
  • El rectángulo negro es un dibujo del conector CN1, diseñado para conectar la placa principal a la placa LCD. P11, P13 y P4: conectados a las patas PSoC 11, 13 y 4, en la placa LCD.


3. La secuencia de pasos de ataque.


Ahora que sabemos en qué componentes está compuesta esta unidad, necesitamos: 1) asegurarnos de que la funcionalidad básica de cifrado esté realmente presente; 2) averiguar cómo se generan / almacenan las claves de cifrado; 3) encuentre dónde se verifica exactamente el código PIN.


Para hacer esto, he realizado los siguientes pasos:


  • eliminó un volcado de datos de una unidad flash SPI;
  • Traté de eliminar el volcado de datos de la unidad flash PSoC;
  • se aseguró de que el intercambio de datos entre Cypress PSoC y JMS539 realmente contenga las teclas presionadas;
  • se aseguró de que al cambiar la contraseña, no se sobrescriba nada en la unidad flash SPI;
  • era demasiado vago para revertir el firmware 8051 de JMS539.


3.1. Elimine el volcado de datos de la unidad flash SPI


Este procedimiento es muy simple:


  • conecte las sondas a las patas de la unidad flash: CLK, MOSI, MISO y (opcionalmente) EN;
  • Comunicaciones “Sniff” usando un sniffer usando un analizador lógico (usé Saleae Logic Pro 16 );
  • decodifica el protocolo SPI y exporta los resultados a CSV;
  • Use decode_spi.rb para analizar los resultados y obtener un volcado.

Tenga en cuenta que este enfoque en el caso del controlador JMS539 funciona especialmente bien, ya que este controlador carga todo el firmware desde la unidad flash USB durante la 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 

Después de eliminar el volcado de la unidad flash SPI, llegué a la conclusión de que su única tarea es almacenar el firmware para la unidad de control JMicron, que está integrada en el microcontrolador 8051. Desafortunadamente, volcar la unidad flash SPI resultó inútil:


  • Al cambiar el código PIN, el volcado de la unidad flash permanece igual;
  • después de la etapa de inicialización, el dispositivo no accede a la unidad flash SPI.


3.2. Olfatear la comunicación


Esta es una forma de encontrar qué chip es responsable de verificar las comunicaciones por el tiempo / contenido de interés. Como ya sabemos, el controlador USB-SATA está conectado a la pantalla LCD Cypress PSoC a través del conector CN1 y dos cintas. Por lo tanto, conectamos las sondas a las tres patas correspondientes:


  • P4, entrada / salida general;
  • P11, I2C SCL;
  • P13, I2C SDA.


Luego iniciamos el analizador lógico Saleae e ingresamos en el teclado: "123456 ~". Como resultado, vemos el siguiente diagrama.



En él podemos ver tres canales de intercambio de datos:


  • el canal P4 tiene varias ráfagas cortas;
  • en P11 y P13: intercambio de datos casi continuo.

Al aumentar la primera ráfaga en el canal P4 (el rectángulo azul de la figura anterior), vemos lo siguiente:



Aquí puede ver que en P4 hay casi 70 ms de una señal uniforme, que, como me pareció al principio, desempeña el papel de una señal de reloj. Sin embargo, después de pasar algún tiempo tratando de verificar mi presentimiento, descubrí que no se trata de una señal de reloj, sino de una transmisión de audio que se emite al chirrido cuando presiona las teclas. Por lo tanto, esta sección de señal en sí no contiene información útil para nosotros. Sin embargo, se puede usar como un indicador para saber el momento en que el PSoC registra una pulsación de tecla.


Sin embargo, la última transmisión de audio del canal P4 es ligeramente diferente de las demás: ¡este es el sonido para el "código PIN incorrecto"!


Volviendo al diagrama de pulsaciones de teclas, al aumentar el diagrama de la última secuencia de audio (ver nuevamente el rectángulo azul) obtenemos:



Aquí vemos señales monótonas en P11. Entonces parece que este es el reloj. Y P13 son datos. Observe cómo cambia el patrón después del final del pitido. Sería interesante ver lo que está sucediendo aquí.


Los protocolos que funcionan con dos cables suelen ser SPI o I2C, y la especificación técnica de Cypress dice que estos contactos corresponden a I2C, que, como vemos, es cierto para nuestro caso:



El chipset USB-SATA sondea constantemente el PSoC para leer el estado clave, que por defecto es "0". Luego, cuando presiona la tecla "1", cambia a "1". La transmisión final, inmediatamente después de presionar "~", es diferente si se ingresa un código PIN incorrecto. Sin embargo, en este momento no verifiqué lo que realmente se transmitió allí. Pero sospecho que esto no es una clave de cifrado. De todos modos, consulte la siguiente sección para comprender cómo eliminé el volcado del firmware interno de PSoC.

Source: https://habr.com/ru/post/455515/


All Articles