Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Reverter e hackear unidades externas com criptografia automática é meu antigo hobby. No passado, tive a oportunidade de praticar com modelos como Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Recentemente, um colega me trouxe outra exposição: Patriot (Aigo) SK8671, que é construído de acordo com um design típico - um indicador LCD e um teclado para inserir um código PIN. Foi isso que saiu…

1. 1. Introdução
2. Arquitetura de hardware
– 2.1. Placa principal
– 2.2. Placa indicadora LCD
– 2.3. Placa do teclado
– 2.4. Olhando para os fios
3. Sequência de etapas de ataque
– 3.1. Fazendo um despejo de dados de uma unidade flash SPI
– 3.2. Farejando comunicações

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes


1. 1. Introdução

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes
habitação

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes
Embalagem

O acesso aos dados armazenados no disco, supostamente criptografados, é feito após a inserção do código PIN. Algumas notas introdutórias sobre este dispositivo:

  • Para alterar o código PIN, você deve pressionar F1 antes de desbloquear;
  • O código PIN deve conter de 6 a 9 dígitos;
  • Após 15 tentativas incorretas, o disco é limpo.

2. Arquitetura de hardware

Primeiro, dissecamos o dispositivo em partes para entender em que componentes ele consiste. A tarefa mais tediosa é abrir a caixa: muitos parafusos microscópicos e plástico. Abrindo o gabinete, vemos o seguinte (preste atenção no conector de cinco pinos que soldei):

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

2.1. Placa principal

A placa principal é bastante simples:

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Suas partes mais notáveis ​​(veja de cima para baixo):

  • conector para indicador LCD (CN1);
  • tweeter (SP1);
  • Pm25LD010 (especificação) Unidade flash SPI (U2);
  • Controlador Jmicron JMS539 (especificação) para USB-SATA (U1);
  • Conector USB 3 (J1).

A unidade flash SPI armazena o firmware do JMS539 e algumas configurações.

2.2. Placa indicadora LCD

Não há nada notável na placa LCD.

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes
Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Apenas:

  • Indicador LCD de origem desconhecida (provavelmente com fonte chinesa); com controle sequencial;
  • Conector de fita para placa de teclado.

2.3. Placa do teclado

Ao examinar o teclado, as coisas ficam mais interessantes.

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Aqui, na parte traseira, vemos um conector de fita, bem como um microcontrolador Cypress CY8C21434 PSoC 1 (doravante simplesmente o chamaremos de PSoC)

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

CY8C21434 usa o conjunto de instruções M8C (consulte documentação). Na [página do produto]((http://www.cypress.com/part/cy8c21434-24ltxi) é indicado que suporta a tecnologia CapSense (solução da Cypress, para teclados capacitivos). Aqui você pode ver o conector de cinco pinos que soldei - esta é uma abordagem padrão para conectar um programador externo através da interface ISSP.

2.4. Olhando para os fios

Vamos descobrir o que está conectado aqui. Para isso basta testar os fios com um multímetro:

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Explicações para este diagrama desenhado no joelho:

  • O PSoC está descrito na especificação técnica;
  • o próximo conector, o da direita, é a interface ISSP, que, por vontade do destino, corresponde ao que está escrito sobre ela na Internet;
  • O conector mais à direita é o terminal do conector de fita para a placa do teclado;
  • O retângulo preto é um desenho do conector CN1, projetado para conectar a placa principal à placa LCD. P11, P13 e P4 estão conectados aos pinos 11, 13 e 4 do PSoC, na placa LCD.

3. Sequência de etapas de ataque

Agora que sabemos em que componentes esta unidade consiste, precisamos: 1) garantir que a funcionalidade básica de criptografia esteja realmente presente; 2) descobrir como as chaves de criptografia são geradas/salvas; 3) descubra onde exatamente o código PIN será verificado.

