
Simulação automatizada de ataques na nuvem, completa com casos de uso de detecção.
Este é o repositório que contém Leonidas, um framework para executar ações de ataque na nuvem. Ele fornece um formato baseado em YAML para definir táticas, técnicas e procedimentos (TTPs) de ataque na nuvem e suas propriedades de detecção associadas. Essas definições podem então ser compiladas em:
O projeto foi originalmente projetado para uso em ambientes AWS, com a seguinte arquitetura:
Em 2024, Leonidas foi estendido para suportar ambientes Kubernetes. Seus recursos podem ser implantados dentro do cluster alvo, conforme a seguinte arquitetura:

A API é implantada em uma conta AWS por meio de um pipeline CI/CD nativo da AWS, e em um cluster Kubernetes usando manifestos YAML gerados automaticamente. Instruções para ambos os ambientes podem ser encontradas em Implantação do Leonidas.
A API é invocada por meio de requisições web protegidas por uma chave de API. Detalhes sobre o uso da API podem ser encontrados em Usando o Leonidas
Para construir documentação ou regras Sigma, você precisará instalar o gerador localmente. Você pode fazer isso por:
cd generatorpoetry installAs regras Sigma podem ser geradas da seguinte forma:
poetry run ./generator.py sigmaAs regras aparecerão então em ./output/sigma
A documentação é gerada da seguinte forma:
poetry run ./generator.py docsIsso produzirá versões em markdown da documentação disponível em output/docs. Ela pode ser enviada para um sistema de documentação baseado em markdown existente, ou o seguinte pode ser usado para criar uma versão HTML mais bonita da documentação:
cd ../outputmkdocs buildIsso criará uma pasta output/site contendo o site HTML. Também é possível visualizar isso localmente executando mkdocs serve na mesma pasta.
As definições são escritas em um formato baseado em YAML, para o qual um exemplo é fornecido abaixo. Documentação sobre como escrevê-las pode ser encontrada em Escrevendo Definições
---
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"
Projeto construído e mantido por Nick Jones ( NJonesUK / @nojonesuk ).
Suporte para Kubernetes adicionado por Leo Tsaousis ( @laripping ).
Agradecimentos especiais também a Mohit Gupta ( @Skybound1 ) por sua inestimável contribuição.
Este projeto buscou ideias e inspiração de uma variedade de fontes, incluindo: