
Simulazione automatizzata di attacchi nel cloud, completa di casi d'uso per il rilevamento.
Questo è il repository che contiene Leonidas, un framework per eseguire azioni di attaccante nel cloud. Fornisce un formato basato su YAML per definire tattiche, tecniche e procedure (TTP) dell'attaccante nel cloud e le relative proprietà di rilevamento. Queste definizioni possono poi essere compilate in:
Il progetto è stato originariamente progettato per l'uso in ambienti AWS, con la seguente architettura:
Nel 2024, Leonidas è stato esteso per supportare ambienti Kubernetes. Le sue risorse possono essere distribuite all'interno del cluster di destinazione, come illustrato nella seguente architettura:

L'API viene distribuita in un account AWS tramite una pipeline CI/CD nativa di AWS, e in un cluster Kubernetes utilizzando manifest YAML generati automaticamente. Le istruzioni per entrambi gli ambienti si trovano in Distribuzione di Leonidas.
L'API viene invocata tramite richieste web protette da una chiave API. I dettagli sull'utilizzo dell'API si trovano in Utilizzo di Leonidas
Per creare documentazione o regole Sigma, è necessario installare il generatore localmente. Puoi farlo tramite:
cd generatorpoetry installLe regole Sigma possono essere generate come segue:
poetry run ./generator.py sigmaLe regole appariranno quindi in ./output/sigma
La documentazione viene generata come segue:
poetry run ./generator.py docsQuesto produrrà versioni markdown della documentazione disponibili in output/docs. Può essere caricato su un sistema di documentazione esistente basato su markdown, oppure si può utilizzare il seguente comando per creare una versione HTML migliorata della documentazione:
cd ../outputmkdocs buildQuesto creerà una cartella output/site contenente il sito HTML. È anche possibile visualizzarlo localmente eseguendo mkdocs serve nella stessa cartella.
Le definizioni sono scritte in un formato basato su YAML, di cui viene fornito un esempio qui sotto. La documentazione su come scriverle si trova in Scrittura delle Definizioni
---
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"
Progetto creato e mantenuto da Nick Jones ( NJonesUK / @nojonesuk).
Supporto Kubernetes aggiunto da Leo Tsaousis ( @laripping ).
Un ringraziamento speciale anche a Mohit Gupta ( @Skybound1 ) per il suo prezioso contributo.
Questo progetto ha tratto idee e ispirazione da una serie di fonti, tra cui: