
Simulación automatizada de ataques en la nube, completa con casos de uso de detección.
Este es el repositorio que contiene Leonidas, un framework para ejecutar acciones de atacante en la nube. Proporciona un formato basado en YAML para definir tácticas, técnicas y procedimientos (TTPs) de atacante en la nube y sus propiedades de detección asociadas. Estas definiciones pueden ser compiladas en:
El proyecto fue diseñado originalmente para su uso en entornos AWS, con la siguiente arquitectura:
En 2024, Leonidas se amplió para soportar entornos Kubernetes. Sus recursos pueden desplegarse dentro del clúster objetivo, según la siguiente arquitectura:

La API se despliega en una cuenta de AWS a través de un pipeline CI/CD nativo de AWS, y en un clúster de Kubernetes utilizando manifiestos YAML generados automáticamente. Las instrucciones para ambos entornos se encuentran en Desplegando Leonidas.
La API se invoca mediante solicitudes web aseguradas por una clave API. Los detalles sobre el uso de la API se encuentran en
Para construir documentación o reglas Sigma, necesitarás instalar el generador localmente. Puedes hacerlo mediante:
cd generatorpoetry installLas reglas Sigma se pueden generar de la siguiente manera:
poetry run ./generator.py sigmaLas reglas aparecerán en ./output/sigma
La documentación se genera de la siguiente manera:
poetry run ./generator.py docsEsto producirá versiones markdown de la documentación disponibles en output/docs. Esto se puede subir a un sistema de documentación basado en markdown existente, o se puede utilizar lo siguiente para crear una versión HTML embellecida de la documentación:
cd ../outputmkdocs buildEsto creará una carpeta output/site que contiene el sitio HTML. También es posible ver esto localmente ejecutando mkdocs serve en la misma carpeta.
Las definiciones se escriben en un formato basado en YAML, del cual se proporciona un ejemplo a continuación. La documentación sobre cómo escribirlas se encuentra en Escribiendo Definiciones
---
name: Enumerate Cloudtrails for a Given Region
author: Nick Jones
description: |
An adversary may attempt to enumerate the configured trails, to identify what actions will be logged and where they will be logged to. In AWS, this may start with a single call to enumerate the trails applicable to the default region.
category: Discovery
mitre_ids:
- T1526
platform: aws
permissions:
- cloudtrail:DescribeTrails
input_arguments:
executors:
sh:
code: |
aws cloudtrail describe-trails
leonidas_aws:
implemented: True
clients:
- cloudtrail
code: |
result = clients["cloudtrail"].describe_trails()
detection:
sigma_id: 48653a63-085a-4a3b-88be-9680e9adb449
status: experimental
level: low
sources:
- name: "cloudtrail"
attributes:
eventName: "DescribeTrails"
eventSource: "*.cloudtrail.amazonaws.com"
Proyecto construido y mantenido por Nick Jones ( NJonesUK / @nojonesuk).
Soporte para Kubernetes añadido por Leo Tsaousis ( @laripping ).
Agradecimientos especiales también a Mohit Gupta ( @Skybound1 ) por su invaluable contribución.
Este proyecto tomó ideas e inspiración de una variedad de fuentes, incluyendo: