ProHoster > Blog > administración > Revertir y piratear la unidad de disco duro externa con autocifrado Aigo. Parte 1: Disección en partes
Revertir y piratear la unidad de disco duro externa con autocifrado Aigo. Parte 1: Disección en partes
Revertir y piratear unidades externas de autocifrado es mi antiguo pasatiempo. En el pasado tuve la oportunidad de practicar con modelos como Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Recientemente, un colega me trajo otra exhibición: Patriot (Aigo) SK8671, que está construido según un diseño típico: un indicador LCD y un teclado para ingresar un código PIN. Eso es lo que salió de esto...
El acceso a los datos almacenados en el disco, supuestamente cifrados, se realiza tras introducir el código PIN. Algunas notas introductorias sobre este dispositivo:
Para cambiar el código PIN, debe presionar F1 antes de desbloquear;
El código PIN debe contener de 6 a 9 dígitos;
Después de 15 intentos incorrectos, el disco se borra.
2. Arquitectura de hardware
Primero, diseccionamos el dispositivo en partes para comprender en qué componentes se compone. La tarea más tediosa es abrir la caja: muchos tornillos microscópicos y plástico. Al abrir la caja, vemos lo siguiente (preste atención al conector de cinco pines que soldé):
2.1. tablero principal
El tablero principal es bastante simple:
Sus partes más destacables (ver de arriba a abajo):
Controlador Jmicron JMS539 (especificación) para USB-SATA (U1);
Conector USB 3 (J1).
La unidad flash SPI almacena el firmware para JMS539 y algunas configuraciones.
2.2. Tablero indicador LCD
No hay nada destacable en la placa LCD.
Solo:
Indicador LCD de origen desconocido (probablemente con fuente china); con control secuencial;
Conector de cinta para placa de teclado.
2.3. tablero del teclado
Al examinar el tablero del teclado, las cosas toman un giro más interesante.
Aquí, en la parte posterior, vemos un conector de cinta, así como un microcontrolador PSoC 8 Cypress CY21434C1 (en adelante lo llamaremos simplemente PSoC)
CY8C21434 utiliza el conjunto de instrucciones M8C (consulte documentación). En [página del producto]( (http://www.cypress.com/part/cy8c21434-24ltxi) se indica que es compatible con la tecnología CapSense (solución de Cypress, para teclados capacitivos). Aquí puede ver el conector de cinco pines que soldé; este es un método estándar para conectar un programador externo a través de la interfaz ISSP.
2.4. mirando los cables
Averigüemos qué está conectado aquí. Para hacer esto, simplemente pruebe los cables con un multímetro:
Explicaciones para este diagrama dibujado en la rodilla:
El PSoC se describe en la especificación técnica;
el siguiente conector, el de la derecha, es la interfaz ISSP, que, por voluntad del destino, corresponde a lo que está escrito al respecto en Internet;
El conector más a la derecha es el terminal para el conector de cinta a la placa del 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 están conectados a los pines 11, 13 y 4 del PSoC en la placa LCD.
3. Secuencia de pasos de ataque.
Ahora que sabemos de qué componentes consta esta unidad, debemos: 1) asegurarnos de que la funcionalidad de cifrado básica esté realmente presente; 2) descubrir cómo se generan/guardan las claves de cifrado; 3) busque dónde se verificará exactamente el código PIN.
Para ello hice los siguientes pasos:
tomó un volcado de datos de una unidad flash SPI;
intenté volcar datos de una unidad flash PSoC;
verificó que la comunicación entre Cypress PSoC y JMS539 realmente contiene pulsaciones de teclas;
Me aseguré de que al cambiar la contraseña no se sobrescribiera nada en la unidad flash SPI;
Era demasiado vago para revertir el firmware 8051 de JMS539.
3.1. Tomar un volcado de datos desde una unidad flash SPI
Este procedimiento es muy sencillo:
conecte las sondas a las patas de la unidad flash: CLK, MOSI, MISO y (opcional) EN;
"olfatear" comunicaciones con un rastreador usando un analizador lógico (yo usé Saleae Logic Pro 16);
decodificar el protocolo SPI y exportar resultados a CSV;
tomar ventaja decodificar_spi.rbpara analizar los resultados y obtener un volcado.
Tenga en cuenta que este enfoque funciona especialmente bien en el caso del controlador JMS539, ya que este controlador carga todo el firmware desde la unidad flash en la etapa de inicialización.
Después de realizar un volcado de la unidad flash SPI, llegué a la conclusión de que su única tarea es almacenar el firmware para el dispositivo de control JMicron, que está integrado en el microcontrolador 8051. Desafortunadamente, realizar un volcado de la unidad flash SPI resultó inútil:
cuando se cambia el código PIN, el volcado de la unidad flash sigue siendo el mismo;
Después de la etapa de inicialización, el dispositivo no accede a la unidad flash SPI.
3.2. Olfatear comunicaciones
Esta es una forma de encontrar qué chip es responsable de verificar las comunicaciones en el momento/contenido de interés. Como ya sabemos, el controlador USB-SATA se conecta al LCD Cypress PSoC mediante el conector CN1 y dos cintas. Por tanto, conectamos las sondas a las tres patas correspondientes:
P4, entrada/salida general;
P11, I2C SCL;
P13, I2C SDA.
Luego lanzamos 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:
hay varias ráfagas cortas en el canal P4;
en P11 y P13: intercambio de datos casi continuo.
Acercándonos al primer pico en el canal P4 (rectángulo azul en la figura anterior), vemos lo siguiente:
Aquí puede ver que en P4 hay casi 70 ms de señal monótona, que al principio me pareció que desempeñaba el papel de una señal de reloj. Sin embargo, después de pasar un tiempo comprobando mi suposición, descubrí que no se trata de una señal de reloj, sino de un flujo de audio que se envía al tweeter cuando se presionan las teclas. Por tanto, esta sección de la señal en sí no contiene información útil para nosotros. Sin embargo, se puede utilizar como indicador para saber cuándo el PSoC registra una pulsación de tecla.
Sin embargo, la última transmisión de audio de P4 es un poco diferente: ¡es el audio del "PIN no válido"!
Volviendo al gráfico de pulsaciones de teclas, haciendo zoom en el último gráfico de flujo de audio (vea el rectángulo azul nuevamente), obtenemos:
Aquí vemos señales monótonas en P11. Parece que esta es la señal del reloj. Y P13 son datos. Observe cómo cambia el patrón después de que finaliza el pitido. Sería interesante ver qué pasa aquí.
Los protocolos que funcionan con dos cables suelen ser SPI o I2C, y la especificación técnica de Cypress dice que estos pines corresponden a I2C, lo cual vemos que es cierto en nuestro caso:
El chipset USB-SATA sondea constantemente el PSoC para leer el estado de la clave, que de forma predeterminada es "0". Luego, cuando presionas la tecla "1", cambia a "1". La transmisión final inmediatamente después de presionar “~” es diferente si se ingresa el código PIN incorrecto. Sin embargo, por el momento no he comprobado qué se transmite realmente allí. Pero sospecho que es poco probable que se trate de una clave de cifrado. De todos modos, consulte la siguiente sección para comprender cómo eliminé el firmware interno del PSoC.