
Атака на беспроводные мышь/клавиатуру с повторением/передачей (poc)
Это код, расширяющий возможности инструментов mousejack https://github.com/RFStorm/mousejack.
В исходные инструменты добавлены средства повторной передачи/передачи.
В папке logs содержатся POC-пакеты на основе Logitech Wireless Combo MK220, состоящего из беспроводной клавиатуры K220 и беспроводной мыши M150.
Более подробная информация доступна здесь https://www.ckn.io/blog/2016/07/09/hijacking-wireless-mice-and-keyboards/
#Использование
Инструмент для обнаружения устройств в псевдо-неразборчивом режиме, который сканирует список каналов и выводит декодированные пакеты Enhanced Shockburst.
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
Поиск устройств на каналах 1-5
./nrf24-scanner.py -c {1..5}
Поиск устройств с адресом, начинающимся на 0xA9, на всех каналах
./nrf24-scanner.py -p A9
Сниффер, следящий за устройством, который отслеживает конкретное устройство nRF24 при его переключении между каналами и выводит декодированные пакеты Enhanced Shockburst от устройства. Эта версия также была модифицирована для записи пакетов в файл журнала.
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]
Перехватывать пакеты с адреса 8C:D3:0F:3E:B4 на всех каналах и сохранять их в output.log
./nrf24-sniffer.py -a 8C:D3:0F:3E:B4 -o logs/output.log
Повторно передавать захваченные пакеты или передавать сгенерированные. Он отслеживает конкретное устройство nRF24 при его переключении между каналами и отправляет пакеты из файла журнала.
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]
Отправить пакеты из файла keystroke.log на адрес 8C:D3:0F:3E:B4 на переключающемся канале
./nrf24-replay.py -a 8C:D3:0F:3E:B4 -i logs/keystroke.log
Картограф звездообразной сети, который пытается обнаружить активные адреса в звездообразной сети, изменяя последний байт заданного адреса и отправляя ping на каждый из 256 возможных адресов на каждом канале из списка каналов.
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]
Построить карту звездообразной сети, к которой принадлежит адрес 61:49:66:82:03
./nrf24-network-mapper.py -a 61:49:66:82:03
Микросхемы nRF24LU1+ включают механизм тестирования для передачи непрерывного тона, частоту которого можно проверить при наличии SDR. Существует вероятность, что частотные сдвиги между устройствами могут вызвать неожиданное поведение. Например, одна из тестируемых плат расширения SparkFun имела частотное смещение около 300 кГц, что приводило к приему пакетов на двух соседних каналах.
Этот скрипт заставит приемопередатчик передавать тон на первом переданном канале.
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)
Передать непрерывный тон на частоте 2405 МГц
./nrf24-continuous-tone-test.py -c 5
Это использует словарь для сопоставления нажатий клавиш с эквивалентными пакетами. Он читает ввод из stdin и записывает сопоставленные пакеты в logs/keystrokes.log. Он будет принимать ввод до нажатия Ctrl+C.
usage: ./keymapper.py
Папка logs содержит различные предварительно сохраненные пакеты для различных операций с клавиатурой.
Shell.log предназначен для эксплуатации Windows-машины с помощью запуска однострочного скрипта PowerShell, который подключается обратно к атакующей машине.
Файл keys.log служит справочником, в котором различные нажатия клавиш и их комбинации сопоставлены с эквивалентными пакетами.
Демонстрацию эксплуатации Windows-машины можно найти здесь https://www.youtube.com/watch?v=YLzUeK1IvJs&feature=youtu.be