Полет пчелы. Как работают сети ZigBee и как искать уязвимости в них

ZigBee — один из протоколов, который используют для домашней автоматизации. Его поддержкой наделяют умные лампочки, беспроводные выключатели, датчики движения и прочие устройства, которые повышают комфорт. Но насколько они безопасны? В этой статье я расскажу, как устроен ZigBee, и покажу, при помощи каких устройств и программ перехватывать его сигнал для изучения.

 

Почему ZigBee?

Конечно, этот протокол не нов — стандарт появился еще в 2003 году. Сегодня есть более современные аналоги вроде LoRaWAN и RPMA, но ZigBee продолжает быть популярным. Почему? Взгляни на картинку.

Помимо дальности и скорости здесь учтена стоимость. И сразу видно, что ZigBee отлично сбалансирован и при невысокой цене дает приемлемые дальность действия и скорость передачи данных. Вряд ли тебе понадобится стримить видео в 4K на выключатель, а чтобы что-то сделать издалека, обычно используется подключенный к интернету хаб. Вот и получается, что ZigBee не сильно бьет по карману при создании умного дома и покрывает основные нужды.

К тому же более новые протоколы могут таить неприятные сюрпризы. Например, в разговорах о LoRa я уже несколько раз слышал от интеграторов, что при большом количестве устройств в сети могут начаться чудеса. Говорят, что на опрос сотни девайсов может уйти около часа.

 

Основные понятия

Топология сети может быть одной из следующих:

  • звезда;
  • кластерное дерево;
  • стильный-модный-молодежный вариант — mesh.

Координатор (он же FFD) — это самый главный узел. Он создает сеть, выбирает, на каком канале общаться, может выступать как «центр доверия» (trust center). Роутеры — устройства уже чуть попроще. Они служат зачастую ретрансляторами сообщений от конечных устройств. Конечные устройства (end device) — то, что мы объединяем в сеть, то есть выключатели, лампочки, датчики движения и прочие гаджеты.

Вот сводная таблица функциональности каждого из устройств.

Координатор Роутер Конечное устройство
Создание сети ZigBee x
Выдача разрешений на присоединение к сети другим устройствам x x
Назначение 16-разрядного сетевого адреса x x
Обнаружение и запись путей для эффективной доставки сообщений x x
Обнаружение и хранение списка соседей, доступных в один хоп x x
Маршрутизация сетевых пакетов x x x
Присоединение и выход из сети x x x
Режим сна x

А теперь открываем официальную спецификацию ZigBee. Там нас почти сразу встречает вот такая интересная картинка.

ZigBee Stack Architecture

Но пусть она тебя не пугает, потому что к концу статьи ты поймешь, что в реальности все немного проще! ?

 

PHY

Итак, начнем изучение с PHY, физического уровня, и будем подниматься вверх по слоям.

ZigBee, а точнее, IEEE 802.15.4 может работать в трех частотных диапазонах.

И, как ты можешь заметить, если выбрать для него частоту 2,4 ГГц, то Wi-Fi и ZigBee могут начать мешать друг другу. Для уменьшения перекрестных помех между Wi-Fi и ZigBee лучше выбирать следующие каналы.

Что не может не радовать, в стандарте есть такое понятие, как ED — Energy Detection. Эта фича используется в координаторе умного дома, чтобы он выбирал канал, где меньше всего помех.

Общий вид посылки для PHY имеет следующий вид.

Если у тебя дома завалялся SDR и ты желаешь контролировать каждый-прекаждый битик в модуляции OQPSK, то тебе поможет вот эта схема.

Этот вид модуляции как раз и применяется на частоте 2,4 ГГц. А мы тем временем идем дальше выше по стеку протоколов, и нас ждет уровень MAC.

 

MAC

Общий вид MAC-фреймов представлен ниже.

Как видишь, Frame Control отвечает за тип пакета данных (Beacon, Ack, Cmd, Data), тип адресации, а также наличие шифрования.

Теперь поговорим о каждом фрейме данных чуть подробнее.

Data Frame — один из самых простых фреймов. В нем передаются данные протоколов, которые работают поверх IEEE 802.15.4. Получается, что ты можешь взять за основу IEEE 802.15.4 и разработать протокол для своих нужд.

ACK Frame — фрейм подтверждения. Увы, мы живем в неидеальном мире, где бывает много помех, а при передаче по радиоканалу тем более. Поэтому необходимо подтверждать принятые данные.

Здесь Sequence Number указывает на то, какой фрейм из пришедших ранее мы подтверждаем.

MAC Cmd frame в той или иной степени отвечает за «организацию сети» на уровне 802.15.4.

Ниже представлены команды, которые могут тебе встретиться.

FFD — Full-function Device — это координатор сети, та самая главная «железка», которая организовывает сеть ZigBee.

RFD — Reduced-function Device — не столь важное устройство, как координатор, выполняет функции роутера при пересылке пакетов.

Beacon frame — об этом фрейме стоит поговорить подробнее.

Так как мы передаем данные по радиоканалу и у нас есть несколько устройств, эти устройства должны как-то определять, в какой момент можно передавать данные, а когда занята несущая и стоит подождать. Поэтому в сетях ZigBee/IEEE 802.15.4 есть два способа передачи данных: режимы Beacon и NonBeacon.

Для передачи данных в режиме NonBeacon используется так называемый unslotted CSMA-CA channel access mechanism. По моему опыту, он используется редко.

Наиболее частый случай — использование режима Beacon. В этом случае координатор отправляет так называемые маячки (beacons), на основе которых остальные устройства синхронизируются и передают данные.

Общий вид передачи данных в этом режиме представлен ниже.

Во фрейме Beacon указывается, сколько будет slotted CSMA-CA, будет ли доступ без конкуренции и последует ли Inactive portion — время, когда конечные устройства смогут со спокойной совестью уйти в спячку для продления работы от батарейки.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *