
Históricamente, la mayoría de los empleados utilizan teclados y ratones inalámbricos de la marca Logitech. Una vez más, introduciendo nuestras contraseñas, nosotros — los especialistas del equipo de Raccoon Security — nos preguntamos: ¿qué tan difícil es eludir los mecanismos de seguridad de los teclados inalámbricos? La investigación realizada reveló defectos arquitectónicos y errores de software que permiten acceder a los datos introducidos. A continuación, lo que logramos.
¿Por qué Logitech?
En nuestra opinión, los dispositivos de entrada de la empresa Logitech son algunos de los más de alta calidad y cómodos. La mayoría de los dispositivos que tenemos se basan en la solución de Logitech. es un receptor dongle universal que permite conectar hasta 6 dispositivos. Todos los dispositivos compatibles con la tecnología Logitech Unifying están marcados con el logotipo correspondiente. Fácil de usar, permite gestionar la conexión de teclados inalámbricos a la computadora. El proceso de conexión del teclado al receptor dongle de Logitech, así como la tecnología en sí, se describe, por ejemplo, en .

Receptor dongle compatible con Logitech Unifying.
Un teclado puede convertirse en una fuente de información para los atacantes. La empresa Logitech, considerando la posible amenaza, se preocupó por la seguridad y aplicó el algoritmo de cifrado AES128 en el canal de radio del teclado inalámbrico. El primer pensamiento que puede venir a la mente del atacante en esta situación es interceptar información clave durante su transmisión por el canal de radio durante el procedimiento de enlace. Con la clave correspondiente, se pueden interceptar las señales de radio del teclado y descifrarlas. Sin embargo, el usuario raramente (o incluso nunca) tiene que vincular el teclado mediante el procedimiento Unifying, y un hacker con un receptor de radio escaneando tendrá que esperar mucho tiempo. Además, no es tan simple el proceso de interceptación en sí. En la última investigación, en junio de 2019, el experto en seguridad Marcus Mengs publicó en línea sobre el descubrimiento de una vulnerabilidad en firmware antiguos de dongles USB de Logitech. Esta vulnerabilidad permite a los atacantes con acceso físico a los dispositivos obtener las claves de cifrado del canal de radio e inyectar pulsaciones de teclas (CVE-2019-13054).
Hablaremos sobre nuestra investigación de seguridad del dongle Logitech basado en el SoC NRF24 de Nordic Semiconductor. Y comencemos, quizás, con el propio canal de radio.
Cómo se transmiten los datos en el canal de radio
Para el análisis temporal y frecuencial de la señal de radio, utilizamos un receptor SDR basado en el dispositivo Blade-RF en modo analizador de espectro (sobre esto también se puede leer) ).

Dispositivo SDR Blade-RF
También consideramos la posibilidad de grabar las cuadraturas de la señal de radio en la frecuencia intermedia para luego analizarlas utilizando métodos de procesamiento digital de señales.
Comisión Estatal de Radiocomunicaciones de la Federación Rusa para su uso por dispositivos de corto alcance en el rango de frecuencias de 2400–2483,5 MHz. Este es un rango muy "poblado", en el que se encuentra de todo: Wi-Fi, Bluetooth, varios controles remotos, sistemas de seguridad, sensores inalámbricos, ratones con teclados y otros dispositivos digitales inalámbricos.

Espectro de la banda de 2,4 GHz
La situación de interferencia en el rango es bastante complicada. Sin embargo, a pesar de esto, la empresa Logitech logró garantizar una recepción confiable y estable utilizando el protocolo Enhanced ShockBurst en el transceptor NRF24 junto con algoritmos de adaptación de frecuencia.
Los canales en el rango están ubicados en posiciones de enteros MHz, como se define en NRF24 Nordic Semiconductor – un total de 84 canales en la cuadrícula de frecuencias. El número de canales de frecuencia utilizados simultáneamente por Logitech es, por supuesto, menor. Hemos identificado al menos cuatro. Debido a la limitada banda de análisis del espectro utilizada, no fue posible determinar la lista exacta de posiciones de frecuencia utilizadas, pero no era necesario. La información de la teclado al dongle receptor se transmite en modo Burst (encendidos cortos del transmisor) utilizando modulación de frecuencia de dos posiciones GFSK a una tasa de símbolos de 1 Mbaud:

