Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Historicamente, a maioria dos funcionários usa teclados e mouses sem fio da Logitech. Digitando nossas senhas mais uma vez, nós, especialistas da equipe Raccoon Security, nos perguntamos: quão difícil é contornar os mecanismos de segurança dos teclados sem fio? O estudo revelou falhas arquitetônicas e erros de software que permitem o acesso aos dados de entrada. Abaixo do corte está o que obtivemos.

Por que Logitech?

Em nossa opinião, os dispositivos de entrada da Logitech estão entre os da mais alta qualidade e mais convenientes. A maioria dos dispositivos que temos são baseados na solução Logitech Unificando é um receptor dongle universal que permite conectar até 6 dispositivos. Todos os dispositivos compatíveis com a tecnologia Logitech Unifying estão marcados com o logotipo da tecnologia Logitech Unifying. Fácil de usar aplicação Permite gerenciar a conexão de teclados sem fio ao seu computador. O processo de conexão do teclado ao dongle receptor Logitech, bem como a tecnologia em si, é abordado, por exemplo, aqui.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Receptor Dongle com suporte Logitech Unifying

O teclado pode se tornar uma fonte de informações para invasores. A Logitech, levando em consideração a possível ameaça, cuidou da segurança - utilizou o algoritmo de criptografia AES128 no canal de rádio do teclado wireless. O primeiro pensamento que um invasor pode ter nessa situação é interceptar informações importantes quando elas são transmitidas por um canal de rádio durante o procedimento de ligação. Afinal, se você tiver uma chave, poderá interceptar os sinais de rádio do teclado e descriptografá-los. Porém, o usuário raramente (ou mesmo nunca) precisa unificar o teclado, e um hacker com um rádio de varredura terá que esperar muito tempo. Além disso, nem tudo é tão simples com o próprio processo de interceptação. No último estudo de junho de 2019, o especialista em segurança Markus Mengs publicou online сообщение sobre a descoberta de uma vulnerabilidade em firmware antigo de dongles USB da Logitech. Ele permite que invasores com acesso físico a dispositivos obtenham chaves de criptografia de canais de rádio e injetem pressionamentos de teclas (CVE-2019-13054).

Falaremos sobre nosso estudo de segurança do dongle Logitech baseado no SoC NRF24 da Nordic Semiconductor. Comecemos, talvez, pelo próprio canal de rádio.

Como os dados “voam” em um canal de rádio

Para análise tempo-frequência do sinal de rádio, usamos um receptor SDR baseado no dispositivo Blade-RF no modo analisador de espectro (você também pode ler sobre isso aqui).

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Dispositivo SDR Blade-RF

Também consideramos a possibilidade de registrar quadraturas do sinal de rádio em uma frequência intermediária, que poderiam então ser analisadas utilizando técnicas de processamento digital de sinais.

Comissão Estadual de Radiofrequências na Federação Russa permitido para uso por dispositivos de curto alcance, a faixa de frequência é 2400–2483,5 MHz. Esta é uma gama muito “povoada”, na qual não encontrará nada: Wi-Fi, Bluetooth, todo o tipo de telecomandos, sistemas de segurança, detectores sem fios, ratos com teclados e outros dispositivos digitais sem fios.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Espectro da banda de 2,4 GHz

O ambiente de interferência na faixa é bastante complexo. Apesar disso, a Logitech conseguiu fornecer recepção confiável e estável através do uso do protocolo Enhanced ShockBurst no transceptor NRF24 em combinação com algoritmos de adaptação de frequência.

Os canais em uma banda são colocados em posições inteiras de MHz, conforme definido em especificações NRF24 Nordic Semiconductor - um total de 84 canais na grade de frequência. O número de canais de frequência usados ​​simultaneamente pela Logitech é, obviamente, menor. Identificamos o uso de pelo menos quatro. Devido à largura de banda limitada do analisador de espectro de sinal utilizado, a lista exata de posições de frequência utilizadas não pôde ser determinada, mas isso não foi necessário. As informações do teclado para o dongle do receptor são transmitidas no modo Burst (voltas curtas no transmissor) usando modulação de frequência de duas posições GFSK a uma taxa de símbolo de 1 Mbaud:

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Sinal de rádio do teclado na representação temporal

O receptor usa o princípio de correlação de recepção, de modo que o pacote transmitido contém um preâmbulo e uma parte de endereço. Não é usada codificação resistente a ruído; o corpo dos dados é criptografado com o algoritmo AES128.

