"Untitled Post" - Views: 4,681 · Hits: 4,681 - Type: Unlisted

Seguridad en redes inalámbricas de espacio personal: el caso ZigBee. 

Por: int_0x40


¿Qué es ZigBee? ¿Para qué se utiliza? ¿Cómo funciona y que problemas de seguridad vienen aparejados con su implementación? Responder a esas preguntas es el propósito de este texto. 

Se conoce comúnmente con el nombre de ZigBee a aquella especificación que incluye varios protocolos de nivel alto para la comunicación inalámbrica mediante radiodifusión digital de bajo costo. Se le describe en el estándar IEEE 802.15.4 para redes wireless de área personal o WPAN en la frecuencia 2.4 GHz. 

ZigBee RF4CE, fue creada conjuntamente por la ZigBee Alliance y por el RF4CE Consortium, también conocida como especificación estandarizada para control remoto basado en RF (radiofrecuencia).

Naturalmente el contexto donde se asume que esta especificación cobra más fuerza, es en la automatización de las viviendas (domótica), la industraia y los servicios. El motivo de tal supuesto radica en su bajo costo, consumo de energía, adaptabilidad y facilidad para implementarse en topologías de malla (Mesh).

Ha sido tan amplio el crecimiento de este estándar de redes inalámbricas, que se prevé que pronto desplacen definitivamente a otras tecnologías como WI-FI, Bluetooth, Infrared o DECT para ese tipo de escenarios. 

Las redes ZigBee en malla son las más utilizadas en implementaciones que incluyen el control de flujo de agua, gas y electricidad en el sector industrial y de servicios. En particular su uso se está haciendo generalizado en la industria de la construcción, como ejemplo se usaron miles de dispositivos ZigBee en el Brand-New MGM CityCenter de Las Vegas, además de que muchos reguladores eléctricos inteligentes de alto voltaje a lo largo de la unión americana se comunican aprovechando esa tecnología.

Ejemplos del desarrollo que ha tenido abarcan campos como la automatización de servicios domésticos, industriales y comerciales para el ámbito de las WPAN, y van desde el control remoto de aparatos electrodomésticos con acceso a Internet, audio y video; la regulación de servicios básicos como agua, luz, gas, drenaje, temperatura; detección de incendios, movimiento; control centralizado de perímetros de seguridad y alarmas; procesos industriales como la apertura y cerrado de válvulas; hasta la automatización de cerraduras y puertas digitales.

Teniendo ese crecimiento tan brillante y prometedor en sectores tan amplios, no deberíamos tener más de tres dedos de frente para imaginarnos los riesgos latentes de seguridad que podrían estar ocultos atrás de tantas fanfarrias.  

Cómo funcionan las redes ZigBee.

En el lado técnico, ZigBEE ofrece conexiones en la frecuencia de 2.4 GHz para 16 canales con 5 MHz de canaleta. Utiliza modulación DSSS al igual que el estándar 802.11b y el largo máximo de tramas es de 127 bytes. Además el tamaño de la pila de protocolos ocupa pocos Kilobytes.
 
Su primera versión fue en el 2004. Para el 2006 se le añadió soporte de encriptación y autenticación de tramas. En la versión del 2007 ya contaba con un nuevo modelo de seguridad con un "centro de confianza". La versión profesional (ZigBee-PRO) ofrecía lo mismo que la del 2007 más otras opciones adicionales de mejora de seguridad.

En cuanto a la autenticación, ZigBee utiliza una variación del protocolo AES-CCMP con claves que van hasta 128 bits de largo. Comúnmente la clave de red es compartida por todos los dispositivos asociados pero también pueden existir claves de conexión compartidas entre dos dispositivos y una clave maestra con SKKE en la versión PRO.
   
Las redes ZigBee están constituidas por ZC (ZigBeeCoordinators) o Coordinadores PAN, que son nodos cuyas funciones son las de encargarse de controlar la red, la asociación de nuevos dispositivos y las rutas que deben seguir todos para conectarse entre ellos. Además de los ZC, se cuenta con ZR (ZiggBee Routers) o Enrutadores, los cuales tienen como tarea esencial la de interconectar como padre a los dispositivos hijos separados en la topología de la red, junto con ofrecer una capa de aplicación para la ejecución de interfaces de usuario. Por último, tenemos a los nodos finales ZED (ZigBee End Devices) o hijos, que cuentan con la funcionalidad necesaria para comunicarse mediante el modelo Parent-Child, según sea el caso, con un enrutador o con el coordinador PAN, pero no puede transmitir información destinada a otros dispositivos. En tal caso, este nodo permanece dormido la mayor parte del tiempo, disminuyendo de forma drástica el consumo de energía. Así mismo un ZED tiene muy pocos requerimientos de memoria y como consecuencia su costo es mínimo.

