
Автоматизированная имитация атак в облаке, включая сценарии обнаружения.
Это репозиторий, содержащий Leonidas — фреймворк для выполнения действий атакующего в облаке. Он предоставляет формат на основе YAML для определения облачных тактик, техник и процедур (TTP) атакующего и связанных с ними свойств обнаружения. Эти определения могут быть скомпилированы в:
Изначально проект был разработан для использования в среде AWS со следующей архитектурой:
В 2024 году Leonidas был расширен для поддержки сред Kubernetes. Его ресурсы могут быть развернуты внутри целевого кластера, согласно следующей архитектуре:

API развертывается в учетной записи AWS через собственный конвейер CI/CD от AWS и в кластере Kubernetes с использованием автоматически сгенерированных манифестов YAML. Инструкции для обеих сред можно найти в Развертывание Leonidas.
API вызывается через веб-запросы, защищенные API-ключом. Подробности об использовании API можно найти в Использование Leonidas
Для сборки документации или правил Sigma необходимо установить генератор локально. Это можно сделать следующим образом:
cd generatorpoetry installПравила Sigma можно сгенерировать следующим образом:
poetry run ./generator.py sigmaПравила появятся в ./output/sigma
Документация генерируется следующим образом:
poetry run ./generator.py docsЭто создаст Markdown-версии документации, доступные в output/docs. Их можно загрузить в существующую систему документации на основе Markdown, или можно использовать следующее для создания более красивой HTML-версии документации:
cd ../outputmkdocs buildБудет создана папка output/site, содержащая HTML-сайт. Также можно просмотреть это локально, выполнив mkdocs serve в той же папке.
Определения написаны в формате на основе YAML, пример которого приведен ниже. Документацию по их написанию можно найти в Написание определений
---
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"
Проект создан и поддерживается Ником Джонсом ( NJonesUK / @nojonesuk).
Поддержка Kubernetes добавлена Лео Цаусисом ( @laripping ).
Особая благодарность также Мохиту Гупте ( @Skybound1 ) за его неоценимый вклад.
Этот проект черпал идеи и вдохновение из ряда источников, включая: