Novedades

El gran simulador (de respuesta a incidentes)

Introducción

El software para ejercicios de simulación de respuesta a incidentes no es tan común en el mercado. No tanto por su complejidad respecto a otro tipo de software, sino porque es útil para algo muy específico, que suele ser provisto por grandes empresas de servicios de consultoría a nivel mundial. Sin embargo, un proyecto a menor escala podría permitir la realización de ejercicios de tablero de una forma práctica y sin tener que prescindir de las funcionalidades planteadas por las herramientas comerciales o privadas, considerando que las plataformas modernas de interacción sólo son accesibles para su uso en grandes corporaciones y organismos gubernamentales.

Diseñando un primer prototipo

A fin de poder crear una plataforma se deben comprender primero las funcionalidades principales esperables:

  • Posibilidad de definir roles para distintos equipos.
  • Canales de recepción de eventos para participantes.
  • Canales de formulación de acciones de participantes.
  • Carga de escenarios con eventos correspondientes.
  • La conexión entre la base de datos de escenarios y el canal de recepción.
  • La presentación de eventos de forma sincronizada y en tiempos predefinidos.
  • La formulación de encuestas durante el ejercicio para generación de estadísticas.

Un abordaje simple es realizar la interacción sobre una plataforma de uso común, como Slack o Discord, similares en muchos aspectos. Un análisis exhaustivo de características, funciones, y modos de licenciamiento, orientado a un prototipo, lleva a inclinarse por Discord dadas sus funciones de asignación granular de roles, chat de texto, salas de voz y video, categorías y canales, y una API disponible libremente con una gran comunidad de desarrolladores y ejemplos existentes.

Otra decisión de diseño es el formato de almacenamiento de escenarios, que admita consultas remotas, y un lenguaje de programación adecuado para cumplir con las funciones mencionadas, que para el caso fue Python. En cuanto al almacenamiento de los escenarios, se seleccionó un formato de planilla de cálculo (tipo Excel) que puede transformarse con facilidad a otros formatos orientados a consulta de datos. Esta decisión obedece a que el diseño de escenarios se refleja típicamente en una planilla conocida como MSEL (Master Scenario Events List) donde se detallan todos los elementos que constituyen la base de los eventos que se inyectarán como piezas de información durante el transcurso del ejercicio (injects) organizados en orden cronológico. Así, cada columna representa un elemento que se define en la etapa de diseño del ejercicio.

En cuanto al mecanismo que permite tomar la información de cada evento y asignarla a cada equipo (canal) se desarrolló un script (bot) y para facilitar la interacción se convirtió la planilla del MSEL en formato xlsx a un archivo con formato JSON, que simplifica las consultas. El bot se preparó para ser ejecutado en un sistema en la nube que disponga de la última versión de Python, y que pueda conectarse y acceder al servidor de Discord en cuestión para realizar las inyecciones de los eventos (injects). Una vez activado el bot, su control se realiza desde la plataforma Discord por parte de los usuarios habilitados para manejarlo (facilitadores) mediante los comandos programados para esto: ping, para chequear conexión; start, para comenzar el flujo de eventos; y resume, para retomar o iniciar desde un punto determinado. Para resolver la cronología definida, el bot calcula el tiempo entre eventos en lugar de observar la hora en tiempo real. Antes de ejecutarse, el bot se preconfigura con la nomenclatura de canales según los requerimientos de cada uso.

Este proyecto se denominó BORIS (Bot para Orquestación de Respuesta a Incidentes de Seguridad) y se disponibilizó públicamente para ser descargado de un repositorio en línea en la plataforma de desarrollo colaborativo y control de versiones GitHub.

El bautismo de fuego

Si bien los ejercicios de este tipo son propios de las grandes corporaciones, nada impide realizar versiones que puedan llevarse al salón de clase, con las adaptaciones correspondientes. Por esto se planteó el uso de BORIS para el desarrollo de simulaciones adaptadas a cursos universitarios de grado o de formación profesional en programas que incluyeran temas de gestión de la seguridad de la información, resiliencia y continuidad de negocios, y respuesta a incidentes, de forma tal que puedan ejercitarse las técnicas y buenas prácticas, y permita a los estudiantes experimentar situaciones similares a las que encontrarían en el mundo real. Las encuestas posteriores a la realización de los ejercicios en un plazo de un año, arrojaron resultados muy positivos en relación a la capacidad del modo de aprendizaje que se habilita con este tipo de prácticas.

