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
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
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
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
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
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)
Uma olhada no problema por dentro
Para nosso estudo, escolhemos um de nossos teclados Logitech K330 existentes e um dongle Logitech Unifying.
Logitech K330
Vamos dar uma olhada dentro do teclado. Um elemento interessante da placa para estudar é o chip SoC NRF24 da Nordic Semiconductor.
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.
Dongle Logitech sem caixa
Como existe um mecanismo padrão para atualizar o firmware usando
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
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
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
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:
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.
Circuito de interceptação de sinal de rádio do teclado sem fio 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:
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.
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.
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