Em geral, a interface de rádio do teclado sem fio Logitech pode ser caracterizada como completamente assíncrona com multiplexação estatística e adaptação de frequência. Isso significa que o transmissor do teclado muda de canal para transmitir cada novo pacote. O receptor não sabe antecipadamente nem o tempo de transmissão nem o canal de frequência, mas apenas a sua lista é conhecida. O receptor e o transmissor se encontram no canal graças ao desvio de frequência coordenado e aos algoritmos de escuta, bem como aos mecanismos aprimorados de reconhecimento de ShockBurst. Não investigamos se a lista de canais é estática. Provavelmente, sua mudança se deve ao algoritmo de adaptação de frequência. Algo próximo ao método de salto de frequência (sintonização pseudo-aleatória da frequência de operação) pode ser visto na utilização do recurso de frequência da faixa.

Assim, em condições de incerteza tempo-frequência, para garantir a recepção garantida de todos os sinais do teclado, um invasor precisará monitorar constantemente toda a grade de frequência de 84 posições, o que requer um tempo significativo. Aqui fica claro por que a vulnerabilidade de extração de chave USB (CVE-2019-13054) em fontes posicionado como a capacidade de injetar pressionamentos de tecla, em vez de obter acesso de um invasor aos dados inseridos no teclado. Obviamente, a interface de rádio do teclado sem fio é bastante complexa e fornece comunicação de rádio confiável entre dispositivos Logitech em condições difíceis de interferência na banda de 2,4 GHz.

Uma olhada no problema por dentro

Para nosso estudo, escolhemos um de nossos teclados Logitech K330 existentes e um dongle Logitech Unifying.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Logitech K330

Vamos dar uma olhada dentro do teclado. Um elemento interessante da placa para estudar é o chip SoC NRF24 da Nordic Semiconductor.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

SoC NRF24 na placa de teclado sem fio Logitech K330

O firmware está localizado na memória interna, os mecanismos de leitura e depuração estão desabilitados. Infelizmente, o firmware não foi publicado em fontes abertas. Portanto, decidimos abordar o problema do outro lado - estudar o conteúdo interno do receptor dongle Logitech.

O “mundo interior” do receptor dongle é bastante interessante. O dongle é facilmente desmontado, traz consigo a conhecida versão NRF24 com um controlador USB integrado e pode ser reprogramado tanto pelo lado USB quanto diretamente pelo programador.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Dongle Logitech sem caixa

Como existe um mecanismo padrão para atualizar o firmware usando Aplicativos da ferramenta de atualização de firmware (do qual você pode extrair a versão atualizada do firmware), não há necessidade de procurar o firmware dentro do dongle.

O que foi feito: o firmware RQR_012_005_00028.bin foi extraído do corpo do aplicativo Firmware Update Tool. Para verificar sua integridade, o controlador dongle foi conectado com um cabo para o programador ChipProg-48:

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Cabo para conectar o dongle Logitech ao programador ChipProg 48

Para controlar a integridade do firmware, ele foi colocado com sucesso na memória do controlador e funcionou corretamente, o teclado e o mouse foram conectados ao dongle via Logitech Unifying. É possível fazer upload de firmware modificado utilizando o mecanismo de atualização padrão, uma vez que não existem mecanismos de proteção criptográfica para o firmware. Para fins de pesquisa, utilizamos uma conexão física com o programador, pois desta forma a depuração é muito mais rápida.

Pesquisa de firmware e ataque à entrada do usuário

O chip NRF24 foi projetado com base no núcleo de computação Intel 8051 na arquitetura tradicional de Harvard. Para o núcleo, o transceptor atua como um dispositivo periférico e é colocado no espaço de endereço como um conjunto de registradores. A documentação do chip e exemplos de código-fonte podem ser encontrados na Internet, portanto, desmontar o firmware não é difícil. Durante a engenharia reversa, localizamos as funções para receber dados de pressionamento de tecla do canal de rádio e convertê-los em formato HID para transmissão ao host através da interface USB. O código de injeção foi colocado em endereços de memória livre, que incluíam ferramentas para interceptação de controle, salvamento e restauração do contexto de execução original, além de código funcional.

O pacote de pressionar ou liberar uma chave recebido pelo dongle do canal de rádio é descriptografado, convertido em um relatório HID padrão e enviado para a interface USB como se fosse um teclado normal. Como parte do estudo, a parte do relatório HID que nos interessa mais é a parte do relatório HID que contém um byte de sinalizadores modificadores e uma matriz de 6 bytes com códigos de pressionamento de tecla (para referência, informações sobre HID aqui).

Estrutura do relatório HID:

// Keyboard HID report structure.
// See https://flylib.com/books/en/4.168.1.83/1/ (last access 2018 december)
// "Reports and Report Descriptors", "Programming the Microsoft Windows Driver Model"
typedef struct{
    uint8_t Modifiers;
    uint8_t Reserved;
    uint8_t KeyCode[6];
}HidKbdReport_t;

Imediatamente antes de transmitir a estrutura HID ao host, o código injetado assume o controle, copia 8 bytes de dados HID nativos na memória e os envia para o canal lateral do rádio em texto não criptografado. No código fica assim:

