Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
presentation-clickers — Vulnerabilità di iniezione dei tasti nei presentatori wireless | Kitploit
Strumenti/GitHubGitHub/marcnewlin/presentation-clickers
Sicurezza Sistemi EmbeddedExploitReverse EngineeringSicurezza WirelessHacking HardwarePenetration TestingSicurezza Hardware e IoT
GitHubmarcnewlin/presentation-clickers

presentation-clickers

Vulnerabilità di iniezione dei tasti nei presentatori wireless

Vedi Repository
96146 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Clicker per presentazioni

Avevo voglia di fare un po' di reverse engineering RF, quindi ho ordinato alcuni clicker per presentazioni e mi sono divertito un po'.

Questo è un fork di nrf-research-firmware (che ho scritto qualche anno fa presso Bastille). Ho aggiunto il supporto per alcuni nuovi ricetrasmettitori/protocolli e incluso POC di iniezione di tasti per 13 comuni clicker per presentazioni.

Cronologia

  • 2019-04-20 - pubblicato il primo lotto (8 dispositivi)
  • 2019-04-21 - pubblicato il secondo lotto (5 dispositivi)

Dispositivi vulnerabili all'iniezione di tasti

ProduttoreModelloProtocolloRFICAggiunto
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

Protocolli

Logitech Encrypted

Panoramica

Questo è il protocollo standard per tastiere Logitech cifrato, come usato dalla R500. È in qualche modo vulnerabile all'attacco di "iniezione di tasti cifrata" che ho documentato con le tastiere Logitech Unifying nell'ambito del progetto MouseJack.

Dico in qualche modo perché non tutti gli scan code HID vengono accettati. Nello specifico, 0x04-0x1D (A-Z) vengono sostituiti da 0x00 quando il dongle invia il pacchetto al computer host, il che significa che possiamo iniettare qualunque cosa vogliamo, purché non sia una lettera. L'altra eccezione è che le combinazioni di tasti con ctrl sono consentite, anche quando includono lettere.

Un'iniezione di tasti efficace tramite la R500 richiede un po' di creatività.

Supponiamo che il bersaglio si trovi in una sessione bash. In bash, possiamo codificare i nostri caratteri in base-8, codificando i comandi che contengono lettere e che vogliamo che il bersaglio esegua.

Per esempio, ping google.com viene codificato come $'\160\151\156\147' $'\147\157\157\147\154\145\056\143\157\155'. Se inviamo questa stringa a una sessione bash e poi inviamo enter, il comando ping google.com verrà eseguito sulla macchina bersaglio.

Rilevamento del dispositivo

Puoi trovare l'indirizzo del tuo Logitech R500 usando nrf24-scanner come segue:

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

I pacchetti dovrebbero apparire più o meno così:

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

Iniezione

L'iniezione è possibile perché il dongle non impone l'incremento dei contatori AES, quindi puoi riprodurre i pacchetti. Un pacchetto inviato OTA è composto da un payload USB HID cifrato in modalità AES counter, seguito dal contatore. Quando premi un pulsante sul clicker per presentazioni, viene generato un pacchetto key down e un pacchetto key up. Il pacchetto key up è composto interamente da 0, il che ci fornisce un materiale di chiave pulito e riutilizzabile: possiamo farne lo XOR con il nostro payload e inviarlo OTA.

Non dovrebbe essere difficile automatizzare il processo di ascolto di una pressione di un pulsante, estraendo il secondo pacchetto (key up) e usandolo automaticamente come riferimento per il materiale di chiave. Ma sono pigro, quindi dovrai prima osservare tu stesso una pressione di un pulsante, che appare così:

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

Il secondo pacchetto da 22 byte è il pacchetto key-up.

Rimuovi l'ultimo byte del payload e copia e incolla la stringa in logitech.py, sostituendo KEYUP_REF.

(Non dovrebbe funzionare senza aggiornare KEYUP_REF, ma se funziona, fammelo sapere!)

Iniezione