Una red 802.15.4 comienza su funcionamiento mediante la distribución de los dispositivos que la conformarán. Uno de ellos que es capaz de ser Coordinador inicia por identificar algún canal relativamente libre de interferencias a través de barridos al medio, luego se configura para cubrir su función de coordinar la red. En ZigBee este proceso es conocido como el establecimiento del Coordinador PAN. Consecuentemente, los dispositivos que quieran unirse lo harán primero emitiendo balizas request que serán contestadas por otros dispositivos (Coordinadores PAN o Enrutadores) si es que se cumple una condición para permitirles unirse a la red. En teoría sólo el ZC o Coordinador ZigBee responderá a la baliza de solicitud. Pero en adición a éste, los ZR o Enrutadores también son capaces de responder y permitirles unirse si la distancia al ZC es mayor. Lo que determina este proceso es una serie de mensajes intercambiados. Si se cumple con determinada condición en los mensajes request-replay en el estándar 802.15.4, se dice que el dispositivo huesped solicitante se ha "asociado" con éxito. Un factor clave en tal determinación es la capacidad del ZR o Enutador de aceptar dispositivos adicionales como hijos (child).

Lo que distingue a una red 802.15.4 de otras tecnologías inalámbricas como Wi-Fi, Bluetooth, IR y otras es su capacidad de permitir asociaciones jerárquicas más que una sola asociación padre-hijo o maestro-esclavo. Por ejemplo un dispositivo conectado al ZC o Coordinador PAN puede ser un ZR o Enrutador y permitir a otros dispositivos conectarse a éste. Como resultado, se pueden lograr múltiples niveles de asociación entre todos los dispositivos.

En cuanto al perfil de la pila de protocolos (stack) ofrecido por ZigBee, encontramos que se encarga de definir servicios de conectividad, transporte, aplicación y parámetros de seguridad para toda la red; este perfil es definido en el ZC Coordinador PAN y en los ZR Enrutadores.

En este estándar cada nodo cuenta con una dirección de 64 bits que lo identifica de manera única. Sin embargo, para extender el tiempo de batería se utilizan por lo común direcciones más cortas a fin de disminuir el tamaño de los paquetes y el tiempo de transmisión. Así, ZigBee requiere de que todas las transmisiones después de establecida la asociación sean hechas con una dirección de red de 16 bits. Esa dirección es asignada al recién llegado por el padre, durante el proceso de intercambio de mensajes de asociación que mencionamos antes. Además, ZigBee especifica un algoritmo "Cskip" que provee rangos de direcciones a los Enrutadores y Coordinadores PAN para que asocien a los dispositivos hijos basándose en su ubicación física dentro de la jerarquía de red.  

En adición al proceso de asociación, la estructura de conectividad puede modificarse cuando algún dispositivo abandona la conexión o es forzado a abandonarla e igualmente cuando es reasociado a ésta después de presentarse un reinicio.

Dependiendo de las necesidades de automatización de los servicios en el hogar, industria o centro comercial, la forma básica de las redes ZigBee por lo general cubrirá una zona de comunicación entre dispositivos de 10 metros con una tasa de transferencia de unos 250 kbps.

En cuanto a la pila de protocolos utilizados por las redes ZigBee y para entender los elementos básicos de cómo los servicios de aplicación son ofrecidos, consideremos un ejemlo en el cual un control remoto en una vivienda provee el encendido y apagado de las luces o la regulación de temperatura. Cada servicio es identificado de forma única mediante una identificación de perfil (ID profile), digamos Control de Luces (CDL) posee un ID profile 0x0100. Cada perfil incluirá opciones específicas o controles que serán a su vez identificados con un identificador de cluster (Cluster ID). Así el perfil de CDL tendrá un Cluster ID 0x01 que proveerá las opciones de encendido y apagado de las luces para el control remoto.

ZigBee cuenta con una Subcapa de Soporte de Aplicación (ASSL por sus siglas en inglés) que ofrece una interface de conectividad y capa de transporte a las aplicaciones, similar a TCP en las redes IP, aunque sin las garantías del control de flujo como ventana deslizante que éste ofrece. Para lograr tal cometido, ASSL define puntos terminales (endpoints), que son equivalentes a los puertos TCP y en los cuales se llevan a cabo los servicios de aplicación bajo un esquema stop and wait.
 
Por lo común, las redes grandes están pensadas para formar un cluster de clusters. E igualmente pueden estructurarse en forma de malla o como un solo cluster. Los perfiles actuales de los protocolos soportan redes que utilicen o no facilidades de balizado.

En la capa dos, las redes sin balizas acceden al canal por medio del estándar CSMA/CA (Carrier Sense Multiple Access/Collision Avoided) tal y como lo hacen otras implementaciones 802.11. Los enrutadores suelen estar activos todo el tiempo, por lo que requieren una alimentación estable en general. Esto a cambio permite redes heterogéneas en las que algunos dispositivos pueden estar transmitiendo todo el tiempo, mientras que otros sólo transmiten ante la presencia de estímulos externos. Si la red utiliza balizas, los enrutadores las generan periódicamente para confirmar su presencia a otros nodos.

Es posible implementar 3 topologías de red con ZigBee: En estrella, en la cual el coordinador está situado en un espacio central. En árbol, para la cual el coordinador estará ubicado como  la raíz del árbol. Y en malla, la más común, en la que cuando menos uno de los nodos tendrá más de dos interfaces.