//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~>
// Profiling have shown time execution ~1.88 mSec this block of code
SaveRfState();                  // save transceiver state
RfInitForTransmition(TransmitRfAddress);        // configure for special trnsmition
hal_nrf_write_tx_payload_noack(pDataToSend,sizeof(HidKbdReport_t)); // Write payload to radio TX FIFO
CE_PULSE();                 // Toggle radio CE signal to start transmission
RestoreRfState();               // restore original transceiver state
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~<

O canal lateral é organizado em uma frequência que definimos com certas características de velocidade de manipulação e estrutura de pacotes.

Operação do transceptor no chip NRF24 é baseado em um gráfico de estado no qual o protocolo Enhanced ShockBurst está organicamente integrado. Descobrimos que imediatamente antes de transmitir dados HID para a interface USB do host, o transceptor estava no estado IDLE. Isto permite reconfigurá-lo com segurança para operar em canal lateral. O código injetado intercepta o controle, preserva totalmente a configuração original do transceptor e o alterna para um novo modo de transmissão no canal lateral. O mecanismo de confirmação Enhanced ShockBurst está desabilitado neste modo; os dados HID são transmitidos de forma clara pelo ar. A estrutura do pacote no canal lateral é mostrada na figura abaixo, os diagramas de sinais foram obtidos após a demodulação e antes da restauração da sincronização do clock de dados. O valor do endereço foi escolhido pela facilidade de identificação visual da embalagem.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Sinal de Burst Burst Demodulado no Canal Lateral

Depois que o pacote é transmitido para o canal lateral, o código injetado restaura o estado do transceptor. Agora está novamente pronto para funcionar normalmente no contexto do firmware original.

Nos domínios de frequência e tempo-frequência, o canal lateral se parece com isto:

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Representação espectral e de frequência temporal do canal lateral

Para testar o funcionamento do chip NRF24 com firmware modificado, montamos um estande que incluía um dongle Logitech com firmware modificado, um teclado sem fio e um receptor montado na base de um módulo chinês com chip NRF24.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Circuito de interceptação de sinal de rádio do teclado sem fio Logitech

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Módulo baseado em NRF24

Na bancada, com o teclado funcionando normalmente, após conectá-lo ao dongle Logitech, observamos a transmissão de dados claros sobre as teclas digitadas no canal de rádio lateral e a transmissão normal de dados criptografados na interface de rádio principal. Assim, conseguimos fornecer interceptação direta da entrada do teclado do usuário:

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

O resultado da interceptação da entrada do teclado

O código injetado introduz pequenos atrasos na operação do firmware do dongle. No entanto, eles são pequenos demais para serem notados pelo usuário.

Como você pode imaginar, qualquer teclado Logitech compatível com a tecnologia Unifying pode ser usado para esse vetor de ataque. Como o ataque tem como alvo o receptor Unifying incluído na maioria dos teclados Logitech, ele é independente do modelo de teclado específico.

Conclusão

Os resultados do estudo sugerem a possível utilização do cenário considerado pelos invasores: se um hacker substituir a vítima por um receptor dongle para um teclado sem fio Logitech, ele poderá descobrir as senhas das contas da vítima com todas as seguintes consequências. Não se esqueça que também é possível injetar teclas digitadas, o que significa que não é difícil executar código arbitrário no computador da vítima.

E se de repente um invasor puder modificar remotamente o firmware de qualquer dongle Logitech via USB? Então, a partir de dongles bem espaçados, você pode criar uma rede de repetidores e aumentar a distância de vazamento. Embora um invasor “financeiramente rico” seja capaz de “ouvir” as entradas do teclado e pressionar teclas até mesmo de um prédio vizinho, equipamentos modernos de recepção de rádio com sistemas altamente seletivos, receptores de rádio sensíveis com tempos de sintonia de frequência curtos e antenas altamente direcionais permitirão para “ouvir” a entrada do teclado e pressionar teclas mesmo em um prédio vizinho.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Equipamento de rádio profissional

Como o canal de transmissão de dados sem fio do teclado Logitech está bastante bem protegido, o vetor de ataque encontrado requer acesso físico ao receptor, o que limita bastante o invasor. A única opção de proteção neste caso seria utilizar mecanismos de proteção criptográfica para o firmware do receptor, por exemplo, verificando a assinatura do firmware carregado no lado do receptor. Mas, infelizmente, a NRF24 não suporta isto e é impossível implementar proteção dentro da atual arquitetura do dispositivo. Portanto, tome cuidado com seus dongles, pois a opção de ataque descrita requer acesso físico a eles.

Cuide de seus dongles: estudo de segurança do receptor de teclado Logitech

Raccoon Security é uma equipe especial de especialistas do Centro de Pesquisa e Desenvolvimento Vulcan na área de segurança prática da informação, criptografia, design de circuitos, engenharia reversa e criação de software de baixo nível.

Fonte: habr.com

Adicionar um comentário