Hola a todos!
Nos hacemos eco de otro articulo de seguridad del blog de Microsoft, publicado el pasado 19 de agosto.
En la actualidad, ofrecemos Cloud Katana de código abierto, una aplicación sin servidor nativa de la nube construida sobre las funciones de Azure para evaluar los controles de seguridad en la nube y los entornos de nube híbrida. Actualmente solo cubrimos casos de uso en Azure, pero estamos trabajando para extenderlo a otros proveedores de la nube.
Principios de diseño de Cloud Katana:
Cloud Katana fue diseñado y desarrollado bajo los siguientes principios:
- Un modelo de ejecución sin servidor.
- Compute bajo demanda como una API web.
- Definiciones de ataques basados en YAML.
- Ejecución con estado orquestada.
- Autenticación y autorización seguras.
- Integración de identidad gestionada.
- Control de acceso granular a los recursos de Azure.
- Clientes independientes del lenguaje de programación.
Cobertura en la nube y en las instalaciones.
Un modelo de ejecución sin servidor:
Cloud Katana es una solución nativa de la nube que se basa en conceptos de plataforma como servicio (PaaS) para proporcionar una solución basada en eventos simplificada y escalable sin preocuparse por implementar y mantener la infraestructura subyacente utilizada para ejecutar simulaciones.
Para satisfacer esta necesidad, Cloud Katana usa Azure Functions para abstraer la capa del sistema operativo del código a través de un modelo de facturación de pago por ejecución que se escala automáticamente en función de las invocaciones de activación.
Compute bajo demanda como una API web:
Los pasos de simulación se representan como bloques de código denominados funciones y se invocan a través de solicitudes HTTP a través de una API web sin servidor integrada.
Con esta función, uno podría simplemente enviar una solicitud HTTP con información sobre la simulación específica y esperar a que la infraestructura subyacente procese la solicitud. Actualmente, todas las funciones están escritas en PowerShell (sujetas a cambios) y categorizadas siguiendo el marco MITRE ATT&CK.
Definiciones de ataques basados en YAML:
Cada simulación de ataque se documenta en un formato basado en YAML para agregar metadatos como el título, la descripción, las asignaciones de ATT&CK, la entrada y salida esperadas e incluso las condiciones previas para asegurarnos de que tenemos los permisos correctos antes de ejecutar un paso de simulación. Esto facilita el procesamiento programático de cada acción documentada y la configuración automática de algunos otros recursos.
Ejecución con estado orquestada:
El proyecto también está diseñado para manejar el estado y garantizar la confiabilidad en numerosas simulaciones de ataques mediante el uso de una extensión de las funciones de Azure denominadas funciones duraderas. Esta función permite la orquestación y ejecución de escenarios en los que las acciones podrían depender del estado y el resultado de otros pasos de la simulación. Esto es bueno para definir rutas de ataque específicas como código.
Autenticación y autorización seguras:
Cloud Katana también aplica las mejores prácticas de autenticación y autorización para proteger la aplicación.
Autenticación:
El proyecto utiliza Microsoft Identity Platform (también conocido como Azure Active Directory o Azure AD) como su proveedor de identidad para autenticar a los clientes. Esta función requiere una aplicación de Azure AD registrada, lo que permite a los usuarios conectarse a la aplicación Azure Function mediante la autenticación OAuth.
Además, el uso de un proveedor de identidad habilita las siguientes características:
- Políticas de acceso condicional.
- El uso de la autenticación multifactor.
- Inicio de sesión único (SSO).
Autorización:
Además de obligar a los usuarios a autenticarse antes de ejecutar simulaciones, el proyecto también implementa «Asignaciones de roles de aplicación» para restringir el acceso a usuarios seleccionados. Esto permite a las organizaciones seleccionar quién puede utilizar el proyecto en sus entornos.
Integración de identidades administradas:
Además, al ejecutar simulaciones en Azure, Cloud Katana usa una identidad administrada asignada por el usuario para acceder a los recursos protegidos de Azure AD. Una de las ventajas de las identidades administradas es que elimina la necesidad de proporcionar o rotar secretos.
Control de acceso granular a los recursos de Azure:
El acceso a los recursos de Azure está definido por los permisos asignados a la identidad administrada. Actualmente cubrimos escenarios basados en Azure. Por lo tanto, usamos permisos asociados con cada conjunto principal de API de Microsoft Graph para controlar el acceso a recursos específicos de Azure.
Por ejemplo, si quisiéramos usar Cloud Katana para agregar credenciales a una aplicación, necesitaríamos otorgar los siguientes permisos (de menor a mayor privilegio) a la identidad administrada:
- Aplicación.ReadWrite.OwnedBy
- Aplicación.Lectura.Escritura.Todo
Clientes independientes del lenguaje de programación:
Otra característica que hace de Cloud Katana una herramienta muy poderosa es la flexibilidad de usar cualquier lenguaje de programación para solicitar simulaciones. Si el cliente que solía interactuar con Cloud Katana puede manejar el proceso de autenticación de Azure AD, no importa cómo se solicite la simulación.
Las bibliotecas de autenticación de Microsoft están disponibles a través de PowerShell como MSAL.PS y Python como MSAL. También podríamos usar otros proyectos de código abierto, como Jupyter Notebooks, para crear plantillas repetitivas para mostrar la ejecución de simulaciones y compartir el proceso con otros investigadores de seguridad.
Simulaciones en la nube y en las instalaciones:
Finalmente, actualmente estamos experimentando con Azure App Service Hybrid Connections no solo para ejecutar simulaciones en la nube sino también en las instalaciones. Las conexiones híbridas utilizan un agente de retransmisión para exponer de forma segura los servicios que se ejecutan localmente en la nube pública. El agente de retransmisión se encuentra en el medio entre el servidor local y la aplicación Cloud Katana Azure Function.
Se instala un agente de retransmisión, Hybrid Connection Manager (HCM), en el servidor local y se configura para llamar a Azure Relay a través del puerto 443. La aplicación de función Cloud Katana luego se conecta a Azure Relay para interactuar con el servidor local. servidor local y ejecutar simulaciones localmente. La conexión utiliza TLS 1.2 para seguridad y claves de firma de acceso compartido (SAS) para autenticación y autorización.
Implementar Cloud Katana:
Después de conocer los principios de diseño de Cloud Katana, puede consultar nuestros documentos para implementar el proyecto.
Evaluar los controles de seguridad:
Una vez que la aplicación de funciones de Azure se implementa correctamente, puede ejecutar algunas de las demostraciones disponibles en nuestros documentos. La idea principal no es solo escribir los pasos de simulación como código y ejecutarlos a pedido, sino también evaluar las detecciones y los controles de seguridad.
Trabajo futuro:
Además de automatizar y lanzar más pasos de simulación, también vamos a trabajar en varias funciones para mejorar la implementación de la herramienta y el alcance de la ejecución. La siguiente lista muestra algunas de las ideas que tenemos actualmente (no en un orden específico):
Simulaciones en otros proveedores de nube:
- Simulaciones locales a través de los servicios de administración de Azure Hybrid Connection.
- Un modelo de datos para documentar cadenas de pasos de simulación de una forma más flexible.
- Una canalización de integración continua y retraso continuo (CI/CD) de Azure DevOps para implementar y mantener la aplicación Azure Function.
- Integración con SimuLand para dar a los investigadores de seguridad la opción de implementarlo todo junto.
- Una forma de programar funciones para que se ejecuten periódicamente como un servicio en un entorno de red.
- Una forma de verificar si se activaron alertas o se generaron datos después de cada simulación.
- Capacidades similares a complementos para integrar otros proyectos, como Atomic Red Team, en el marco.
Contribuciones de la comunidad:
Esperamos contribuciones y comentarios de la comunidad. Si desea contribuir en áreas específicas del proyecto, abra un problema en nuestro repositorio de GitHub y comparta sus ideas. Mire la sección anterior «Trabajo futuro» para obtener algunas ideas.
Aprende más:
Para obtener más información sobre esta iniciativa de código abierto, visite el repositorio de Cloud Katana GitHub.
Para obtener más información sobre las soluciones de seguridad de Microsoft, visite nuestro sitio web. Marque el blog de seguridad para mantenerse al día con nuestra cobertura de expertos en asuntos de seguridad. Además, síganos en @MSFTSecurity para conocer las últimas noticias y actualizaciones sobre ciberseguridad.
Seguiremos revisando los artículos del MSB