Inietta la sequenza di tasti codificata in base-8 del comando bash ping google.com in uno specifico dongle Logitech R500 (indirizzo 85:D1:9D:FE:07):

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

Logitech Unencrypted

Panoramica

Questo è il protocollo Logitech non cifrato standard, usato dai modelli R400/R800.

Rilevamento del dispositivo

Puoi trovare l'indirizzo del tuo Logitech R400/R800 usando nrf24-scanner come segue:

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

I pacchetti dovrebbero apparire più o meno così:

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

Iniezione

Inietta la sequenza di tasti di prova in uno specifico dongle Logitech R400/R800 (indirizzo 9D:9E:95:52:07):

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

Rii Wireless Presenter

Panoramica

Il Rii Wireless Presenter (a forma di penna) è basato sul BK2451 (che sembra essere un clone del nRF24). Sembra un protocollo generico, vista la diffusione di dispositivi gemelli, quindi probabilmente lo ricategorizzerò dopo aver raccolto altri dati.

È funzionalmente una tastiera wireless non cifrata, vulnerabile all'iniezione di tasti.

PHY

Il Wireless Presenter (a forma di penna) usa nRF24 Enhanced Shockburst a 250Kb/s (a quanto pare senza ACK) e un indirizzo a 5 byte. Il dispositivo che ho testato è stato osservato stazionare a 2425 MHz, ma sembra usare una sorta di schema di agilità di frequenza. In pratica, è necessario inviare alcuni pacchetti dummy sul canale di destinazione prima di inviare i pacchetti di tasti.

Sospetto che ci sia una sorta di channel hopping, che non ho caratterizzato, ma puntare su un singolo canale è sufficiente per dimostrare l'iniezione di tasti.

Rilevamento del dispositivo

Puoi trovare l'indirizzo del tuo Wireless Presenter (a forma di penna) usando nrf24-scanner come segue:

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

Nota: il tuo potrebbe trovarsi su un altro canale.

I pacchetti dovrebbero apparire più o meno così:

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

Iniezione

Inietta la sequenza di tasti di prova in uno specifico dongle Rii (indirizzo 6D:8C:01:14:25):

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

TBBSC DSIT-60

Panoramica

Il TBBSC DSIT-60 è basato sul BK2451 (che sembra essere un clone del nRF24). Esistono apparenti dispositivi gemelli (ad esempio questo) che non ho testato. Per il momento lo sto categorizzando come un protocollo distinto, ma è probabile che cambi quando testerò i dispositivi gemelli.

È funzionalmente una tastiera wireless non cifrata, vulnerabile all'iniezione di tasti.

PHY

Il DSIT-60 usa nRF24 Enhanced Shockburst a 250Kb/s (o almeno un equivalente OTA) con un indirizzo a 3 byte. Il dispositivo che ho testato è stato osservato stazionare a 2406 MHz, ma non sono sicuro di quali altri canali possa usare.

Rilevamento del dispositivo

Puoi trovare l'indirizzo del tuo DSIT-60 usando nrf24-scanner come segue:

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

Nota: il tuo potrebbe trovarsi su un altro canale, oppure potrebbe esserci una risintonizzazione di agilità di frequenza che non ho osservato.

I pacchetti dovrebbero apparire più o meno così:

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

Iniezione

Inietta la sequenza di tasti di prova in uno specifico dongle TBBSC DSIT-60 (indirizzo 87:02:09):

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

AmazonBasics P-001

Panoramica

Questo è quasi certamente un protocollo generico, ma non ho ancora esaminato nessuno dei dispositivi gemelli (ad esempio questo). Per il momento lo sto categorizzando come un protocollo distinto, ma è probabile che cambi quando testerò i dispositivi gemelli.

Il P-001 è basato sulla famiglia di RFIC nRF24 ed è funzionalmente una tastiera wireless non cifrata, vulnerabile all'iniezione di tasti.

PHY

Il P-001 usa nRF24 Enhanced Shockburst a 2Mb/s con indirizzi a 5 byte e canali 2402-2476.

