Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
presentation-clickers — Vulnerabilidades de inyección de teclado en presentadores inalámbricos | Kitploit
Herramientas/GitHubGitHub/marcnewlin/presentation-clickers
Seguridad de Sistemas EmbebidosExplotaciónIngeniería InversaSeguridad InalámbricaHacking de HardwarePruebas de PenetraciónSeguridad de Hardware e IoT
GitHubmarcnewlin/presentation-clickers

presentation-clickers

Vulnerabilidades de inyección de teclado en presentadores inalámbricos

Ver Repositorio
961431hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Presentation Clickers

Tenía ganas de hacer un poco de ingeniería inversa de RF, así que pedí algunos clickers de presentación y me divertí un poco.

Esto es un fork de nrf-research-firmware (que escribí hace unos años en Bastille). He añadido soporte para algunos transceptores/protocolos nuevos, e incluido POCs de inyección de pulsaciones de teclado para 13 clickers de presentación comunes.

Historial

  • 2019-04-20 - primera remesa publicada (8 dispositivos)
  • 2019-04-21 - segunda remesa publicada (5 dispositivos)

Dispositivos Vulnerables a la Inyección de Pulsaciones de Teclado

FabricanteModeloProtocoloRFICAñadido
AmazonBasicsP-001AmazonBasics P-001nRF242019-04-20
CanonPR100-RCanon PR100-RPL11672019-04-20
FunpickWireless PresenterHS304HS3042019-04-20
AMERTEERWireless PresenterHS304HS3042019-04-20
BEBONCOOLD100HS304HS3042019-04-20
ESYWENWireless PresenterHS304HS3042019-04-20
Red Star TechPR-819HS304HS3042019-04-20
DinoFireD06-DF-USHS304HS3042019-04-20
TBBSCDSIT-60TBBSC DSIT-60BK24512019-04-21
RiiWireless PresenterRii Wireless PresenterBK24512019-04-21
LogitechR400Logitech UnencryptednRF242019-04-21
LogitechR800Logitech UnencryptednRF242019-04-21
LogitechR500Logitech EncryptednRF242019-04-21

Protocolos

Logitech Encrypted

Resumen

Este es el protocolo estándar de teclado Logitech cifrado, tal como lo usa el R500. Es, en cierto modo, vulnerable al ataque de “inyección de pulsaciones cifradas” que documenté con los teclados Logitech Unifying como parte del proyecto MouseJack.

Digo en cierto modo porque no todos los códigos de escaneo HID son aceptados. En concreto, 0x04-0x1D (A-Z) se reemplazan por 0x00 cuando el dongle envía la trama al ordenador anfitrión, lo que significa que podemos inyectar lo que queramos, siempre que no sea una letra. La otra excepción es que las combinaciones de teclas con ctrl sí están permitidas, incluso cuando incluyen letras.

Una inyección de pulsaciones eficaz a través del R500 requiere que seamos un poco creativos.

Supongamos que el objetivo está en una sesión de bash. En bash, podemos codificar nuestros caracteres en base-8, codificando los comandos que contienen letras y que queremos que el objetivo ejecute.

Por ejemplo, ping google.com se codifica como $'\160\151\156\147' $'\147\157\157\147\154\145\056\143\157\155'. Si enviamos esta cadena a una sesión de bash y después enviamos enter, el comando ping google.com se ejecutará en la máquina objetivo.

Detección de dispositivos

Puedes encontrar la dirección de tu Logitech R500 usando nrf24-scanner de la siguiente manera:

sudo ./tools/nrf24-scanner.py -c {2..74..3} -l

Los paquetes deberían verse así:

[2019-04-21 13:11:52.507]  62   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 13:11:52.515]  62   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 13:11:52.523]  62  22  85:D1:9D:FE:07  00:D3:4D:6F:B6:1B:E6:05:A2:B4:8B:98:F9:C2:00:00:00:00:00:00:00:81

Inyección

La inyección es posible porque el dongle no aplica el incremento de los contadores AES, por lo que puedes reproducir paquetes. Un paquete enviado OTA se compone de una carga útil USB HID que ha sido cifrada en modo contador AES, seguida del contador. Cuando pulsas un botón en el clicker de presentación, este genera un paquete de tecla presionada y un paquete de tecla liberada. El paquete de tecla liberada son todo 0, lo que nos proporciona un material de clave limpio que podemos reutilizar, aplicar XOR con nuestra propia carga útil y enviarlo OTA.

No debería ser difícil automatizar el proceso de escuchar una pulsación de botón, extraer el segundo paquete (de tecla liberada) y usarlo automáticamente como referencia de material de clave. Pero soy perezoso, así que primero tendrás que capturar tú mismo una pulsación de botón, que se ve así:

[2019-04-21 16:02:56.451]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.459]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.468]  65  22  85:D1:9D:FE:07  00:D3:E6:7B:35:8C:BB:2C:7D:5B:8B:98:FA:76:00:00:00:00:00:00:00:B9
[2019-04-21 16:02:56.475]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.507]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.516]  65  22  85:D1:9D:FE:07  00:D3:99:D6:D3:8D:49:25:F5:4D:8B:98:FA:77:00:00:00:00:00:00:00:1A
[2019-04-21 16:02:56.524]  65   5  85:D1:9D:FE:07  00:40:00:08:B8
[2019-04-21 16:02:56.532]  65   5  85:D1:9D:FE:07  00:40:00:08:B8

El segundo paquete de 22 bytes es el paquete de tecla liberada.

Elimina el último byte de la carga útil y copia y pega la cadena en logitech.py, reemplazando KEYUP_REF.

(No debería funcionar sin actualizar KEYUP_REF, pero si funciona, ¡por favor házmelo saber!)

Inyección

Inyecta la secuencia de pulsaciones codificada en base-8 del comando bash ping google.com en un dongle Logitech R500 concreto (dirección 85:D1:9D:FE:07):

sudo ./tools/r500-injector.py -l -a 85:D1:9D:FE:07

Logitech Unencrypted

Resumen

Este es el protocolo Logitech estándar sin cifrar, utilizado por el R400/R800.

Detección de dispositivos

Puedes encontrar la dirección de tu Logitech R400/R800 usando nrf24-scanner de la siguiente manera:

sudo ./tools/nrf24-scanner.py -c {2..74..3} -l

Los paquetes deberían verse así:

[2019-04-21 12:58:43.466]  32   0  9D:9E:95:52:07  
[2019-04-21 12:58:43.620]  32  10  9D:9E:95:52:07  00:C1:00:00:00:00:00:00:00:3F

Inyección

Inyecta la secuencia de pulsaciones de prueba en un dongle Logitech R400/R800 concreto (dirección 9D:9E:95:52:07):

sudo ./tools/preso-injector.py -l -f logitech -a 9D:9E:95:52:07

Rii Wireless Presenter

Resumen

El Rii Wireless Presenter (bolígrafo redondeado) está basado en el BK2451 (que parece ser un clon del nRF24). Esto parece un protocolo genérico, dada la prevalencia de dispositivos hermanos, así que probablemente lo recategorice después de obtener más datos.

Es funcionalmente un teclado inalámbrico sin cifrar, vulnerable a la inyección de pulsaciones.

PHY

Descargar herramienta