Взлом систем умного дома от А до Я на примере протокола ZigBee. Часть 1

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Не так давно отшумели погромы устроенные с помощью IoT девайсов и ботнета Mirai созданого с помощью их уязвимости. Но на этом история не заканчивается. На подходе новый вектор который нам дают системы автоматизации умного дома. Хотя доступ к ним можно получить слегка другим методом, но возможности такие системы дают очень большие. Так как в современнных реализациях систем автоматизации домов, встречается масса всевозможных вкусностей для хакера. Сегодня мы рассматриваем протокол ZigBee и взлом систем умного дома, которые на нем построены.

Что такое протокол ZigBEE

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

Почему в системах умного дома используется ZigBee?

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

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

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

Основные понятия по взлому систем умного дома

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

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

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

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

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

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

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 — время, когда конечные устройства смогут со спокойной совестью уйти в спячку для продления работы от батарейки.

NWK layer

Вот так выглядит фрейм во всей красе на уровне NWK. Не забываем, что раз мы уже тут, данные будут упакованы в Data Frame уровня MAC.

Как видишь, на уровне NWK тоже встречаются несколько разновидностей фреймов. Но прежде чем о них говорить, думаю, стоит осветить вопросы адресации в сетях ZigBee. Потому что тебя, наверное, уже терзают вопросы, что такое Dst Addr, Src IEEE Addr и тому подобные вещи.

Адресация в сетях ZigBee

Начнем, пожалуй, с PAN ID, или Personal Area Network ID. Он используется для логического отделения узлов одной сети ZigBee от узлов другой, если сети расположены на одной и той же территории либо работают на одном и том же канале.

EPIND — Extended PAN ID, глобальный 64-битный уникальный идентификатор. Используется для избегания конфликтов PAN ID.

Src/Dst Addr — собственно, адрес отправителя и получателя. Могут быть как короткими (16-битными), так и длинными (64-битными). Причем если 64-битный адрес используется на слое NWK, то это и будет как раз Src/Dst IEEE addr. Он считается уникальным для каждого приемопередатчика ZigBee.

Ну и чтобы лучше понимать устройство адресов, посмотрим часть дампа трафика в Wireshark.

Сейчас пока важно понять, что Src/Dst Addr на уровнях MAC и NWK — это одни и те же адреса.

NWK Data frame — служит для передачи более высокоуровневых слоев. Тут все просто.

NWK Cmd frame — как раз тут и творится основная «магия» маршрутизации данных, построения mesh-сети и подключения/отключения узлов.

Список основных команд представлен ниже.

Про Inter-PAN, увы, не скажу ничего, так как он загадочен. Его основная задача — пересылка данных между узлами, которые находятся в разных сетях, но документации по этой теме очень немного.

APL layer

Наконец мы добрались до самого верха в стеке протоколов ZigBee. Общий вид фреймов представлен ниже.

Data Frame Format

Этот фрейм содержит «все последовательности октетов следующего более верхнего уровня». Спрашивается, куда уж выше?

APS Command Frame Format

Acknowledgement Frame Format

Теперь тебя, возможно, насторожат новые составные части фрейма: Profile ID, Cluster, Endpoint. Попробуем с ними разобраться. Вернись к той страшной картинке со стеком протоколов в самом начале статьи. Надеюсь, теперь она будет восприниматься полегче.

PHY и MAC определены стандартом IEEE 802.15.4, вышележащие уровни — это ZigBee.

Одна из главных задумок — обеспечить совместимость (interoperability), отсюда такой комбайн на уровне APL. Это означает, что если взять, к примеру, лампочку с поддержкой ZigBee вендора А, купленную десять лет назад, и выключатель вендора Б, купленный вчера, то они без проблем будут работать друг с другом. Раньше ZigBee этим похвастаться не мог, сейчас же все становится гораздо лучше.

ZigBee Device Object (ZDO) фактически отвечает за инициализацию устройства — будет ли оно FFD (координатором) или end device. Также производит настройку и инициализацию NWK и SSP (Security Service Provider). О механизмах безопасности в сетях ZigBee поговорим чуть дальше.

Application Support Sublayer (APS) предоставляет программный интерфейс между уровнем NWK и приложениями, которые могут работать на устройстве.

Application Framework — что-то вроде окружения, где выполняются приложения ZigBee.

Чтобы устройства понимали, как взаимодействовать друг с другом, их для начала нужно идентифицировать по профилям. Для этого как раз и применяются Application profiles. Размер — два байта. Бывают:

  • Public profiles — они разработаны в ZigBee Alliance для производителей совместимых устройств. Служат для того, чтобы устройства разных вендоров могли работать друг с другом;
  • Private profiles (другое официальное название — Manufacturer Specific Profiles, MSP). Это уже профиль, разработанный самим вендором для своих нужд (например, специфичных для устройства).

Следующая структурная единица коммуникации между устройствами — Cluster ID. Она также имеет длину в два байта. Это своего рода сообщения, определенные в profile ID. К примеру, для профиля Home Automation могут быть заданы следующие кластеры:

  • On/Off — используется, чтобы включить или выключить устройство (например, лампочку или термостат);
  • Level control — используется для димминга (например, можно плавно зажечь лампочку на 80% от максимальной яркости);
  • Color control — управление цветом освещения (вдруг захочется мимимишный розовый оттенок?).

Завершает систему адресации Endpoint. Чтобы было понятнее, приведу аналогию с обычным компьютером. Устройство ZigBee — это как машина в сети: у него есть IP, по которому можно обратиться. И как на одном компьютере может крутиться несколько служб на разных портах, так и на устройствах ZigBee может быть несколько приложений. Чтобы однозначно обращаться к одному или другому, как раз и нужны эндпойнты.

Вот так будет выглядеть иерархическая структура для выключателя света с профилем Home Automation.

Продолжение следует...


Источник: cryptoworld.su

Комментарии: