sábado, abril 15, 2017

Un bot de Telegram protegido con Latch en un Datacenter

Como es sabido, una de las funcionalidades atractivas y muy utilizadas en Telegram es la posibilidad de crear e interactuar con bots. La API para crear bots de Telegram es pública y justamente por eso es posible encontrar muchísimas implementaciones de bots creados para ella también de forma pública.

Figura 1: Un bot de Telegram protegido por Latch en un Datacenter...

Un bot de Telegram es un programa que se ejecuta en un sistema propio (un sistema del tipo C&C) y que realiza las acciones que el usuario le solicite a través de mensajes, llamados “ordenes”, enviados desde la cuenta del mismo Telegram por chat y con en el siguiente formato: /help, /ping, /lo_que_se_desee_hacer. Ya hemos visto ejemplos en varios artículos aquí:
- Pi Guardian: Video-Vigilancia controlada por un bot de Telegram
- Usar bots de Telegram para crear una botnet
- Controlar Sinfonier con un bot de Telegram
Los bots son una gran herramienta a la hora de querer difundir información entre miembros de un grupo de usuarios. Al utilizar Telegram como canal de comunicación, se aprovecha del cifrado de la conexión del chat, y permite utilizar cuentas anónimas, es decir sin la necesidad de identificar a los usuarios reales o a la organización que lo ha implementado. E incluso puedes seguir este blog "El lado del mal" por Telegram.

Figura 2: Demo de Pi Guardian controlado por un bot de Telegram

Todo hace pensar que es ideal entonces para administraciones remotas. Sin embargo, a pesar de las ventajas de este modelo, existe un gran desafío al momento de querer crear un bot que brinde acceso a datos o servicios sensibles de una organización porque, por defecto, no se permite autenticación y autorización de usuarios. Es decir, dada ciertas condiciones, cualquier persona puede agregarse a un grupo y acceder a datos sensibles del mismo.

Figura 3: Demo de Sinfonier controlado por un bot de Telegram

Una posible solución sería no utilizar bots para manipular información confidencial y, si bien este acercamiento es cierto en la mayoría de los escenarios, deberíamos plantearnos ¿qué sucede si realmente queremos maximizar los beneficios y posibilidades que brindan los bots para ejecutar tareas sencillas y repetitivas (aunque aún confidenciales)?

Un bot de Telegram protegido con Latch en un Datacenter

El equipo técnico del DataCenter de Telefónica de Argentina está compuesto por personas que se hacen este tipo de preguntas y que intentan buscarles respuestas, y por ello crearon un bot que permite agregar un método de autenticación y autorización robusto mediante la utilización de una herramienta conocida por los lectores de este blog: Latch.

La solución se basa en integrar un middleware para sistemas internos - sistemas de monitoreo, medición de consumos energéticos, temperaturas, sistemas de ticketing, etcétera - con un bot de Telegram, que pueda ser consultado desde los teléfonos móviles del personal que, previamente, debe acceder a ellos mediante Latch que actuará como Segundo Factor de Autorización.

Figura 4: Configuración de la app de Latch para controlar el bot de Telegram

Las ventajas son muchas. Una vez que el usuario se haya autenticado y aprobado su acceso, puede ejecutar tareas directamente sobre los sistemas internos del CPD y de esta manera se puede automatizar y acelerar el tratamiento de tareas rutinarias y repetitivas, minimizar el tiempo que un operador debe pasar dentro del centro o frente a una consola, garantizar que todas estas tareas son realizadas por personal autorizado.

Como siempre, existe una primera fase de alta y validación de usuarios que serán agregados al grupo de Telegram y luego se usa Latch para evitar transmitir datos que tienen cierto nivel de sensibilidad, de forma no autorizada. Si un usuario “cierra” su Latch, la aplicación informa que “alguien” ha intentado acceder a su cuenta y se bloquea el acceso. El proceso de creación de esta interesante implementación, sería de la siguiente manera:

Figura 5: Código para integrar Latch en nuestro bot de Telegram

Antes que nada registrarse en Latch como desarrollador y crear una aplicación. Es bueno recordar que no es necesario brindar ningún dato que nos relacione a una organización, el correo electrónico o el teléfono, los datos son solo representativos y sirven para obtener el Application ID y el Secret de la aplicación creada. Ahora puedes gestionar hasta los permisos que quieres dar a cada Secret. En este ejemplo tienes un paso a paso de cómo integrar una aplicación web con Latch.

Figura 6: SDK de Latch para lenguaje Python

En el bot de Telegram se utilizan estos datos para procesar la validación del usuario de Latch. En este caso el código del bot propiamente dicho está creado en Python por lo que es necesario descargar la el SDK Python correspondiente de Latch y luego realizar la autenticación a través de los datos obtenidos previamente (app_id y secret_key):

Figura 7:  Control de ejecución de órdenes con Latch

Una vez creado el bot de Telegram, se debe proceder a programar la integración con Latch y agregar las ordenes que se desee que el bot lleve a cabo. El bot tiene una serie de parámetros y opciones que deberán ser agregados y que servirán para interactuar con el mismo. Por ejemplo, en este caso “/remedio” serviría para descargar e instalar una actualización determinada en el sistema operativo.

Funcionamiento del bot de Telegram protegido por Latch

Ya con todo el desarrollo terminado, así es como se ve la interacción del usuario (operador), para ejecutar tareas en el centro de datos a través del bot de Telegram que se ha creado, protegido con Latch.

Figura 8: El bot ejecuta el comando porque el Latch está abierto

Y así se vería el resultado al momento de cerrar el Latch para un usuario determinado, es decir, deshabilitar la autorización para que ejecute acciones y por tanto el bot no las ejecutará.

Figura 9: Operación denegada por el bloqueo de Latch

Como puede verse, es sencillo crear un servicio que utilice un bot de Telegram para intercambiar información con un grupo de usuarios previamente autorizados con Latch y de esa forma potenciar el uso de ambas herramientas para realizar tareas sencillas, obteniendo un gran beneficio para todos. Por ejemplo, obtener el estado de un servidor o ejecutar un proceso urgente a distancia y, al mismo tiempo, proteger información sensible de la organización.

Autor: Claudio Caracciolo (@holesec)
CSA de ElevenPaths en Argentina

1 comentario:

  1. Ahora que la autorizacion esta cubierta por Latch, el proximo paso seria la confidencialidad? Si bien es cierto que los mensajes van por HTTPS, con cada vulnerabilidad nueva que aparece, lo correcto seria enviar la informacion cifrada por uno mismo tambien? Me imagino un cliente de Telegram donde se pueda importar una clave privada y el servidor nos mande informacion cifrada con nuestra clave publica de manera que solo nosotros podamos leerla! :D

    ResponderEliminar