Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

A reversão e a violação de unidades de armazenamento criptografadas externas é um hobby antigo para mim. No passado, já trabalhei com modelos como Zalman VE-400, Zalman ZM-SHE500, Zalman ZM-VE500. Recentemente, um colega me trouxe mais uma peça: Patriot (Aigo) SK8671, que é construído com um design típico - um indicador LCD e um teclado para inserir o PIN. Veja o que consegui descobrir...

1. Introdução
2. Arquitetura de hardware
– 2.1. Placa-mãe
– 2.2. Placa do indicador LCD
– 2.3. Placa do teclado
– 2.4. Olhando os fios
3. Sequência dos passos do ataque
– 3.1. Capturando o dump da memória SPI
– 3.2. Analisando as comunicações

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes


1. Introdução

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes
Gabinete

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes
Embalagem

O acesso aos dados armazenados no disco, que supostamente estão criptografados, é realizado após a inserção do PIN. Algumas observações introdutórias sobre este dispositivo:

  • Para alterar o PIN, é necessário pressionar F1 antes da desbloqueio;
  • O PIN deve conter entre 6 e 9 dígitos;
  • Após 15 tentativas incorretas, o disco é apagado.

2. Arquitetura de hardware

Primeiro, desmontamos o dispositivo em partes para entender de quais componentes é feito. A tarefa mais tediosa é abrir o gabinete: muitos microparafusos e plástico. Depois de abrir o gabinete, vemos o seguinte (note o conector de cinco pinos que eu soldei):

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

2.1. Placa-mãe

A placa-mãe é bastante simples:

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

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

  • conector para indicador LCD (CN1);
  • buzzer (SP1);
  • Pm25LD010 (especificação) memória flash SPI (U2);
  • controlador Jmicron JMS539 (especificação) para USB-SATA (U1);
  • conector USB 3 (J1).

A memória flash SPI armazena o firmware para o JMS539 e algumas configurações.

2.2. Placa do indicador LCD

Na placa LCD não há nada notável.

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes
Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Apenas:

  • Indicador LCD de origem desconhecida (provavelmente com um conjunto de fontes chinês); com controle serial;
  • conector ribbon para a placa do teclado.

2.3. Placa do teclado

Ao examinar a placa do teclado, a situação se torna mais interessante.

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Aqui, na parte traseira, vemos um conector ribbon, bem como o Cypress CY8C21434 – um microcontrolador PSoC 1 (daqui em diante, vamos chamá-lo simplesmente de PSoC)

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

O CY8C21434 usa um conjunto de instruções M8C (veja. documentação). Na [página do produto]( (http://www.cypress.com/part/cy8c21434-24ltxi) está indicado que ele suporta a tecnologia CapSense (solução da Cypress para teclados capacitivos). Aqui está o conector de cinco pinos que eu soldei – esta é a abordagem padrão para conectar um programador externo via interface ISSP.

2.4. Observamos os fios

Vamos entender como tudo isso está conectado. Para isso, basta testar os fios com um multímetro:

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Explicações sobre este esquema desenhado de maneira improvisada:

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

3. Sequência dos passos do ataque

Agora que sabemos de quais componentes esse dispositivo é composto, precisamos: 1) garantir que a funcionalidade básica de criptografia realmente esteja presente; 2) descobrir como as chaves de criptografia são geradas/salvas; 3) encontrar onde exatamente o código PIN é verificado.

Para isso, realizei os seguintes passos:

  • fiz um dump dos dados da flash SPI;
  • tentei capturar um dump dos dados da flash PSoC;
  • confirmei que a troca de dados entre o Cypress PSoC e JMS539 realmente contém as teclas pressionadas;
  • verifiquei que ao alterar a senha, nada é reescrito na flash SPI;
  • estive muito preguiçoso para reverter o firmware 8051 do JMS539.

3.1. Capturando o dump dos dados da flash SPI

Este procedimento é muito simples:

  • conectar as sondas aos pinos da flash: CLK, MOSI, MISO e (opcionalmente) EN;
  • “snifar” as comunicações com um analisador lógico (usei o Saleae Logic Pro 16);
  • decodificar o protocolo SPI e exportar os resultados em CSV;
  • usar decode_spi.rb, para analisar os resultados e obter o dump.

Note que essa abordagem funciona especialmente bem com o controlador JMS539, uma vez que esse controlador carrega todo o firmware da flash durante a 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

Após capturar o dump do chip SPI, cheguei à conclusão de que sua única função é armazenar o firmware para o dispositivo de controle JMicron, que é integrado ao microcontrolador 8051. Infelizmente, a captura do dump do chip SPI se revelou inútil:

  • ao alterar o código PIN, o dump do chip permanece o mesmo;
  • após a fase de inicialização, o dispositivo não acessa o chip SPI.

3.2. Analisando as comunicações

Este é um dos métodos para descobrir qual chip é responsável pela verificação das comunicações, para os tempos/conteúdos de interesse. Como já sabemos, o controlador USB-SATA está conectado ao Cypress PSoC através do conector CN1 e de duas fitas. Portanto, conectamos as sondas aos três pinos correspondentes:

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

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Em seguida, ligamos o analisador lógico Saleae e digitamos no teclado: "123456~". Como resultado, vemos o seguinte gráfico.

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

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

  • no canal P4, alguns pequenos picos;
  • nos canais P11 e P13 – troca de dados quase contínua.

Aumentando o primeiro pico no canal P4 (o retângulo azul do desenho anterior), vemos o seguinte:

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Aqui podemos ver que no P4 há quase 70ms de sinal uniforme, que inicialmente pensei que fosse um sinal de sincronização. No entanto, após passar algum tempo verificando minha suposição, descobri que não se tratava de um sinal de sincronização, mas de um fluxo de áudio que é emitido pelo pequeno alto-falante ao pressionar as teclas. Portanto, esse trecho do sinal por si só não contém informações úteis para nós. Mas pode ser usado como um indicador – para saber o momento em que o PSoC registra a pressão de uma tecla.

No entanto, o último fluxo de áudio do canal P4 é um pouco diferente dos outros: é o som para "código PIN incorreto"!

Voltando ao gráfico da pressão das teclas, ao ampliar o gráfico do último fluxo de áudio (veja novamente o retângulo azul), obtemos:

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

Aqui vemos sinais uniformes no P11. Então, parece que isso é o sinal de sincronização. E P13 – os dados. Observe como o padrão muda após o término do sinal sonoro. Seria interessante ver o que acontece aqui.

Os protocolos que trabalham com dois fios são geralmente SPI ou I2C, e na especificação técnica do Cypress é mencionado que esses pinos correspondem ao I2C, o que como vemos é válido também para o nosso caso:

Reversão e invasão de um HDD externo autorreplicante Aigo. Parte 1: Desmontando em partes

O chipset USB-SATA está constantemente verificando o PSoC para ler o estado do botão, que por padrão é "0". Em seguida, ao pressionar o botão "1", ele muda para "1". A transmissão final, logo após pressionar "~", é diferente se um código PIN incorreto for inserido. No entanto, até agora, não verifiquei o que realmente está sendo transmitido. Mas suspeito que, provavelmente, não seja a chave de criptografia. De qualquer forma, veja a próxima seção para entender como extraí o dump do firmware interno do PSoC.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster