Инструментарий для атак на Z-Wave (868/908 МГц), построен на базе Scapy Radio. Использует два HackRF One: один для пассивного сниффинга, второй для передачи пакетов. Позволяет перехватывать незашифрованные Z-Wave сети (S0), выполнять инъекцию команд, управлять умными замками, выключателями и сенсорами без аутентификации. Представлен на ShmooCon 2016. Поддерживает Z-Wave 300, 400 и 500 серии.
git clone https://github.com/cureHsu/EZ-Wave cd EZ-Wave # Установить Scapy Radio (модифицированная Scapy с SDR-поддержкой) pip install scapy # Требуется 2x HackRF One + GNU Radio python EZStumbler.py # сканирование сети python EZRecon.py # пассивный перехват python EZAttack.py # инъекция команд
EZ-Wave: Инструменты для оценки и использования сетей Z-Wave с помощью программно-определяемых радиостанций (SDR).
ezstumbler: пассивное обнаружение сети Z-Wave и активное перечисление узлов сети
ezrecon: опрос устройств Z-Wave, включая: - Производитель и имя устройства - Версии программного обеспечения/прошивки - Поддерживаемые классы команд Z-Wave - Настройки конфигурации устройства
ezfingerprint: определяет поколение модуля Z-Wave устройства (3-е или 5-е) с использованием техники манипуляции на физическом уровне (PHY) (манипуляция длиной преамбулы).
**Тестировано только на Ubuntu 14.04
Python 2.7
GNU Radio 3.7+ (рекомендуется Pybombs: https://gnuradio.org/redmine/projects/pybombs/wiki/QuickStart)
Wireshark 1.12+ (https://code.wireshark.org/review/wireshark)
Mercurial (sudo apt-get install mercurial -y)
**Конфигурация по умолчанию предназначена для 2 SDR HackRF One. Можно использовать другие SDR, соответствующим образом изменив GRC-файлы после установки ($HOME/.scapy/radio).
OsmocomSDR (http://sdr.osmocom.org/trac/wiki/GrOsmoSDR)
Хост-программа HackRF (https://github.com/mossmann/hackrf/tree/master/host)
Скрипт настройки клонирует Scapy-radio (https://bitbucket.org/cybertools/scapy-radio/) и изменит файлы установки
./setup.sh
cd $HOME/scapy-radio
./install.sh scapy
./install.sh blocks
Откройте [gnuradio prefix]/etc/gnuradio/conf.d в текстовом редакторе и добавьте ":/usr/local/share/gnuradio/grc/blocks" в global_blocks_path
./install.sh grc
Скопируйте все файлы из EZ-Wave/setup/wireshark в [wireshark]/epan/dissectors
cd [wireshark]
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
ezstumbler.py [-h, --help] [-p, --passive] [-t, --timeout] [-a, --active] [--homeid] -p, --passive Провести пассивное сканирование в течение заданного времени (сек) -t, --timeout Тайм-аут (сек) для сканирования, по умолчанию=60 -a, --active Провести активное сканирование в течение заданного времени (сек) --homeid 4-байтный HomeID для сканирования (напр.: 0x1a2b3c4d)
30-секундное пассивное сканирование, за которым следует активное:
ezstumbler.py --timeout=30
пассивное сканирование:
ezstumbler.py --passive
активное сканирование:
ezstumbler.py --active --homeid=0x1a2b3d4e
ezrecon.py [-h, --help] [-c, --config] [-t, --timeout] homeid nodeid homeid 4-байтный HomeID целевой сети (напр.: 0x1a2b3c4d) nodeid NodeID целевого устройства (в десятичном формате, <233) -c, --config Включить сканирование настроек конфигурации устройства (занимает время) -t, --timeout Остановить сканирование через указанное время (сек, по умолчанию=30)
ezrecon.py 0x1a2b3c4d 20
ezfingerprint.py homeid nodeid homeid 4-байтный HomeID целевой сети (напр.: 0x1a2b3c4d) nodeid NodeID целевого устройства (в десятичном формате, <233)
ezfingerprint.py 0x1a2b3c4d 20