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. Ao digitar nossas senhas mais uma vez, nós, a equipe da Raccoon Security, nos perguntamos: Qual é a dificuldade de ignorar os mecanismos de segurança dos teclados sem fio? O estudo revelou falhas de arquitetura e erros de software que permitem o acesso aos dados de entrada. Sob o corte - o que fizemos.


Por que a 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 Unifying - este é um receptor dongle universal que permite conectar até 6 dispositivos. Todos os dispositivos compatíveis com Logitech Unifying são rotulados com o logotipo correspondente. Um aplicativo fácil de usar permite controlar a conexão de teclados sem fio ao seu computador. O processo de conexão detalhada do teclado ao receptor dongle da Logitech, bem como à própria tecnologia, é abordado, por exemplo, aqui .



Logitech Unifying Dongle Receiver


O teclado pode ser uma fonte de informação para atacantes. A Logitech, levando em consideração uma possível ameaça, cuidou da segurança - usou o algoritmo de criptografia AES128 no canal de rádio do teclado sem fio. O primeiro pensamento que um invasor pode visitar nessa situação é interceptar informações importantes quando transmitidas pelo ar durante o processo de vinculação. Afinal, se você tiver uma tecla, poderá interceptar os sinais de rádio do teclado e descriptografá-los. No entanto, o usuário raramente (ou nunca) deve associar o teclado a um procedimento de Unificação, 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. Em um estudo recente em junho de 2019, o especialista em segurança Marcus Mengs postou uma mensagem na rede sobre a descoberta de vulnerabilidades em firmware mais antigo para os dongles USB da Logitech. Ele permite que invasores com acesso físico aos dispositivos obtenham chaves de criptografia de canal de rádio e insiram pressionamentos de tecla (CVE-2019-13054).


Falaremos sobre o nosso estudo de segurança de dongles Logitech SoC NRF24 da Nordic Semiconductor. E vamos começar com o próprio canal de rádio.


Como "voar" dados no canal de rádio


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



Dispositivo SD-Blade RF


Também consideramos a possibilidade de gravar quadraturas do sinal de rádio em uma frequência intermediária e, em seguida, analisá-las usando métodos de processamento de sinal digital.


A Comissão Estadual de Radiofrequências na Federação Russa permitiu o uso de dispositivos de curto alcance na faixa de frequências de 2400 a 2483,5 MHz. Esse é um intervalo muito "preenchido", no qual você não pode encontrar nada: Wi-Fi, Bluetooth, vários controles remotos, sistemas de segurança, detectores sem fio, mouse com teclados e outros dispositivos digitais sem fio.



Espectro de banda de 2,4 GHz


O ambiente de interferência no intervalo é bastante complicado. Apesar disso, a Logitech conseguiu fornecer uma recepção confiável e estável usando o protocolo Enhanced ShockBurst no transceptor NRF24 em combinação com algoritmos de adaptação de frequência.


Os canais na faixa estão localizados em posições de MHz inteiros, conforme definido na especificação 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, é claro, é menor. Identificamos o uso de pelo menos quatro. Devido ao campo de visão limitado do analisador de espectro de sinal usado, não foi possível determinar a lista exata de posições de frequência usadas, mas isso não foi necessário. As informações do teclado para o receptor dongle são transmitidas no modo Burst (com uma ligeira ativação do transmissor) usando a modulação de frequência de duas posições GFSK a uma taxa de símbolos de 1 Mbaud:



Sinal de rádio do teclado em representação temporária


O receptor usa o princípio de correlação da recepção, de modo que o preâmbulo e a parte do endereço estão presentes no pacote transmitido. Nenhuma codificação de interferência é aplicada; o corpo dos dados é criptografado com o algoritmo AES128.


Em geral, a interface de rádio do teclado sem fio da 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 alterna o canal para transmitir cada novo pacote. Nem o tempo de transmissão nem o canal de frequência são conhecidos antecipadamente pelo receptor, e somente sua lista é conhecida. O receptor e o transmissor se encontram no canal graças aos algoritmos acordados para ignorar e ouvir frequências, bem como aos mecanismos de confirmação aprimorados do 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) é adivinhado no uso do recurso de frequência da faixa.


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


Uma análise do problema por dentro


Para pesquisa, escolhemos um de nossos teclados Logitech K330 e o dongle Logitech Unifying.



Logitech K330


Vamos olhar dentro do teclado. Um elemento interessante a ser estudado é o chip SoR NRF24 da Nordic Semiconductor.



SoC NRF24 no teclado sem fio Logitech K330


O firmware está localizado na memória interna, os mecanismos de leitura e depuração estão desativados. 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 da Logitech.


O "mundo interior" do receptor dongle é bastante interessante. O dongle é facilmente desmontado, carrega o familiar NRF24 na versão com um controlador USB embutido e pode ser reprogramado pelo lado do USB e diretamente pelo programador.



Dongle Logitech sem caixa


Como existe um mecanismo regular de atualização de firmware usando o aplicativo Firmware Update Tool (do qual você pode extrair a versão atualizada do firmware), não há necessidade de procurar 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 por um loop ao programador ChipProg-48 :