La señal de radio del teclado en representación temporal
El receptor utiliza un principio de recepción correlacional, por lo que en el paquete transmitido hay una preámbulo y una parte de dirección. No se aplica codificación resistente a interferencias, el cuerpo de los datos se cifra utilizando el algoritmo AES128.
En general, la interfaz de radio del teclado inalámbrico Logitech se puede caracterizar como completamente asíncrona con compresión estadística y adaptación de frecuencia. Esto significa que el transmisor del teclado cambia de canal para enviar cada nuevo paquete. El receptor no conoce de antemano ni el tiempo de transmisión ni el canal de frecuencia, sino solo su lista. El receptor y el transmisor se encuentran en el canal gracias a algoritmos consensuados de escaneo y escucha de frecuencias, así como mecanismos de confirmación Enhanced ShockBurst. No hemos investigado si la lista de canales es estática. Probablemente, su cambio se deba al algoritmo de adaptación de frecuencia. Algo parecido al método PPRC (reordenamiento pseudoaleatorio de frecuencia de trabajo) se adivina en el uso del recurso de frecuencia del rango.
Así, en condiciones de incertidumbre de frecuencia y tiempo, para garantizar la recepción de todas las señales del teclado, un atacante necesitaría controlar constantemente toda la cuadrícula de frecuencias del rango de 84 posiciones, lo que requiere una inversión de tiempo significativa. Aquí se entiende por qué la vulnerabilidad de extracción de clave a través de USB (CVE-2019-13054) se posiciona como una posibilidad de inyección de pulsaciones de teclas, y no de acceso del atacante a los datos introducidos desde el teclado. Es obvio que la interfaz de radio del teclado inalámbrico está diseñada de manera bastante compleja y proporciona una comunicación de radio confiable entre los dispositivos Logitech en condiciones de un entorno interferido complicado en el rango de 2.4 GHz.
Una mirada al problema desde adentro
Para la investigación, elegimos uno de nuestros teclados Logitech K330 y el dongle Logitech Unifying.

Logitech K330
Echemos un vistazo dentro del teclado. Un elemento interesante para la investigación en la placa es el chip SoC NRF24 de Nordic Semiconductor.

SoC NRF24 en la placa del teclado inalámbrico Logitech K330
El firmware está alojado en la memoria interna, los mecanismos de lectura y depuración están desactivados. Desafortunadamente, el firmware no se ha publicado en fuentes abiertas. Por lo tanto, decidimos abordar el problema desde otro lado: estudiar el contenido interno del dongle receptor Logitech.
El «mundo interno» del receptor dongle está diseñado de manera bastante interesante. El dongle se puede desmontar fácilmente, contiene el conocido NRF24 en una versión con controlador USB integrado y puede ser reprogramado tanto por USB como directamente mediante un programador.

Dongle Logitech sin carcasa
Dado que hay un mecanismo estándar para actualizar el firmware utilizando (desde la cual se puede extraer la versión actualizada del firmware), no es necesario buscar el firmware dentro del dongle.
Lo que se hizo: se extrajo el firmware RQR_012_005_00028.bin del cuerpo de la aplicación Firmware Update Tool. Para verificar su integridad, el controlador del dongle fue conectado a través del cable plano :

Cable de conexión del dongle Logitech al programador ChipProg 48
Para controlar la integridad del firmware, se colocó exitosamente en la memoria del controlador y funcionó correctamente, el teclado y el ratón estaban conectados al dongle a través de Logitech Unifying. Es posible cargar un firmware modificado utilizando el mecanismo de actualización estándar, ya que no se prevén mecanismos de protección criptográfica en el firmware. Sin embargo, nosotros, con fines de investigación, utilizamos una conexión física al programador, ya que así la depuración es mucho más rápida.
Investigación del firmware y ataque al ingreso del usuario
El chip NRF24 está diseñado sobre la base del núcleo de cálculo Intel 8051 en una arquitectura Harvard tradicional. Para el núcleo, el transceptor actúa como un dispositivo periférico y se encuentra en el espacio de direcciones como un conjunto de registros. La documentación del chip y ejemplos de código fuente se pueden encontrar en Internet, por lo que la desensamblación del firmware no representa una dificultad. Durante la ingeniería inversa, localizamos funciones para obtener datos sobre las pulsaciones de teclas del canal de radio y convertirlas en formato HID para su transmisión al host a través de la interfaz USB. En las direcciones de memoria libres, se colocó código de inyección, que incluía herramientas para capturar el control, guardar y restaurar el contexto original de ejecución, así como código funcional.
El paquete de presión o liberación de tecla recibido del dongle a través del canal de radio se descodifica, se convierte en un informe HID estándar y se envía a la interfaz USB como si fuera un teclado normal. En el marco de la investigación, la parte del informe HID que nos interesa más está compuesta por un byte de banderas modificadoras y una matriz de 6 bytes con códigos de pulsaciones de teclas (para referencia, información sobre HID) ).
Estructura del informe 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;Inmediatamente antes de la transmisión de la estructura HID al host, el código inyectado toma el control, copia en memoria 8 bytes de datos HID nativos y los envía a un canal de radio secundario en texto claro. En el código se ve así:
//~~~~~~~~~ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~<El canal secundario se organiza a la frecuencia que hemos establecido con ciertas características de velocidad de manipulación y estructura de paquete.
Funcionamiento del transceptor en el chip se basa en un gráfico de estados, en el que se integra el protocolo Enhanced ShockBurst. Descubrimos que inmediatamente antes de transmitir datos HID a la interfaz USB del host, el transceptor estaba en estado IDLE. Esto permite su reconfiguración segura para trabajar en el canal secundario. El código inyectado intercepta el control, guarda la configuración original del transceptor en su totalidad y lo traduce a un nuevo modo de transmisión en el canal secundario. El mecanismo de confirmaciones Enhanced ShockBurst en este modo está desactivado, y los datos HID se envían en texto claro a la radiofrecuencia. La estructura del paquete en el canal secundario se presenta en la siguiente figura; las formas de onda de la señal se obtuvieron después de la demodulación y antes de la recuperación de la sincronización de datos. El valor de la dirección se eligió para facilitar la identificación visual del paquete.

