Publicado el 19 de marzo de 2019
Cómo encontrar servidores mediante los protocolos MQTT y AMQP
Recientemente hemos añadido los protocolos MQ Telemetry Transport (MQTT) y Advanced Message Queuing Protocol (AMQP) a nuestro conjunto de datos. A continuación te explicamos para qué se utilizan estos protocolos, qué riesgos de seguridad conllevan, cómo buscar servidores y dispositivos que utilicen MQTT y AMQP, y cómo proteger esos servidores.
¿Qué es MQTT?
MQTT es un protocolo de mensajería entre máquinas creado en 1999 por Andy Stanford-Clark, de IBM, y Arlen Nipper, de Arcom. Su objetivo inicial era crear un protocolo de mensajería lo suficientemente ligero como para aliviar la carga del ancho de banda de la red. Definición oficial de mqtt.org:
MQTT son las siglas de MQ Telemetry Transport. Se trata de un protocolo de mensajería de publicación/suscripción, extremadamente sencillo y ligero, diseñado para dispositivos con limitaciones y redes con poco ancho de banda, alta latencia o poco fiables. Los principios de diseño consisten en minimizar el ancho de banda de la red y los requisitos de recursos de los dispositivos, al tiempo que se intenta garantizar la fiabilidad y cierto grado de seguridad en la entrega. Estos principios también hacen que el protocolo sea ideal para el emergente mundo "máquina a máquina" (M2M) o "Internet de los objetos" de los dispositivos conectados, y para aplicaciones móviles en las que el ancho de banda y la batería son escasos.
IBM publicó un informe en 2014 sobre cómo podría utilizarse el protocolo MQTT para la explosión del IoT. El problema que identificaron es que los dispositivos IoT debían depender de un enorme número de señales que requerían un modo de comunicación estandarizado. MQTT podría utilizarse para que los dispositivos IoT se conectaran entre sí, sin depender de que todos los dispositivos procedieran de un único proveedor y sin sobrecargar las restricciones de ancho de banda existentes. IBM afirmaba en su informe que MQTT podría utilizarse para "democratizar los dispositivos", permitiendo esencialmente a consumidores y empresas utilizar los dispositivos conectados a Internet para sus necesidades exactas sin verse atrapados en problemas de interconectividad en los que los dispositivos no pudieran comunicarse o funcionar entre sí.
Muchos desarrolladores estuvieron de acuerdo con su afirmación y MQTT se adoptó rápidamente como uno de los protocolos de comunicación más populares para dispositivos conectados a Internet, así como aplicaciones móviles y productos de domótica.
¿Qué es AMQP?
Creado en 2003 por John O'Hara en JPMorgan Chase, el protocolo AMQP sirve como protocolo de comunicación para la mensajería de máquina a máquina, para sustituir al middleware existente, que era algo restrictivo en términos de compatibilidad. Definición oficial en https://www.amqp.org:
El protocolo avanzado de colas de mensajes (AMQP) es un estándar abierto para el paso de mensajes empresariales entre aplicaciones u organizaciones. Conecta sistemas, alimenta los procesos empresariales con la información que necesitan y transmite de forma fiable las instrucciones que logran sus objetivos.
AMQP se utiliza de forma similar a MQTT: sirve como protocolo de comunicación entre sistemas para permitir la interoperabilidad y la fiabilidad. La principal diferencia es que, mientras que MQTT se asocia más a menudo con la comunicación entre dispositivos IoT, AMQP se utiliza más ampliamente como protocolo de comunicación entre una amplia variedad de dispositivos empresariales (piense en bases de datos y sistemas críticos).
AMQP, al igual que MQTT, se utiliza principalmente para permitir que dispositivos de distintos proveedores se comuniquen entre sí, trabajen juntos y se gestionen más fácilmente. Según la entrada del blog de VMWare sobre el protocolo de comunicación, empresas como JP Morgan utilizan AMQP para procesar mil millones de mensajes al día. La NASA lo utiliza para Nebula Cloud Computing. Google lo utiliza para el procesamiento de eventos complejos.
Como puedes imaginar, MQTT y AMQP se utilizan ampliamente con una gran variedad de dispositivos, casos de uso y tanto en el espacio del consumidor como en el de la empresa. Gracias a nuestra perspectiva global única, hemos podido recopilar datos sobre los protocolos MQTT y AMQP para que puedas encontrar los dispositivos y servidores que los utilizan y asegurarte de que están protegidos frente a los ataques.
64K servidores que utilizan el protocolo MQTT, 57K sin cifrar
Al igual que cualquier otro protocolo, MQTT y AMQP presentan vulnerabilidades y los riesgos de seguridad que pueden presentar pueden ser significativos, especialmente cuando se trata de entornos corporativos. Principalmente, los problemas de seguridad se derivan de configuraciones que carecen de cifrado y autenticación. Sin las configuraciones adecuadas y las medidas de seguridad básicas, cualquiera puede espiar las comunicaciones entre los dispositivos que ejecutan estos protocolos.
De los 64.025 servidores que encontramos utilizando el protocolo MQTT, 57.217 dispositivos no utilizan TLS (puerto 1883), lo que significa que no están cifrados y podrían ser espiados en cualquier punto intermedio de la cadena de comunicación. La parte positiva es que 15. 020 utilizan TLS (puerto 8883) y, como mínimo, están cifrados. Aun así, eso deja sin cifrar alrededor del 80% de los servidores MQTT.
Para determinar cuáles de estos servidores MQTT están expuestos y son vulnerables, ejecutamos un informe utilizandola cadena "connection accepted" en el campo "connack.connect_return", que sólo significa que estos dispositivos se conectarían con nosotros para nuestros escaneos.
Para destacar sólo los más vulnerables, obsérvese que 35.397 hosts aceptan conexiones anónimas. En otras palabras, no hay ningún requisito de autenticación para acceder a estos más de 30.000 servicios que funcionan con el protocolo MQTT. Vaya:
Datos brutos
TODO: Insertar tabla: https://censys.io/blog/find-mqtt-amqp-protocolo
Ver informe en Censys
Teniendo en cuenta los importantes riesgos de seguridad que presentan estos dispositivos, vamos a analizar cómo puede encontrarlos con Censys y proteger los que sean propiedad de sus empleados o estén vinculados de otro modo a su red y a su empresa.
102.000 servidores con AMQP
En total, hemos encontrado 102.247 servicios que utilizan el protocolo AMQP (puerto 5672), y más de la mitad de todas las detecciones de AMQP corresponden a Estados Unidos y China. Para buscar servidores que ejecuten AMQP y se asocien a su empresa, sólo tiene que utilizar la etiqueta AMQP y añadir su número de sistema autónomo (AS). Por ejemplo, para buscar corredores AMQP en la Universidad de Michigan:
https://censys.io/ipv4?q=tags%3Aamqp+AND+autonomous_system.asn%3A+36375
Qué hacer si encuentra servidores que ejecutan estos protocolos vinculados a su empresa (o a su red doméstica)
Tanto las etiquetas MQTT como AMQP pueden ser útiles para localizar dispositivos que conoces, por supuesto, pero también para encontrar aquellos que no sabías que estaban en línea pero vinculados a ti o a tu organización. Los dispositivos IoT son conocidos por estar optimizados para ofrecer funciones atractivas, dejando a menudo la seguridad en un segundo plano. Teniendo esto en cuenta, es bueno comprobar continuamente si hay nuevos dispositivos conectados a Internet y asegurarse de que están protegidos.
Para los servidores que ejecutan los protocolos MQTT y AMQP, en concreto, recomendamos:
- Asegúrese de que sus corredores de mensajes emplean un cifrado fuerte, y que cualquier corredor AMQP o MQTT está envuelto en sockets TLS para garantizar la confidencialidad de los mensajes, comprobaciones de integridad y autenticación opcional. Dado que estos canales mueven datos sensibles, TLS puede proporcionar las protecciones de autenticación y autorización necesarias.
- Ponga estos servicios detrás de un cortafuegos. Aislarlos es básicamente la única forma segura de garantizar que tus adversarios no van a acceder a través de estos servidores o dispositivos y conseguir datos confidenciales.