Problemas de seguridad de las redes ZigBee.

Uno de los problemas que saltan a la vista es que estas redes inalámbricas no ofrecen protección contra ataques de repetición y falsificación de paquetes en los que un atacante simplemente haga sniffing, copie y reinyecte paquetes a la red.

La captura de claves y llaves maestras en texto plano, ataques chop-chop o el simple crackeo de ellas cuando estén encriptadas sería simplemente trivial.

Por unos cuantos dolares invertidos se podría tener una "caja de herraminetas" mínimas para hacer tales ataques: un par de tarjetas inalámbricas USB AVR RZUSB Stick-AT90USB1287 uC con AT86RF230 802.15.4 transceptor (dado que el firmware de la RZUSB se acomoda perfectamente para sniffing 802.15.4 tanto como Hijo-ZED como Padre-ZC-ZRPAN) a fin de usar una de ella para capturar-grabar y otra para reinyectar paquetes; una antena PCB hechiza; el framework escrito en Python por Joshua Wright que simplifica la captura, copia e inyección de tráfico así como la decodificación o manipulación de los paquetes capturados e igualmente la falsificación de ACKs en las tramas; además algunas aplicaciones de reconocimiento y explotación, el Pure Python y unas cuantas librerías sería suficiente.  
 
Los ataques que incluyeran captura, repetición o robo de credenciales, reinyección o falsificación de tráfico en redes ZigBee, no resultarían de mucha gravedad si hablásemos de que son dirigidos digamos al control de encendido y apagado de lámparas en una vivienda. Pero si esos mismos ataques se perpetraran contra una cerradura digital, sistema de alarmas, reguladores inteligentes de alto voltaje, controles de válvulas de agua o gas: el resultado podría ser devastador. Pudiendo ir desde una simple denegación de servicio, el acceso no autorizado a zonas restringidas, hasta una situación de compromiso general del sistema de control, que podría ser aprovechado por delincuentes, el terrorismo internacional o local. Es más, algunos consultores tienen la sospecha de que ciertas implementaciones inseguras de ZigBee para cerraduras, alarmas y reguladores de válvulas pudiesen estar siendo ya utilizadas en bases militares y plantas nucleares de la Unión Americana).   

Consideremos lo siguiente: una instalación de alta seguridad que "resguarda" cepas altamente patógenas de Ántrax. Una parte del edificio tiene alarmas perimatrales y sensores de movimiento conectados a dispositivos ZigBee con claves que son transmitidas sobre el aire (OTA). Aunque la implementación de claves OTA permitiera adecuadamente su rotación, éstas son emitidas dentro de tramas en texto plano. Puesto que 802.15.4 no cuenta con protección contra ataques de repetición de tráfico, se facilitaría a los atacantes internos o externos hacer eavesdropping mediante zbdsniff y zbdump, para luego reutilizar dichas claves con zbreplay y tener acceso no autorizado a áreas restringidas. Nadie garantiza la pérdida de recipientes con la cepa del microbio.    

Ese mismo escenario podemos encontrarlo en la regulación de válvulas de agua, gas y cerraduras digitales en redes ZigBee de industrias y centros comerciales. Un atacante interno o externo puede grabar mensajes intercambiados entre dispositivos padre e hijo durante el servicio de apertura o cierre de válvulas, mediante la ejecución de zbdsniff y zbdump, para luego reutilizarlos en cualquier otro momento con zbreplay. El atacante podría repetir cualquier tráfico previamente observado entre dispositivos padres e hijos hasta que se lleve a efecto una nueva rotación de credenciales, lo cual puede prolongarse indefinidamente debido a una mala implementación o simplemente no existir, tal y como también ocurre muchas veces con redes 802.11, el protocolo ARP y algunas claves de encriptación. Como consecuencia las válvulas se abrirían o cerrarían en momentos inadecuados y se podría provocar un DoS o una catástrofe aun mayor.

Además de eso, muchos de los mensajes intercambiados por los Coordinadores o Enrutadores de la red ZigBee vienen en formato ASCII, lo que permitiría ataques de fragmentación.
  
Por último, como la naturaleza de las redes ZigBee se basa en tener cantidades variables de pequeños dispositivos separados entre sí por 10 metros y repartidos en un espacio determinado. A menos que se utilicen claves OTA, todos ellos deberán tener grabada una copia de su llave en EEPROM (sólo en el caso de ejercer función como padres). Y debido a que cada vez que el aparato se arranca, la clave es movida a RAM se podría atacar al dispositivo padre específico para obtener su clave de encriptación y con ella asociar otro dispositivo fraudulento a la red. Como consecuencia las órdenes que recibieran los hijos asociados a este padre fraudulento, estarían bajo el control del atacante.



Referencias:

http://www.ieee802.org/15/pub/TG4.html
Daintree Networks. "understanding_sensor_networking_whitepaper"
Wright, Joshua. "Hacking The Kinetic Wold"