Luego se decidió ampliar los límites en las aplicaciones típicas de BORIS ante este tipo de ejercicios, para proponerse a organizaciones y empresas medianas que, dado el tamaño de sus operaciones, no son las que típicamente dispondrían de servicios del estilo, y probablemente no contarían con todo el personal con el conocimiento interno para desarrollarlo. Como ya se señaló, las simulaciones de escritorio estuvieron tradicionalmente asociadas a las grandes empresas y organismos de gobierno, debido a su tamaño, cantidad de áreas, personal, y capacidad económica de contratación de un servicio o bien conocimiento propio para producirlo. Los ejercicios con diferentes empresas medianas dieron muy buenos resultados, y las encuestas posteriores arrojaron datos muy positivos en cuanto a la experiencia de la simulación de escenarios, en relación a los casos reales.

BORIS evoluciona

El funcionamiento esperado de BORIS tanto en el ámbito de la educación como en el nivel comercial derivó en la necesidad de un crecimiento que no podría haberse realizado con solo un script en Python. Se tomó entonces el feedback de exalumnos, colegas, profesionales y clientes de empresas, en cuanto a las características posibles para la herramienta, y se encontró que lo más solicitado fue la posibilidad de interacción con otras plataformas, es decir incluir la posibilidad de que el bot logre interactuar con distintas plataformas de comunicaciones como Slack, Telegram, Whatsapp, Microsoft Teams.

Dado que las APIs de cada plataforma de comunicaciones son diferentes, se comenzó programando un bot distinto para poder interactuar con cada una, lo cual convertía el proyecto en un conjunto de bots más que en una herramienta que pudiera resolver las interacciones con diversos sistemas. Esta problemática llevó al diseño de un marco de trabajo, o framework, que pudiera proveer una arquitectura general para poder interactuar con cada plataforma de manera modular, con la posibilidad de incluir tantos módulos adicionales como plataformas de comunicaciones existan. La estructura del framework diseñado se muestra a continuación.

Estructura del framework

De esta manera, se creó una estructura modular que tiene como centro la orquestación de los eventos almacenados en una base de datos maestra (MSEL) junto a una serie de reglas definidas para cada ejercicio (opcional) y una configuración que permita definir los parámetros técnicos de la plataforma utilizada, como ser los tokens de acceso. Dicho MSEL se construye para cada ejercicio en base a una historia, que a su vez está fundamentada en las definiciones de sector o industria, y el tipo de incidente base elegido. El orquestador se comunica con el módulo específico de la plataforma y esto permite que los eventos sean presentados en los canales de entrada correspondientes a cada una según la configuración de su módulo.

El proyecto pasó entonces de ser un único bot en Python a ser un framework, por lo cual se redefinió como T3SF (Technical TableTop Exercise Simulation Framework). Para la documentación del proyecto se utilizó la plataforma de alojamiento de documentación de software gratuito de código abierto Read the Docs, que produce documentación escrita con el generador Sphinx. Del mismo modo, el código fuente del framework está publicado para su uso de forma libre y abierta bajo licencia GPLv3 en un repositorio de la plataforma GitHub. https://github.com/Base4Security/T3SF.

El framework tal como está descrito, y con todas sus características funcionales, fue utilizado en diferentes ejercicios posteriores en empresas y organizaciones, con resultados satisfactorios, y se mantiene en constante mejora con la corrección de fallas y el agregado de funcionalidades como las decisiones preestablecidas ante ciertos eventos, o el flujo variable del ejercicio según acciones y respuestas de los participantes.

Conclusiones

Los ejercicios de simulación de respuesta a incidentes de ciberseguridad demostraron ser una herramienta experiencial para ayudar a mejorar las capacidades de reacción ante eventos adversos, a través de ensayos especialmente diseñados para estresar los puntos específicos que se desean, en base a los procesos y procedimientos de una organización. La aplicación en entornos educativos resultó útil al exponer a los estudiantes a situaciones ficticias sin necesidad de haberlas experimentado con anterioridad en entornos operacionales o de trabajo, lo que permitió enriquecer la experiencia de los participantes.

La inclusión de plataformas de software para la realización de este tipo de pruebas otorga un mayor realismo a los entornos simulados, a la vez que permite expandir los escenarios ficticios y escalar los ejercicios en sí. Mediante el desarrollo de una herramienta libre y abierta para tal fin, esta posibilidad queda abierta para todo ámbito, ya sea educativo o profesional, para que se puedan evitar las limitaciones del software comercial, cuyos costos son prohibitivos para la mayoría de los entornos. De esta manera, el resultado del proceso de innovación aplicado a la ciberseguridad derivó en una solución libre y abierta que cualquier organización puede utilizar para ejercitar sus capacidades de respuesta a incidentes.