
Ataque a ratón/teclado inalámbrico con PoC de replay/transmisión
Este código extiende las herramientas mousejack https://github.com/RFStorm/mousejack.
Se han añadido herramientas de repetición/transmisión a las herramientas originales.
Los paquetes POC basados en un Logitech Wireless Combo MK220 que consiste en un teclado inalámbrico K220 y un ratón inalámbrico M150 están incluidos en la carpeta logs.
Más detalles disponibles aquí https://www.ckn.io/blog/2016/07/09/hijacking-wireless-mice-and-keyboards/
Herramienta de descubrimiento de dispositivos en modo pseudo-promiscuo, que recorre una lista de canales e imprime paquetes Enhanced Shockburst decodificados.
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
Escanear dispositivos en los canales 1-5
./nrf24-scanner.py -c {1..5}
Escanear dispositivos con una dirección que comienza en 0xA9 en todos los canales
./nrf24-scanner.py -p A9
Sniffer que sigue un dispositivo, el cual sigue a un dispositivo nRF24 específico mientras salta, e imprime paquetes Enhanced Shockburst decodificados del dispositivo. Esta versión también ha sido modificada para registrar los paquetes en un archivo de registro
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]
Sniffear paquetes de la dirección 8C:D3:0F:3E:B4 en todos los canales y guardarlos en output.log
./nrf24-sniffer.py -a 8C:D3:0F:3E:B4 -o logs/output.log
Reproduce paquetes capturados o transmite paquetes generados. Sigue a un dispositivo nRF24 específico mientras salta, y envía paquetes desde un archivo de registro.
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]
Enviar paquetes desde el archivo keystroke.log a la dirección 8C:D3:0F:3E:B4 en canal saltante
./nrf24-replay.py -a 8C:D3:0F:3E:B4 -i logs/keystroke.log
Mapeador de redes en estrella, que intenta descubrir las direcciones activas en una red en estrella cambiando el último byte de la dirección dada y haciendo ping a cada una de las 256 direcciones posibles en cada canal de la lista de canales.
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]
Mapear la red en estrella a la que pertenece la dirección 61:49:66:82:03
./nrf24-network-mapper.py -a 61:49:66:82:03
Los chips nRF24LU1+ incluyen un mecanismo de prueba para transmitir un tono continuo, cuya frecuencia se puede verificar si se tiene acceso a un SDR. Existe la posibilidad de que los desfases de frecuencia entre dispositivos causen un comportamiento inesperado. Por ejemplo, una de las placas de desarrollo SparkFun que se probó tenía un desfase de frecuencia de ~300kHz, lo que provocaba que recibiera paquetes en dos canales adyacentes.
Este script hará que el transceptor transmita un tono en el primer canal que se pase.
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)
Transmitir un tono continuo a 2405MHz
./nrf24-continuous-tone-test.py -c 5
Esto utiliza un diccionario para mapear las pulsaciones del teclado a los paquetes equivalentes. Lee la entrada estándar y registra los paquetes mapeados en logs/keystrokes.log. Aceptará entrada hasta que se presione Ctrl+C.
usage: ./keymapper.py
La carpeta logs contiene varios paquetes preguardados para diversas operaciones de teclado.
Shell.log es para la explotación de una máquina Windows ejecutando un one-liner de powershell que se conecta de vuelta a la máquina atacante.
El archivo keys.log sirve como referencia donde varias pulsaciones de teclas y combinaciones se mapean a sus paquetes equivalentes.
Una demostración de explotación de una máquina Windows se puede encontrar aquí https://www.youtube.com/watch?v=YLzUeK1IvJs&feature=youtu.be