viernes, marzo 08, 2019

AntiDDoS para todos los dispositivos IoT usando un GSM Shield hecho con Stack SMS

Este año, hemos vuelto a tener el honor de participar en los seminarios de la GSMA en el Mobile World Congress. El año pasado ya fuimos a mostrar nuestro querido DirtyTooth y parece ser que les gustó la idea de presentar alguna demo relacionada con la seguridad dentro sus seminarios sobre IoT. Así que este año hemos vuelto con una demo de nuestro Stack SMS.

Figura 1: AntiDDoS para todos los dispositivos IoT usando un GSM Shield hecho con Stack SMS 

Stack SMS es un SDK (disponible para Python, Android y Node.js) desarrollado por Ideas Locas CDO que nos permite abrir un nuevo canal de comunicaciones hacia nuestra infraestructura utilizando la red GSM y más concretamente utilizando los SMS o mensajes de texto. Esta posibilidad es lo que nos habilitó poder crear el servicio SafePost (antes Pigram) para tener servicios de Internet aún no teniendo de datos. Y también lo utilizamos en el chat para maximizar la comunicación en carrera dentro del equipo ciclista Movistar Team.



Figura 2: Chat con SMS Stack en Movistar Team


En el mundo de IoT, contar con este canal GSM significa la posibilidad de tener una línea de backup. Esto quiere decir que podríamos, por ejemplo, tener control sobre cualquiera de nuestros dispositivos utilizando Stack SMS simplemente con tener cobertura GSM, es decir, sin datos.

Figura 3: Formato básico de trama de comunicaciones Stack SMS

Dicho control se realiza empaquetando las órdenes dentro de cadenas de mensajes SMS. Stack SMS hace la parte más complicada, encapsular y gestionar la recepción, integridad y seguridad de la información enviada. Puedes consultar el paper sobre Stack SMS en el enlace GitHub de la aplicación.

Figura 4: Paper de Stack SMS 

Pero si quieres aprender cómo utilizarlo en una aplicación móvil, lo mejor es que te veas este vídeo de nuestra serie de Code Talks For Developers, donde mis compañeros del departamento Pablo González Pérez y Lucas Fernández Aragón nos hablan en profundidad de Stack SMS:


Figura 5: CodeTalk  for Developers sobre Stack SMS


Volviendo a la charla de la GSMA en el MWC de este año, buscamos una aplicación práctica de Stack SMS relacionada con la seguridad de los dispositivos IoT. Finalmente nos decidimos a implementar una posible forma de recuperar el control sobre dichos dispositivos de la infraestructura mientras estamos siendo afectados por un ataque tipo DDoS. Es decir, que, a pesar de no poder acceder desde Internet a nuestra infraestructura, con Stack SMS podemos abrir otro canal a través del GSM para al menos, poder enviar órdenes concretas a cualquier dispositivo que tuviera dicha conexión.

Figura 6: Estado de nuestra red después de un ataque DDoS.
Perdemos el control de los dispositivos ubicados dentro de nuestra infraestructura.

¿Cómo sería todo el proceso? 

Para implementar Stack SMS el primer paso será desarrollar nuestra capa de aplicación utilizando el SDK donde podemos definir de la forma que mejor encaje en nuestro proyecto, todos los detalles de funcionamiento. De hecho, en el paper hay disponibles varios ejemplos que van desde juegos, pasando por una aplicación de chat hasta el control de dispositivos IoT utilizando una Raspberry Pi (ejemplo que precisamente fue el que usamos para la demo y que veremos más adelante).

Figura 7: Implementación de Stack SMS sobre una Raspberry Pi y un módulo GSM

El siguiente paso será enviar las ordenes utilizando el encapsulamiento de Stack SMS. Este se encargará de aplicarle la seguridad necesaria a la transmisión (PSK y cifrado AES-CTR) así como de fragmentar la orden u ordenes enviadas. El dispositivo receptor recibirá los SMS codificados con Stack SMS y procederá a ejecutar los comandos recibidos que previamente hemos programado sobre el mismo.

Finalmente, este enviará igualmente de vuelta información sobre el estado final del dispositivo y el resultado de las órdenes ejecutadas. Por ejemplo, la orden podría ser cambiar una contraseña, apagar un dispositivo, reiniciarlo, etcétera.

Figura 8: Funcionamiento de Stack SMS.

Esta teoría aplicada a la demo propuesta con DDoS funcionaría de la siguiente manera. El primer paso será conectar los dispositivos que queramos controlar con Stack SMS a la red GSM (con una SIM). En nuestro caso, utilizamos una Raspberry Pi con un shield GSM haciendo las funciones de router y los dispositivos los conectamos directamente desde los puertos GPIO representados por leds.

En caso de ataque DDoS, desde Internet no podremos acceder a los dispositivos pero sí podremos enviar el comando que queramos directamente desde otro canal seguro, totalmente independiente al otro (Internet) que nos permitirá retomar el control o al menos realizar operaciones dentro de nuestra infraestructura como ya hemos comentado anteriormente.

Figura 9: Retomando el control de un ataque DDoS con Stack SMS.

Resumiendo, y centrándonos en este ataque DDoS, ¿qué acciones podríamos realizar con Stack SMS?:
  • Alcanzar dispositivos detrás de nuestra infraestructura.
  • Mandar y ejecutar ordenes.
  • Cambiar contraseñas.
  • Apagar o encender dispositivos, relés, motores, etcétera.
  • Enviar datos a través de la LAN.
  • Reiniciar dispositivos críticos.
  • Etcétera.
En el siguiente vídeo se puede apreciar una demo similar a la que realizamos en el MWC. Para ello utilizamos una pequeña aplicación en Android que se encargaba de enviar la orden de apagado o encendido a uno de los tres leds de colores conectados a los puertos GPIO de una Raspberry Pi con un shield GSM conectado tal y como podemos ver en el siguiente vídeo:

Figura 10: PoC IoT with GSM Shield

Stack SMS está disponible para su estación directamente con "pip install SMS-Stack" o descargándolo desde la siguiente dirección:

Figura 11: SDK de SMS Stack en GitHub

Seguiremos hablando de Stack SMS más adelante mostrando nuevos proyectos, imágenes de la charla, así como nuevas implementaciones que vayamos desarrollando. Os animamos también a probarlo y a contarnos vuestras ideas e impresiones.

Happy Hacking Hackers!!!

Autor: Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" y del blog Cyberhades.

No hay comentarios:

Publicar un comentario