
Simulation automatisée d'attaques dans le cloud, avec des cas d'utilisation de détection.
Ce dépôt contient Leonidas, un framework pour exécuter des actions d'attaquant dans le cloud. Il fournit un format basé sur YAML pour définir les tactiques, techniques et procédures (TTP) des attaquants cloud ainsi que leurs propriétés de détection associées. Ces définitions peuvent ensuite être compilées en :
Le projet a été initialement conçu pour être utilisé dans des environnements AWS, avec l'architecture suivante :
En 2024, Leonidas a été étendu pour prendre en charge les environnements Kubernetes. Ses ressources peuvent être déployées dans le cluster cible, selon l'architecture suivante :

L'API est déployée dans un compte AWS via un pipeline CI/CD natif AWS, et dans un cluster Kubernetes à l'aide de manifests YAML générés automatiquement. Les instructions pour les deux environnements se trouvent dans Déploiement de Leonidas.
L'API est invoquée via des requêtes web sécurisées par une clé API. Les détails sur l'utilisation de l'API se trouvent dans Utilisation de Leonidas
Pour construire la documentation ou les règles Sigma, vous devrez installer le générateur localement. Vous pouvez le faire en :
cd generatorpoetry installLes règles Sigma peuvent être générées comme suit :
poetry run ./generator.py sigmaLes règles apparaîtront alors dans ./output/sigma
La documentation est générée comme suit :
poetry run ./generator.py docsCela produira des versions Markdown de la documentation disponibles dans output/docs. Celles-ci peuvent être téléchargées dans un système de documentation basé sur Markdown existant, ou la commande suivante peut être utilisée pour créer une version HTML embellie de la documentation :
cd ../outputmkdocs buildCela créera un dossier output/site contenant le site HTML. Il est également possible de visualiser cela localement en exécutant mkdocs serve dans le même dossier.
Les définitions sont écrites dans un format basé sur YAML, dont un exemple est fourni ci-dessous. La documentation sur la façon de les rédiger se trouve dans Écriture des définitions
---
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"
Projet construit et maintenu par Nick Jones ( NJonesUK / @nojonesuk ).
Prise en charge de Kubernetes ajoutée par Leo Tsaousis ( @laripping ).
Remerciements particuliers également à Mohit Gupta ( @Skybound1 ) pour son inestimable contribution.
Ce projet s'est inspiré et a tiré des idées d'un éventail de sources, notamment :