Rilevamento del dispositivo

Puoi trovare l'indirizzo del tuo P-001 usando nrf24-scanner.py.

Premendo la freccia destra dovrebbero essere generati pacchetti più o meno così:

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

Iniezione

Inietta la sequenza di tasti di prova in uno specifico dongle AmazonBasics P-001 (indirizzo 44:CB:66:A3:BE):

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

Canon PR100-R

Panoramica

Non sono sicuro che questo protocollo sia esclusivo del Canon PR100-R, ma dato che è l'unico dispositivo che ho osservato usare questo protocollo, lo lascio nella sua categoria finché i dati non suggeriranno il contrario.

Il PR100-R è basato sul RFIC PL1167 e su un MCU sconosciuto.

Il PR100-R è funzionalmente una tastiera wireless non cifrata, vulnerabile all'iniezione di tasti.

PHY

Il PR100-R usa un protocollo FSK a 1Mb/s che opera su canali distanziati di 5 MHz tra 2406 MHz e 2481 MHz.

I pacchetti sono sottoposti a whitening e protetti da un CRC a 16 bit.

Non sembrano esserci ACK inviati dal dongle, con l'avvertenza che ho fatto reverse engineering di questo protocollo solo quanto basta per dimostrare l'iniezione di tasti.

Il protocollo sembra adottare un approccio di agilità di frequenza per la selezione del canale e il dongle si stabilisce su un canale dopo che il telecomando vi ha trasmesso per un certo numero di pacchetti. In pratica, è sufficiente trasmettere alcuni secondi di pacchetti dummy prima di trasmettere i pacchetti di tasti.

Indirizzamento

In base al formato del pacchetto, non è chiaro se questo protocollo usi una sync word fissa o un indirizzo per dispositivo. Ho esaminato un solo esemplare (a causa del prezzo elevato), quindi non sono stato in grado di verificare completamente il formato del pacchetto.

Lo script di iniezione funziona con il mio PR100-R, ma potrebbe dover essere modificato per un uso generale. Se hai un altro PR100-R e sei in grado di verificarlo, fammelo sapere!

Iniezione

Inietta la sequenza di tasti di prova in un dongle Canon PR100-R nelle vicinanze:

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

HS304

Panoramica

L'HS304 sembra essere un RFIC specifico per applicazioni di clicker per presentazioni (o forse tastiere/mouse wireless). Il nome deriva dalla stringa del dispositivo USB HAS HS304 ed era lo stesso per tutti i dispositivi di questo set.

Il componente RFIC è stato osservato come un package SOP-16 senza marcature, senza differenze apparenti tra i venditori.

I dispositivi basati su HS304 sono funzionalmente tastiere wireless non cifrate, vulnerabili all'iniezione di tasti.

PHY

HS304 è un protocollo FSK a 1Mb/s che opera su tre canali nella banda ISM 2.4GHz (2407, 2433, 2463). Non sembrano esserci ACK inviati dal dongle al clicker per presentazioni e la consegna dei pacchetti è garantita trasmettendo ogni pacchetto su ciascuno dei tre canali.

In pratica, una consegna affidabile dei pacchetti può essere ottenuta anche trasmettendo ogni pacchetto più volte su un singolo canale.

I pacchetti sono sottoposti a whitening e protetti da un CRC a 16 bit.

Indirizzamento

Non esiste alcuno schema di indirizzamento o pairing, quindi l'iniezione di tasti non richiede il rilevamento del dispositivo; tuttavia, l'assenza di ACK impedisce il rilevamento attivo dei dongle.

Iniezione

Inietta la sequenza di tasti di prova nei dongle HS304 nelle vicinanze:

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

Sniffing

Ricevi e decodifica i pacchetti inviati dai clicker per presentazioni NS304 nelle vicinanze:

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

Scarica lo strumento
2019-04-21
LogitechR400Logitech UnencryptednRF242019-04-21
LogitechR800Logitech UnencryptednRF242019-04-21
LogitechR500Logitech EncryptednRF242019-04-21