Señal demodulada del paquete Burst en el canal secundario
Después de completar la transmisión del paquete en el canal secundario, el código inyectado restaura el estado del transceptor. Ahora está nuevamente listo para funcionar en modo normal en el contexto del firmware original.
En las áreas de frecuencia y tiempo-frecuencia, el canal secundario se ve así, como se muestra en la figura:

Representación espectral y tiempo-frecuencia del canal secundario
Para verificar el funcionamiento del chip NRF24 con el firmware modificado, hemos montado un stand que incluye un dongle Logitech con firmware modificado, un teclado inalámbrico y un receptor construido a partir de un módulo chino con el chip NRF24.

Esquema de captura de la señal de radio del teclado inalámbrico Logitech

Módulo basado en NRF24
En el stand, al funcionar normalmente el teclado después de conectarlo al dongle Logitech, observamos la transmisión de datos abiertos sobre las pulsaciones de teclas en un canal de radio secundario y la transmisión normal de datos cifrados en la interfaz de radio principal. De esta manera, logramos realizar una captura directa de la entrada del teclado del usuario:

Resultado de la captura de la entrada del teclado
El código inyectado introduce pequeñas demoras en el funcionamiento del firmware del dongle. Sin embargo, son demasiado pequeñas para que el usuario pueda notarlas.
Como pueden imaginar, para este vector de ataque se puede utilizar cualquier teclado Logitech compatible con la tecnología Unifying. Dado que el ataque está dirigido al receptor Unifying, que se incluye con la mayoría de los teclados Logitech, no depende de un modelo específico de teclado.
Conclusión
Los resultados obtenidos de la investigación sugieren la posible utilización del escenario descrito por los atacantes: si un hacker reemplaza el dongle receptor del teclado inalámbrico Logitech de la víctima, podrá descubrir las contraseñas de las cuentas de la víctima, con todas las consecuencias que esto conlleva. No hay que olvidar que también es posible inyectar pulsaciones de teclas, lo que significa que ejecutar código arbitrario en la computadora de la víctima no presenta dificultades.
¿Y si de repente un atacante pudiera modificar remotamente el firmware de cualquier dongle Logitech a través de USB? Entonces, a partir de dongles cercanos, se podría construir una red de retransmisores y aumentar la distancia de fuga. Aunque un atacante 'financieramente acomodado' podría usar equipos de recepción de radio modernos con sistemas de alta selectividad, receptores de radio sensibles con bajo tiempo de ajuste de frecuencia y antenas direccionales para 'escuchar' la entrada del teclado y las pulsaciones de teclas incluso desde el edificio vecino.

Equipo profesional para la recepción de radio
Dado que el canal de transmisión inalámbrico del teclado Logitech está bastante bien protegido, el vector de ataque encontrado requiere acceso físico al receptor, lo que limita mucho al atacante. La única opción de protección en este caso podría ser el uso de mecanismos de protección criptográfica para el firmware del receptor, como la verificación de la firma del firmware cargado en el lado del receptor. Pero, lamentablemente, NRF24 no lo admite y, dentro de la arquitectura actual del dispositivo, no se puede implementar la protección. Así que cuida tus dongles, ya que la opción de ataque descrita requiere acceso físico a ellos.

Raccoon Security es un equipo especial de expertos del Centro Técnico 'Vulkan' en el área de seguridad informática práctica, criptografía, diseño de circuitos, ingeniería inversa y desarrollo de software de bajo nivel.
Fuente: habr.com