Cabo dongle da Logitech para o 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 através do Logitech Unifying. É possível preencher o firmware modificado usando o mecanismo de atualização padrão, pois não há mecanismos de proteção criptográfica para o firmware. Para fins de pesquisa, usamos uma conexão física com o programador, pois a depuração é muito mais rápida dessa maneira.


Pesquisando firmware e atacando a 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 está localizado no espaço de endereço como um conjunto de registros. A documentação do chip e os exemplos de código-fonte podem ser encontrados na Internet, portanto não é difícil desmontar o firmware. Durante a engenharia reversa, localizamos as funções de receber dados pressionados por tecla do canal de rádio e convertê-los no formato HID para transmissão ao host via interface USB. Nos endereços de memória livre, foi colocado um código de injeção, que incluía ferramentas para interceptar o controle, salvar e restaurar o contexto de execução original, além de um código funcional.


Um pacote para pressionar ou liberar uma tecla recebida de um canal de rádio é descriptografado, convertido em um relatório HID padrão e enviado à interface USB a partir de um teclado comum. Como parte do estudo, a parte mais interessante para nós é a parte do relatório HID que contém o byte dos sinalizadores do modificador e uma matriz de 6 bytes com códigos de pressionamento de tecla (para referência, informações sobre o HID estão 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; 

Pouco antes da estrutura HID ser transferida para o host, o código injetado assume o controle, copia 8 bytes de dados HID nativos na memória e os envia para o canal de rádio lateral de forma clara. 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 definida por nós com certas características da velocidade de manipulação e estrutura de pacotes.


A operação do transceptor no chip NRF24 é baseada em um gráfico de estado, no qual o protocolo Enhanced ShockBurst é inserido organicamente. Descobrimos que imediatamente antes de os dados HID serem transferidos para a interface USB do host, o transceptor estava no estado IDLE. Isso torna possível reconfigurar com segurança para trabalhar no canal lateral. O código injetado intercepta o controle, salva a configuração original do transceptor na íntegra e a transfere para o novo modo de transmissão no canal lateral. O mecanismo de reconhecimento do ShockBurst aprimorado é desativado nesse modo, os dados HID limpos são transmitidos ao ar. A estrutura do pacote no canal lateral é mostrada na figura abaixo; os diagramas de forma de onda foram obtidos após a desmodulação e antes da restauração da sincronização dos dados do relógio. O valor do endereço é selecionado para a conveniência da identificação visual do pacote.



Burst Burst Demodulated Signal


Após a transmissão do pacote para o canal lateral, o código injetado restaura o estado do transceptor. Agora ele está novamente pronto para trabalhar no modo normal no contexto do firmware original.


Nas regiões de frequência e tempo-frequência, o canal lateral parece como mostrado na figura:



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


Para testar a operação do chip NRF24 com firmware modificado, montamos um suporte que incluía um dongle Logitech com firmware modificado, um teclado sem fio e um receptor montado com base no módulo chinês com o chip NRF24.



Diagrama de interceptação de rádio do teclado sem fio da Logitech



Módulo baseado em NRF24


No suporte, durante a operação normal do teclado após conectá-lo ao dongle da Logitech, observamos a transmissão de dados abertos com as teclas pressionadas no canal de rádio secundário e a transmissão normal de dados criptografados na interface principal de rádio. Assim, fomos capazes de fornecer uma interceptação direta da entrada do teclado do usuário:



Resultado da interceptação de teclado


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


Como você pode imaginar, qualquer teclado Logitech compatível com a tecnologia Unifying pode ser usado para esse vetor de ataque. Como o ataque é direcionado ao receptor Unifying, incluído na maioria dos teclados da Logitech, ele não depende do modelo de teclado específico.


Conclusão


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


E se um invasor puder modificar remotamente o firmware de qualquer dongle da Logitech via USB? Em dongles próximos, você pode adicionar uma rede de repetidores e aumentar a distância de fluência. Embora o atacante "financeiramente seguro" tenha recepção de rádio moderna com sistemas altamente seletivos, rádios sensíveis com um tempo de sintonia de frequência curto e antenas de orientação estreita, eles permitirão "ouvir" as entradas do teclado e pressionar as teclas mesmo de um prédio vizinho.



Equipamento de rádio profissional


Como o canal de dados sem fio do teclado Logitech é razoavelmente 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 nesse caso poderia ser o uso de mecanismos de proteção criptográfica para o firmware do receptor, por exemplo, verificação da assinatura do firmware baixado no lado do receptor. Infelizmente, o NRF24 não suporta isso e é impossível implementar proteção na arquitetura atual do dispositivo. Portanto, cuide dos seus dongles, porque a versão descrita do ataque requer acesso físico a eles.



A Raccoon Security é uma equipe especial de especialistas do Centro Técnico e Científico do Vulcão na área de segurança da informação prática, criptografia, circuitos, engenharia reversa e desenvolvimento de software de baixo nível.

Source: https://habr.com/ru/post/pt479374/


All Articles