ProHoster > Blog > Administración > 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
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...
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):
2.1. Placa principal
O taboleiro principal é bastante sinxelo:
As súas partes máis salientables (ver de arriba a abaixo):
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.
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.
Aquí, na parte traseira, vemos un conector de cinta, así como un microcontrolador Cypress CY8C21434 PSoC 1 (en diante simplemente chamarémolo PSoC)
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:
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.
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.
Despois iniciamos o analizador lóxico Saleae e introducimos no teclado: "123456~". Como resultado, vemos o seguinte diagrama.
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:
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:
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:
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.