Adversary Emulation (BAS), Red Team Cyber Exercises & Chaos Engineering Engine
Наступательный компонент экосистемы APEX DEFENSE для непрерывной валидации замкнутого цикла киберзащиты (NIST CSF 2.0).
Asmodeus — автономный движок моделирования действий злоумышленников (Breach and Attack Simulation, BAS), проведения санкционированных кибер-учений (Red Team) и стресс-тестирования инфраструктуры (Chaos Engineering).
В единой экосистеме киберзащиты Asmodeus выступает наступательным спарринг-партнером для защитных компонентов:
- Сенсоров ядра Ferrum (eBPF и K8s Admission Webhook);
- Сетевого барьера BSDM-Proxy (SWG, DNS Sinkhole RPZ);
- Агентов рабочих станций Lariska (CPU/E-cores affinity, watchdog);
- Корпоративных сканеров PT MaxPatrol VM, PT XSpider и автоматизации SOAR.
Вся архитектура и спецификации формализованы в нормативных документах:
-
📋 Функционально-Технические Требования (FTT.md):
- Бизнес-цели и назначение системы;
- Ролевая модель доступа (RBAC: Admin, Red Team, DevSecOps, CISO, Auditor);
- Сценарии атак по MITRE ATT&CK: 8 сценариев, покрывающих 7 тактик (
T1486 Ransomware,T1611 K8s Escape,T1071 C2 Beaconing,T1003 Honeytokens,T1070 Log Tamper,T1053 Persistence Cron,T1041 Exfiltration,T1562 Impair Defenses); - Инфраструктурный хаос (
LATENCY_SPIKE_VM,AGENT_CRASH_ENDPOINT,DNS_RPZ_SINKHOLE_DROP); - Защитные барьеры (Blast Radius, Circuit Breaker, Auto-Rollback);
- Замер метрик реакции Blue Team (MTTD, MTTR, Resilience Score).
-
⚙️ Технические Требования (TT.md):
- Декомпозиция компонентов (
control-plane,runner,dsl,safety,telemetry); - Конечный автомат жизненного цикла (
IDLE➔ARMED➔INJECTING➔CONTAINED➔CLEANUP); - Инварианты безопасности (строго синтетические canary-файлы, подпись Ed25519, Dead-man switch);
- Бюджет системных ресурсов (RAM < 32 MB для раннера, CPU < 5%);
- Контракты REST API (OpenAPI 3.1) и gRPC mTLS;
- Сравнительная матрица оценки языков реализации (Rust vs Go vs Python).
- Декомпозиция компонентов (
-
🏛️ Архитектура (ARCHITECTURE.md) — канонический документ:
- Зафиксированные решения (базовый язык Rust, единый workspace, границы с APEX);
- Декомпозиция на 10 крейтов и ацикличный граф зависимостей;
- Единый автомат жизненного цикла (снимает расхождение FTT ↔ TT);
- Карта внешних зависимостей (tokio, axum, tonic, aya, ed25519-compact).
-
📝 История изменений (CHANGELOG.md) — версии и релизы.
-
Сохраняемые прогоны кампаний — фоновый запуск, прогресс, отмена и восстановление.
-
Корпус процедур MITRE S02 — шесть фиксированных slots, парные controls, ограничения и явные причины отсутствия исполнения.
┌──────────────────────┐ ┌──────────────────────┐
│ ASMODEUS │ ──[ Учения / Атака ]─> │ ИНФРАСТРУКТУРА │
│ (Red Team Engine) │ │ Ferrum / BSDM / │
└──────────────────────┘ │ Lariska / K8s │
▲ └──────────┬───────────┘
│ │
│ Замер метрик │ Детекция &
│ MTTD / MTTR │ Сдерживание
│ ▼
┌──────────┴───────────┐ ┌──────────────────────┐
│ APEX UNIFIED CONSOLE│ <──[ Алерты & SOAR ]┤ BLUE TEAM │
│ 🔴 [RED TEAM] │ │ (Замкнутый контур │
│ ⚡ [CHAOS TEST] │ │ NIST CSF 2.0) │
└──────────────────────┘ └──────────────────────┘
- Инициализация репозитория
- Разработка Функционально-Технических Требований (FTT.md)
- Разработка Технических Требований (TT.md)
- Выбор технологического стека и архитектуры (ARCHITECTURE.md) — Rust, единый workspace
- Скелет workspace: 10 крейтов, собирается (
cargo build --workspace) - MVP-ядро: стейт-машина жизненного цикла, RBAC-матрица, верификация Ed25519 (24 теста)
- Control-plane: axum REST-сервер, каталог подписанных сценариев, движок прогона
- Runner: синтетический canary-инъектор (обратимый XOR, scope-guard, авто-очистка)
- Safety: circuit breaker + dead-man switch; Telemetry: MTTD/MTTR + экспортёр Prometheus
- gRPC/mTLS канал: proto-контракт (tonic), RunnerControl-сервер в раннере, mTLS-обвязка
- Замкнутый контур: control-plane диспатчит подписанный сценарий в живой раннер по gRPC (REST → gRPC → инъекция → откат)
- Операторский CLI (
asmodeus):keygen/sign/verify/validate— офлайн-подпись сценариев (Ed25519) - CLI
run/status(REST к control-plane) иasmodeus-testkit(полигон + фикстуры подписи) - Сетевой хаос в раннере (
LATENCY_SPIKE_VM): INV-0 сетевой scope (только тест-блоки RFC 5737 + loopback), бюджетные лимиты,NetChaosSessionс обязательным откатом (D7); кросс-платформенныйSimBackend - Расширение покрытия MITRE ATT&CK: 11 сценариев (8 атак на 7 тактик + 3 хаоса), синтетические инъекторы в раннере под INV-0, REST-эндпоинты матрицы (
/api/v1/asmodeus/scenarios,/scenarios/mitre), CLI командыasmodeus scenarios/mitre, 94 теста - Реестр раннеров, gRPC Heartbeat и динамическая маршрутизация: потокобезопасный
RunnerRegistry, диспетчеризация поtarget_overrideи тегам целевого окружения, REST API зондов (/api/v1/asmodeus/runners), интеграцияDeadManSwitchиCircuitBreakerв раннер, CLI командыasmodeus runners list/register/deregister/ping, 100 тестов - Криптографический Журнал Аудита, Оркестрация Кампаний и Watchdog: нефальсифицируемый
AuditRecordс цифровой подписью Ed25519, REST эндпоинты/runs,/runs/:id,/runs/:id/verify, оркестратор комплексных цепочек атак (Playbooks / Campaigns:CAMP-RANSOMWARE-CHAIN,CAMP-K8S-ESCAPE-CHAOS,CAMP-PERSISTENCE-EXFIL), фоновый воркер опроса зондовwatchdog, команды CLIasmodeus runsиasmodeus campaigns, 104 теста - Декларативный DSL, Замкнутый Цикл NIST Closed-Loop и Исполнительная Отчётность: типизированный парсер и валидатор YAML/JSON манифестов (
asmodeus-dsl::manifest,POST /scenarios/validate), приём обратной связи детекции и сдерживания Blue Team / SOAR (POST /runs/:id/feedback,asmodeus runs feedback), переподпись аудита Ed25519, генератор исполнительных отчётов кибер-устойчивости NIST CSF 2.0 (/reports/resilience,/runs/:id/report,asmodeus report), политика защиты цепочки поставокdeny.toml, 110 тестов - OpenAPI 3.1 Gateway Contract, Persistent JSONL Audit & Dynamic Attack Campaigns: канонический генератор OpenAPI 3.1 (
GET /api/v1/asmodeus/openapi.json), персистентное append-only хранилище записей аудита (ASMODEUS_AUDIT_LOG) и потоковый экспорт (GET /api/v1/asmodeus/audit/export?format=jsonl|json), динамическая регистрация и удаление кампаний атак (POST/DELETE /api/v1/asmodeus/campaigns), авто-загрузка подписанных манифестов из директории (ASMODEUS_SCENARIOS_DIR), расширение CLI (asmodeus campaigns register/delete,asmodeus runs export), 119 тестов - Наблюдаемость дрейфа детекции и восстановление метрик после рестарта: непрерывный BAS-планировщик теперь ведёт ограниченную историю прогонов (
run_history) и нефальсифицируемый журнал алертов дрейфа MTTD (DriftAlert), доступный операторам; новые REST-эндпоинтыGET /api/v1/asmodeus/schedules/:id(детализация + таймлайн дрейфа),GET /api/v1/asmodeus/schedules/alerts(список регрессий детекции),PATCH /api/v1/asmodeus/schedules/:id(пауза/возобновление без удаления); восстановление Prometheus-агрегата (Aggregate::from_records) из персистентного журнала аудита при старте —/metrics,/telemetry/mttdи отчёт устойчивости больше не обнуляются после рестарта; команды CLIasmodeus schedules get/alerts/toggle, 143 теста - Типизированная runtime-конфигурация control-plane: переменные
ASMODEUS_LISTEN,ASMODEUS_WATCHDOG_INTERVAL_SECиASMODEUS_SCHEDULER_INTERVAL_SECтеперь разбираются централизованно и fail-fast при неверных значениях; интервалы фоновых циклов больше не захардкожены вmain.rs; добавлены детерминированные unit-тесты конфигурации. - Обслуживание раннеров:
PATCH /runners/:idи CLIrunners drain/resume; исключение из маршрутизации, возврат после нового healthy heartbeat и защита от запоздавших ответов. Контракт обслуживания. - Постоянный реестр раннеров:
ASMODEUS_STATE_DIR/runners.jsonсохраняет регистрации, удаления и drain; после рестарта нужна новая проверка здоровья. Ошибки записи доходят до API, повреждённый snapshot блокирует startup. - eBPF/TC net-chaos бэкенд (Linux-стенд): ядерная программа
asmodeus-netchaos-ebpf(egressSchedClassifier, bpfel-unknown-none) подключена к aya/TC-бэкенду раннера под--features ebpf.AyaTcBackendподнимаетRLIMIT_MEMLOCK, грузит объект черезaya::Bpf, навешиваетclsact+ классификатор на egress и пишет один вооружённыйChaosRuleв map; программа роняет пакет (TC_ACT_SHOT) только для цели внутри подписанного тест-блока и по жребиюbpf_get_prandom_u32, иначеTC_ACT_OK(fail-open).revertразоружает правило и отцепляет классификатор. Jenkins собирает и фингерпринтитdist/asmodeus-netchaos.bpf.o; клиппи--features ebpfи юнит-тесты разбора CIDR идут на Linux-ноде. На macOS бэкенд не компилируется по построению (сборка по умолчанию используетSimBackend); живой attach проверяется на стенде сCAP_BPF/CAP_NET_ADMIN.
Результаты текущей проверки, исправления и ограничения production описаны в
архитектурном обзоре от 22 сентября 2026.
Реализованы фоновый запуск, отмена по run ID, подтверждение cleanup, постоянные
кампании/расписания и исполнение параметров подписанного DSL. До явного Blue Team
feedback результат имеет PENDING_FEEDBACK; симуляция исключена из метрик защиты.
Настройка, API/CLI, ключи, миграция ClickHouse и границы реализации описаны в
контракте новых функций.
Для сохранения проверяемого аудита между рестартами задайте оба параметра:
ASMODEUS_AUDIT_LOG— путь к JSONL-журналу, один writer-процесс на файл.ASMODEUS_AUDIT_SIGNING_KEY— путь к постоянному Ed25519 secret key в hex (форматasmodeus keygen --name <path>; файл<path>.key).
Ключ храните как secret вне репозитория и сохраняйте между рестартами. При повреждённом журнале или неверном ключе сервис откажется запускаться. Старый журнал, подписанный утраченным временным demo-ключом, требует отдельного архивирования; автоматически доверять ему или переподписывать его сервис не будет. Feedback добавляет подписанную ревизию; API и экспорт показывают последнюю ревизию каждого прогона. Ошибка сохранения возвращается клиенту, а метрики обновляются только после успешной записи.
asmodeus procedure-local-suite --suite-id local-suite-001 --output suite.json
запускает все шесть процедур с positive/benign controls. Отчёт сохраняет
знаменатель 6/12 и gaps; сейчас выполнены три локальные пары, общий gate
INCONCLUSIVE с ненулевым exit code. Это локальная проверка fixtures;
реакция защитных продуктов остаётся неподтверждённой.
Подробности: корпус процедур и локальный suite.