Introducción a Zigbee

El propósito de este artículo es analizar de qué forma se aplican en la industria las capacidades de seguridad de protocolos en general, viendo el caso particular de Zigbee.

Si se desea más información sobre las capacidades de seguridad de Zigbee, se puede encontrar en este siguiente artículo de Incibe.

Zigbee: qué es

Zigbee es un protocolo inalámbrico basado en el estándar IEEE802.15.4, cuyas principales características es que tiene una latencia muy baja, utiliza bandas de frecuencia médicas, industriales y científicas sin licencia, y tiene un consumo energético muy bajo, lo que es extremadamente útil en dispositivos IoT, dado que su autonomía es mayor que otros protocolos inalámbricos.

Está muy presente en domótica y, poco a poco, se está introduciendo también en industria, medicina y otros campos. En este artículo vamos a ver principalmente 3 dispositivos Schneider basados en Zigbee.

Su rango de cobertura varía entre los 10 y 75 metros.

Dispositivos

Los dispositivos a analizar son:

  • Un pulsador Harmony ZBRM01
  • Un pulsador Harmony ZBRT1
  • Un final de carrera XCKW131

Son dispositivos industriales, marca Schneider (muy extendida y reconocida en el sector) y con un precio bastante elevado, varios cientos de euros cada uno de ellos.

La única diferencia entre los pulsadores es que uno está diseñado para empotrar en una máquina o armario (por ejemplo, en elementos móviles para evitar cableado) y el otro es un botón diseñado para su uso portátil. Por ejemplo, para que una persona sin puesto fijo pueda enviar una señal a la máquina o instalación.

El final de carrera es un sensor de contacto. Detecta piezas o elementos móviles cuando entran en contacto con él. También se le suele llamar interruptor de posición, ya que su función principal es saber la posición de otros elementos.

En la imagen, de izquierda  a derecha, puede verse el pulsador ZBRM01, el final de carrera XCKW131 y el pulsador ZBRT1, en estado de reposo los 3.

Ilustración 1: De izquierda a derecha: Pulsador portátil, final de carrera, pulsador para empotrar

Cada elemento tiene una parte receptora, que se puede cablear a un dispositivo PLC, para recoger la señal eléctrica que nos permite saber qué botón se ha pulsado o si el final de carrera detecta un elemento o no.

En la siguiente imagen pueden verse los receptores de los 3 dispositivos (de nuevo, de izquierda a derecha, el receptor del pulsador ZBRM01, el del  XCKW131 y el del ZBRT1) en estado de reposo los 3. Se sabe que están en reposo pues el PLC no tiene ninguna entrada activa.

Ilustración 2: Los 3 receptores junto a un PLC Siemens. No hay ninguna señal activa

En la siguiente imagen, puede apreciarse que el PLC tiene una entrada activa, pues tiene una luz verde en la parte derecha, arriba, correspondiente a la entrada I0.1 (en el círculo rojo vemos las señales de entrada. La segunda por la izquierda está activa, iluminada). Esto es porque el final de carrera está detectando una pieza (está pulsado).

Ilustración 3: Los 3 receptores junto al PLC. Vemos una señal de entrada activa (final de carrera activo)

Qué harían estos dispositivos en una instalación real está fuera del presente análisis, pero algunos ejemplos podrían ser detener o poner en marcha una instalación, activar o desactivar una cinta transportadora, etc

Herramientas para el análisis

Para el presente análisis se ha utilizado una antena zigbee Conbee2, una antena USB que se puede encontrar por 40 euros en Amazon y una Raspberry 3b+. La antena es compatible con Windows o Linux

Las instrucciones de instalación pueden encontrarse en https://phoscon.de/en/conbee2/install

Una vez instalada la antena, será necesario instalar la aplicación ZShark, que permitirá escuchar el tráfico de la red y analizarlo con Wireshark. La instalación de ZShark puede encontrarse aquí: https://github.com/dresden-elektronik/deconz-rest-plugin/issues/405

Configuración de las herramientas

Se empieza ejecutando ZShark, llegando a la pantalla siguiente:

Ilustración 4: Iniciando ZShark

En ella, se debe seleccionar en “Connect to Device” la antena receptora correspondiente. La primera vez que se instale una antena,  pedirá permiso para actualizar el firmware, acción que realiza el programa automáticamente. A continuación, se debe conectar pulsando “Connect”

En la siguiente pantalla, se puede averiguar en qué canal están los dispositivos:

Ilustración 5: Configurando ZShark

En Zigbee hay disponibles varios canales según la frecuencia de los distintos dispositivos. Dichos canales van siempre del 11 al 25. Para saber en qué canal están emitiendo nuestros dispositivos, habrá que ir escuchando el tráfico (con el botón Start) para ver si se empieza a recibir paquetes Zigbee. En la imagen se puede ver que en el canal 11 se han recibido 8 paquetes, por lo que es el canal correcto. Se debe dejar ZShark corriendo en segundo plano y abrir Wireshark.

Primero, se debe configurar Wireshark para recibir el tráfico de ZShark. Hay que escuchar el tráfico en la interfaz a capturar seleccionamos loopback, y una vez dentro de wireshark, aplicar el siguiente filtro:

Udp.port==17754 && !icmp

Para escuchar en el puerto 17754 de UDP e ignorar los paquetes ICMP:

Ilustración 6: Wireshark preparado para analizar el tráfico

Una vez configurado, se puede ver el tráfico generado por los distintos dispositivos:

Ilustración 7: Analizando Zigbee

Como se puede analizar en la imagen, el tráfico entre los pulsadores y los receptores NO está cifrado. Se puede incluso observar en la información que nos proporciona el disector que se sabe cuándo se ha pulsado el botón (“Press 1 of 1”) y cuando se ha soltado (“Release 1 of 1”)

A continuación, se repite el proceso con un pulsador Xiaomi, un pulsador de tipo doméstico (para domótica) cuyo precio no pasa de 20 euros:

Ilustración 8: Zigbee cifrado

Como se puede ver en la captura, el tráfico está cifrado, habiendo introducido cabeceras de seguridad, por lo que no somos capaces de identificar qué está pasando.

Conclusiones

Este es un ejemplo claro de lo que nos encontramos en nuestro día a día en la industria. A pesar de la criticidad de muchos procesos, seguimos encontrando dispositivos diseñados sin tener en cuenta la ciberseguridad de los mismos. En este caso, los 3 dispositivos Schneider fueron adquiridos en Agosto de 2022, no estamos hablando de dispositivos con muchos años de antigüedad, más bien al contrario.

Además, son dispositivos de un precio bastante alto, de una marca muy reconocida y, en teoría, fiable y asentada.

En cambio, el botón Xiaomi, siendo para aplicaciones domésticas, sin criticidad y con un precio muy inferior,  sí que se ha diseñado teniendo en cuenta la ciberseguridad de los datos transferidos.

No debemos sencillamente confiar en que, al adquirir un sensor o actuador de una marca concreta y con un precio elevado, estemos adquiriendo un elemento diseñado teniendo en cuenta la ciberseguridad, ya que podemos llevarnos una (desagradable) sorpresa, ya que un atacante podría analizar el intercambio de datos de nuestra instalación, averiguando datos valiosos del proceso, o incluso inyectar tráfico malicioso haciendo que nuestro proceso no tenga la correcta trazabilidad o que no se realice correctamente, llegando incluso a bloquear la fabricación.

Comments

  1. Genial artículo, gracias!
    Últimamente ando con experimentos con RF y la parte de poder analizar paquetes es algo que tengo que elaborar más para según que protocolos a auditar. Mola saber que con zigbee se puede.

    Un saludo