Безопасность ZigBee. Дверной звонок.

_config.yml
Вход в ZigBee сеть “без стука”.

Прежде всего хочу обратить Ваше внимание на следующее:

Все эксперименты проводите только со своим оборудованием. Скорее всего доступ к ZigBee сети соседа, без его согласия, является негласным получением информации.

Способ основывается на уязвимости чипа JN5169. Первый материал на эту тему здесь. Мы продолжили развитие проекта JN5169-monitor и добавили функцию, которая позволяет прочитать Network key из EEPROM.

В большинстве систем домашней автоматизации, основанных на ZigBee с профилем Home Automation, используется стандартный ключ шифрования APS именуемый Link key: ZigBeeAlliance09 (5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39) Для профиля ZLL (лампочки Hue), используется ключ 9F 55 95 F1 02 57 C8 A4 69 CB F4 2B C9 3F EE 31 (1)
Зная Link key можно построить карту сети, выяснить тип устройства, по MAC адресу определить производителя чипа (косвенно может указывать на производителя устройства). Полезные данные и команды шифруются другим ключом который называется Network key. Все девайсы получают и сохраняют его при добавлении в сеть.

Network key генерируется при создании сети и, как правило, не меняется на протяжении длительного времени. Имея этот ключ можно присоеденится к сети.

Хорошим примером является устройство Aqara WXKG12LM. Это универсальная кнопка. Одним из применений, предложенным производителем, может быть дверной звонок (Smart Doorbell).(2) Предполагается что устройство располагается в общедоступном месте. Как вы сможете убедиться, чтение ключа занимает немного времени. Факт чтения нигде не фиксируется. После всех манипуляций устройство сохраняет свою работоспособность.

  1. Разберите WXKG12LM и подключите USB-UART адаптер к обозначенным на фото контактам;
  2. Переведите JN5169 в режим bootloader замкнув вывод /BOOT на GND и подав питание;
  3. Скачайте проект JN5169-monitor;
  4. В папке /wire найдите скрипт upload.py. Откройте его в текстовом редакторе и укажите правильный номер порта (port=’COMx’,);
  5. Запустите скрипт. При правильном подключении и настройке Вы увидите следующий результат: _config.yml
  6. Перезагрузите устройство в нормальный режим (высокий уровень /BOOT);
  7. Подключитесь к последовательному порту с помощью Putty или подобной программы. Параметры порта 115200 8n1;
  8. Нажмите Enter. Вы увидите сообщение: _config.yml
  9. Нажмите клавишу ‘n’. Если устройство было в сети, то в ответ получите всю необходимую информацию. (3) _config.yml
    • Channel - канал ZigBee;
    • PanID - идентификатор сети;
    • NwkAddr - короткий адрес устройства в сети;
    • ExtPanID - MAC адрес координатора;
    • Key - Network key;
  10. Нажмите на клавиатуре последовательно .r (символ точка, символ ‘r’). Эта команда вернет устройство в рабочее состояние. _config.yml

Проверить ключ можно с помощью Wireshark.

Вместо WXKG12LM может быть любое другое устройство построенное на микроконтроллере JN5169.

Ссылки

  1. ZLL master key
  2. WXKG12LM на сайте Aqara
  3. Идентификаторы PDM выделенные для ZigBee стека
17.05.2022