Microsoft ha lanzado un simulador de ciberataques de código abierto que permite a los investigadores de seguridad y científicos de datos crear entornos de red simulados y ver cómo les va contra los agentes cibernéticos controlados por IA.
Este simulador se lanza como un proyecto de código abierto llamado «CyberBattleSim» construido usando una interfaz Open AI Gym basada en Python.
Veamos cómo funciona y cuáles son los objetivos de este simulador de ciberataques.
Indice
¿Qué es CyberBattleSim?
Para ayudar a las organizaciones a prepararse para un ciberataque, Microsoft ha lanzado una nueva herramienta que ofrece un modelo de simulación de entrenamiento basado en aprendizaje reforzado. El código fuente de CyberBattleSim está hecho en Python y la interfaz OpenAI Gym, es de código abierto bajo la licencia MIT y se menciona que las marcas comerciales o logotipos de proyectos, productos o servicios, contienen el uso autorizado de las marcas comerciales o logotipos de Microsoft y está sujeto a las Pautas de marcas comerciales y marcas comerciales de Microsoft.
CyberBattleSim es una plataforma de investigación de experimentación para investigar la interacción de agentes automatizados que operan en un entorno de red empresarial abstracto simulado. La simulación proporciona una abstracción de alto nivel de las redes informáticas y los conceptos de ciberseguridad. Su interfaz Open AI Gym basada en Python permite el entrenamiento automatizado de agentes utilizando algoritmos de aprendizaje por refuerzo.
¿Cómo funciona?
El entorno de simulación está parametrizado por una topología de red fija y un conjunto de vulnerabilidades que los agentes pueden utilizar para moverse lateralmente en la red. El objetivo del atacante es apoderarse de una parte de la red explotando las vulnerabilidades encontradas en los nodos de la computadora.
A medida que el atacante intenta propagarse por la red, un agente de defensa observa la actividad de la red e intenta detectar cualquier ataque que esté ocurriendo y mitigar el impacto en el sistema desalojando al atacante.
Se proporciona un defensor estocástico básico que detecta y mitiga los ataques en curso basados en probabilidades de éxito predefinidas. Se implementa la mitigación al volver a generar imágenes de los nodos infectados, un proceso modelado de manera abstracta como una operación que abarca múltiples pasos de simulación.
Para comparar el desempeño de los agentes, observamos dos métricas: el número de pasos de simulación que se tomaron para lograr su objetivo y las recompensas acumulativas sobre los pasos de simulación a lo largo de las épocas de entrenamiento.
El entorno consiste en una red de nodos informáticos. Está parametrizado por una topología de red fija y un conjunto de vulnerabilidades predefinidas que un agente puede explotar para moverse lateralmente a través de la red.
Para construir su entorno simulado, los investigadores crearán varios nodos en la red e indicarán que los servicios se están ejecutando en cada nodo, sus vulnerabilidades y cómo se protege el dispositivo.
Luego, los agentes cibernéticos automatizados (actores de amenazas) se implementan en el entorno, donde seleccionan al azar acciones para realizar contra los diversos nodos para tomar el control sobre ellos.
Si bien muchas de estas actividades pueden desencadenar alertas en un sistema XDR o SIEM, Microsoft espera que la comunidad de seguridad pueda usar este simulador para comprender mejor cómo la IA puede analizar los movimientos posteriores a la infracción y defenderse mejor de ellos.
¿Por qué un entorno de simulación?
Los entornos de ejecución de emulación brindan alta fidelidad y control: puede tomar código o binarios existentes y ejecutarlos directamente en máquinas virtuales que ejecutan sistemas operativos completos y conectados a través de una red virtualizada, al tiempo que brinda acceso al estado completo del sistema. Sin embargo, esto tiene un coste de rendimiento.
Si bien los entornos simulados adolecen de falta de realismo, tienden a ser ligeros, rápidos, abstractos y más controlables, lo que los hace más susceptibles a la experimentación con el aprendizaje por refuerzo.
Las ventajas de la simulación incluyen:
- Abstracción de nivel superior: podemos modelar aspectos del sistema que nos importan, como la comunicación de red a nivel de aplicación frente a la simulación de red a nivel de paquete. Podemos ignorar los detalles de bajo nivel si se considera innecesario (por ejemplo, sistema de archivos, registro).
- Flexibilidad: la definición de nuevos sensores de máquina es sencilla (por ejemplo, no requiere cambios de código de controlador / de bajo nivel); podemos restringir el espacio de acción a un subconjunto relevante y manejable.
- El estado global se puede capturar de manera eficiente, lo que simplifica la depuración y el diagnóstico.
- Un espacio de tiempo de ejecución ligero: se ejecuta en la memoria en una sola máquina / proceso.
Podemos explorar el uso de tecnologías de emulación en el futuro, en particular con fines de evaluación comparativa, ya que proporcionaría una evaluación más realista del desempeño de los agentes.
Un principio de diseño adoptado es que la simulación modele la complejidad suficiente para representar las técnicas de ataque de la matriz MITRE mientras se mantiene la simplicidad necesaria para entrenar eficientemente a un agente utilizando técnicas de Aprendizaje por refuerzo.
En el lado del ataque, la simulación actual se enfoca más particularmente en la Lateral movementtécnica que es intrínseca a todos los ataques posteriores a la infracción.
Objetivos del proyecto
Se considera este proyecto como una plataforma de experimentación para realizar investigaciones sobre la interacción de agentes automatizados en entornos de red simulados abstractos. Con el código abierto, se pretende alentar a la comunidad de investigadores a investigar cómo interactúan y evolucionan los agentes cibernéticos en dichos entornos de red.
La simulación que proporciona es ciertamente simplista, pero tiene ventajas. Su naturaleza altamente abstracta prohíbe la aplicación directa a los sistemas del mundo real, proporcionando así una protección contra el posible uso nefasto de agentes automatizados entrenados con él. Al mismo tiempo, su simplicidad nos permite centrarnos en aspectos de seguridad específicos que se estudiarán y experimentarán rápidamente con algoritmos de inteligencia artificial y aprendizaje automático recientes.
Por ejemplo, la implementación actual se centra en las técnicas de ciberataques de movimiento lateral, con la esperanza de comprender cómo las afecta la topología y la configuración de la red. Con este objetivo en mente, no era necesario modelar el tráfico de red real.
En el lado algorítmico, proporciona algunos agentes básicos como puntos de partida, pero existe curiosidad por saber cómo se comparan los algoritmos de aprendizaje por refuerzo de última generación con ellos. El gran espacio de acción intrínseco a cualquier sistema informático es un desafío particular para el aprendizaje por refuerzo, en contraste con otras aplicaciones como los videojuegos o el control de robots.
Capacitar a los agentes que pueden almacenar y recuperar credenciales es otro desafío que se enfrenta al aplicar técnicas de RL donde los agentes generalmente no cuentan con memoria interna. Estas son otras áreas de investigación en las que la simulación podría utilizarse con fines de evaluación comparativa.
Otras áreas de interés incluyen el uso responsable y ético de los sistemas autónomos de ciberseguridad: ¿Cómo diseñar una red empresarial que dé una ventaja intrínseca a los agentes defensores? ¿Cómo realizar una investigación segura destinada a defender a las empresas contra los ciberataques autónomos y, al mismo tiempo, evitar el uso nefasto de dicha tecnología?
¿Qué tipo de vulnerabilidades y ataques admite la simulación?
El entorno del gimnasio de simulación está parametrizado por la definición de red, que consiste en el propio gráfico de red subyacente junto con la descripción de las vulnerabilidades admitidas y los nodos en los que están presentes.
Dado que la simulación no ejecuta ningún código, no hay forma de implementar vulnerabilidades y exploits. En cambio, modela cada vulnerabilidad de manera abstracta definiendo:
- una condición previa que determina si la vulnerabilidad está activa en un nodo dado;
- la probabilidad de que un atacante pueda aprovecharla; y
- los efectos secundarios de un exploit exitoso.
Cada nodo tiene un conjunto de propiedades nombradas asignadas. La condición previa se expresa luego como una expresión booleana sobre el conjunto de posibles propiedades de nodo (o banderas).
Resultados de vulnerabilidad
Cada vulnerabilidad tiene un resultado predefinido que puede incluir:
- Un conjunto de credenciales filtrado;
- Una referencia filtrada a otro nodo de la red;
- Información filtrada sobre un nodo (propiedades del nodo);
- Ownerhsip a un nodo;
- Escalada de privilegios en el nodo.
Los ejemplos de vulnerabilidades remotas incluyen:
- Un sitio de SharePoint que expone credenciales (pero no necesariamente el ID de la máquina remota);
- Una vulnerabilidad ssh que otorga acceso a la máquina;
- Un proyecto de github que filtra credenciales en el historial de confirmaciones;
- Un sitio de SharePoint con un archivo que contiene el token SAS para la cuenta de almacenamiento;
Ejemplos de vulnerabilidades locales:
- Extraer token de autenticación o credenciales de un caché del sistema;
- Escalada a privilegios del sistema;
- Escalada a privilegios de administrador.
Las vulnerabilidades pueden definirse in situ a nivel de nodo o pueden definirse globalmente y activarse mediante la expresión booleana de condición previa.