Para fazer isso, executei os seguintes passos:

  • fez um despejo de dados de uma unidade flash SPI;
  • tentei despejar dados de uma unidade flash PSoC;
  • verificou que a comunicação entre Cypress PSoC e JMS539 realmente contém pressionamentos de tecla;
  • Certifiquei-me de que ao alterar a senha nada fosse sobrescrito no pen drive SPI;
  • estava com preguiça de reverter o firmware 8051 do JMS539.

3.1. Fazendo um despejo de dados de uma unidade flash SPI

Este procedimento é muito simples:

  • conecte as sondas às pernas do pen drive: CLK, MOSI, MISO e (opcional) EN;
  • “farejar” comunicações com um sniffer usando um analisador lógico (usei Saleae Lógica Pro 16);
  • decodificar protocolo SPI e exportar resultados para CSV;
  • aproveite decode_spi.rbpara analisar os resultados e obter um despejo.

Observe que esta abordagem funciona especialmente bem no caso do controlador JMS539, uma vez que este controlador carrega todo o firmware da unidade flash no estágio de inicialização.

$ 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

Depois de fazer um dump da unidade flash SPI, cheguei à conclusão de que sua única tarefa é armazenar o firmware do dispositivo de controle JMicron, que está embutido no microcontrolador 8051. Infelizmente, despejar a unidade flash SPI acabou sendo inútil:

  • quando o código PIN é alterado, o despejo da unidade flash permanece o mesmo;
  • Após a etapa de inicialização, o dispositivo não acessa o pen drive SPI.

3.2. Farejando comunicações

Essa é uma forma de descobrir qual chip é responsável por verificar as comunicações para o horário/conteúdo de interesse. Como já sabemos, o controlador USB-SATA está conectado ao Cypress PSoC LCD através do conector CN1 e duas fitas. Portanto, conectamos as sondas às três pernas correspondentes:

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

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Em seguida, iniciamos o analisador lógico Saleae e digitamos no teclado: “123456~”. Como resultado, vemos o diagrama a seguir.

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Nele podemos ver três canais de troca de dados:

  • há vários bursts curtos no canal P4;
  • em P11 e P13 - troca de dados quase contínua.

Ampliando o primeiro pico do canal P4 (retângulo azul na figura anterior), vemos o seguinte:

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Aqui você pode ver que no P4 há quase 70ms de um sinal monótono, que a princípio me pareceu desempenhar o papel de um sinal de clock. No entanto, depois de passar algum tempo verificando meu palpite, descobri que este não é um sinal de relógio, mas um fluxo de áudio que sai para o tweeter quando as teclas são pressionadas. Portanto, esta seção do sinal em si não contém informações úteis para nós. Porém, pode ser usado como um indicador para saber quando o PSoC registra um pressionamento de tecla.

No entanto, o fluxo de áudio P4 mais recente é um pouco diferente: é o áudio do “PIN inválido”!

Voltando ao gráfico de teclas digitadas, ampliando o último gráfico de fluxo de áudio (veja o retângulo azul novamente), obtemos:

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

Aqui vemos sinais monótonos em P11. Então parece que este é o sinal do relógio. E P13 são dados. Observe como o padrão muda após o término do bipe. Seria interessante ver o que acontece aqui.

Os protocolos que funcionam com dois fios geralmente são SPI ou I2C, e a especificação técnica do Cypress afirma que esses pinos correspondem ao I2C, o que vemos ser verdade no nosso caso:

Revertendo e hackeando a unidade HDD externa com criptografia automática Aigo. Parte 1: Dissecando em partes

O chipset USB-SATA pesquisa constantemente o PSoC para ler o estado da chave, que por padrão é “0”. Então, ao pressionar a tecla “1”, ela muda para “1”. A transmissão final imediatamente após pressionar “~” será diferente se o código PIN errado for inserido. No entanto, no momento não verifiquei o que realmente está sendo transmitido para lá. Mas suspeito que é improvável que seja uma chave de criptografia. De qualquer forma, veja a próxima seção para entender como removi o firmware interno do PSoC.

Fonte: habr.com

Adicionar um comentário