MayaTrail/step1

GitHub: MayaTrail/step1

MayaTrail 是一个 AWS 安全模拟演练平台,在用户自己的云账户中安全地部署漏洞环境并运行真实对手模拟,帮助团队验证云安全态势和检测能力。

Stars: 1 | Forks: 0

MayaTrail

在攻击者动手之前,在您自己的 AWS 账户中安全地演练真实的云攻击。

MayaTrail 会连接到您的 AWS 账户,配置一个真实且故意留有漏洞的环境,对其运行真实的对手 emulation,并向您准确展示攻击者可以访问哪些内容——然后自动销毁这一切。每个 emulation 都附带 MITRE ATT&CK 映射和随时可部署的检测规则。

## 问题背景 云配置错误是导致云泄露的首要原因——一个权限过高的 IAM 角色或一个启用了 IMDSv1 的 EC2 实例就足以导致整个账户沦陷。然而,安全团队几乎没有安全的方法在类似于自己的基础设施上*演练*这些攻击: - **攻击生产环境的风险太高。** 您无法针对实时基础设施运行从凭证窃取到权限维持的利用链,以查看其是否有效。 - **渗透测试昂贵且频率低。** 每年一到两次的定时测试无法跟上每天都在变化的基础设施。 - **了解配置错误并不等于了解您的爆炸半径。** 大多数工具只会标记 IMDSv1 是否开启;它们不会向您展示其解锁的完整 kill chain——或者您的检测机制是否能捕获它。 结果就是:只有当真正的攻击者向他们展示时,团队才会发现他们的云是否可被利用。 ## 解决方案 MayaTrail 闭环了这一流程——**连接 → 部署 → 攻击 → 观察 → 自动销毁**——在*您自己的* AWS 账户内的隔离、可销毁环境中运行真实的对手 emulation。 1. **连接** 您的 AWS 账户,通过 STS AssumeRole 实现——无需移交长期密钥。 2. **部署** 通过代码(Pulumi)配置一个真实且故意留有漏洞的环境。 3. **攻击** 使用基于已记录攻击活动建模的真实对手 emulation 对其进行攻击。 4. **观察** 在仪表板中查看结果:kill chain、MITRE ATT&CK 覆盖率、爆炸半径以及不可变的审计日志——此外还有可直接用于您的 SIEM 的检测规则。 5. **自动销毁** ——每个环境都有一个 TTL,因此不会有任何残留,且成本保持在受控范围内。 启动它,运行泄露攻击,从中吸取教训,然后让它自动清理。可根据基础设施变化的频率随时重复此操作。

MayaTrail dashboard

## 目标受众 MayaTrail 专为负责云安全态势的人员打造: | 角色 | 他们能从 MayaTrail 中获得什么 | |---|---| | **Detection Engineer** | 真实的攻击者遥测数据,以及随附的 Sigma + KQL 规则,用于验证和调优检测。 | | **Security Engineer** | 一个安全的试验场,用于验证配置错误是否真正可实现端到端的利用。 | | **Cloud Security Engineer** | 在自己的 AWS 账户中安全运行的、真实且有文档记录的攻击场景。 | | **DevSecOps Engineer** | 可销毁的、由 IaC 定义的环境,可无缝融入现有 pipeline。 | | **SOC Analyst** | 一个受控的环境,用于研究真实的攻击模式和响应策略。 | | **Security Architect** | 用于制定防护措施和策略决策的爆炸半径证据。 | ## 核心能力 - **在您自己的 AWS 账户中运行** ——通过具有范围的 STS AssumeRole 进行连接;不存储任何长期凭证。 - **真实的对手 emulation** ——基于已记录的攻击活动建模,而非玩具般的虚拟场景。 - **映射至 MITRE ATT&CK** ——每个阶段都与一项技术关联,并在仪表板上直观展示覆盖率。 - **提供检测规则** ——每个 emulation 都包含 Sigma 和 KQL 规则以及事件响应 playbook,随时可用于您的 SIEM。 - **临时且关注成本** ——环境具有 TTL 并按计划自动销毁;预先展示预估成本。 - **基于插件的 emulation 包** ——接入新的 emulation 包即可被自动发现,包含基础设施和检测机制。 - **可审计** ——不可变的日志会记录每一次连接、部署、攻击和销毁操作。 ## 顺势而为 云资源的扩张速度超过了负责防御它们的团队,且该领域的规范正从定时的渗透测试转向**持续威胁暴露管理**——始终了解您的环境今天(而非上个季度)是否可被利用。MayaTrail 使这种演练循环变得低成本、安全,并且具有足以持续运行的可重复性。 ## 路线图 `step1` 是该阶段性推进平台的第一个阶段。未来的发展方向: - 不断扩展的对手 emulation 库,涵盖更多已记录的攻击活动 - 多云支持(Azure、GCP、Kubernetes)——平台模型已为此预留了扩展空间 - 基于 emulation 遥测数据的更深入的检测工程工作流 - 集成 CI/CD,以便在每次基础设施变更时演练攻击 ## 工作原理 MayaTrail 作为全栈 Web 应用程序运行。单个 emulation 的流程如下: 1. **连接** ——用户连接其 AWS 账户;`connectors` 应用程序通过 STS AssumeRole 建立访问权限(不存储长期密钥)。 2. **部署** ——企业级 Celery worker 使用 **Pulumi Automation API(进程内)**(无需 Docker socket,无需临时 Pulumi 容器)将 emulation 的基础设施部署到用户的账户中。Pulumi 状态位于专用的 S3 状态存储桶中。 3. **攻击** ——emulation 包中的 `attack.py` 针对新配置的基础设施执行 kill chain。 4. **观察** ——结果、MITRE ATT&CK 映射和检测规则会展示在仪表板上;`logs` 应用程序会记录不可变的审计追踪。 5. **自动销毁** ——每个 stack 都具有一个 TTL(SCARLETEEL 默认为 4 小时);Celery Beat 每 15 分钟运行一次自动销毁任务,从而清理过期的环境并确保成本保持在受控范围内。 ## 快速开始(Docker Compose) ``` # 配置环境 cp backend/.env.example backend/.env # 在 backend/.env 中填写 SECRET_KEY、AWS 凭证和 STATE_BUCKET # 启动 full stack docker-compose up --build ``` 应用程序可通过 `http://localhost` 访问。数据库迁移在后端启动时会自动运行。 **前置条件:** Docker 和 Docker Compose,以及平台账户的 AWS 凭证(用于对目标账户执行 AssumeRole 并存储 Pulumi 状态)。 ### 核心环境变量 (`backend/.env`) | 变量 | 描述 | |---|---| | `SECRET_KEY` | Django 密钥 | | `DATABASE_URL` | PostgreSQL 连接字符串 | | `REDIS_URL` | Celery broker + 结果后端 | | `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` | 平台 AWS 凭证(STS AssumeRole + 状态存储桶) | | `AWS_DEFAULT_REGION` | 默认 AWS 区域(例如 `ap-south-1`) | | `STATE_BUCKET` | 用于 Pulumi 状态的 S3 存储桶(例如 `mayatrail-state-bucket`) | | `PULUMI_CONFIG_PASSPHRASE` | Pulumi stack 密钥的密码短语 | | `EMULATIONS_BASE_DIR` | emulation 包挂载的位置(`/opt/emulations`) | | `REGISTRATION_INVITE_CODE` | 限制自助注册的邀请码 | | `GOOGLE_CLIENT_ID` | Google SSO 客户端 ID | ### 前端开发 ``` cd frontend/UI npm install npm run dev # Vite dev server on http://localhost:3000 ``` ## 模拟 MayaTrail 将对手 emulation 作为独立的、可自动发现的包进行发布。每个包都捆绑了运行攻击并从中学习所需的一切内容: - `MANIFEST.py` ——身份、kill chain 阶段、MITRE ATT&CK 映射、成本和 TTL 元数据 - `attack.py` ——一个执行 kill chain 的 `run(outputs)` 函数 - `infra/` ——用于配置漏洞环境的 Pulumi 程序 - `detections/` ——Sigma 和 KQL 检测规则,每项技术对应一组 - `PLAYBOOK.md` ——针对该攻击活动的事件响应 playbook ### SCARLETEEL 2.0 这是一个包含 6 个阶段的 APT emulation,基于 Sysdig 威胁研究团队(2023 年)记录的真实 SCARLETEEL 攻击活动。它将容器利用与 AWS 凭证窃取结合在一起,以实现横向移动、数据泄露和持久化。 | 阶段 | 战术 | MITRE 技术 | |---|---|---| | 1. Initial Access | Initial Access | `T1190` Exploit Public-Facing Application(容器 RCE) | | 2. Credential Access | Credential Access | `T1552.005` Cloud Instance Metadata API(IMDSv1) | | 3. Discovery | Discovery | `T1087.004` Cloud Account Discovery · `T1580` Cloud Infrastructure Discovery | | 4. Defense Evasion | Defense Evasion | `T1562.008` Disable Cloud Logs(CloudTrail) | | 5. Lateral Movement | Privilege Escalation / Lateral Movement | `T1548.005` Abuse Elevation Control(AssumeRole) · `T1550.001` Application Access Token | | 6. Persistence | Persistence | `T1098` Account Manipulation(Lambda 后门) | **严重程度:** CRITICAL · **持续时间:** 约 20 分钟 · **资源:** 19 · **默认 TTL:** 4 小时 · **预估成本:** 约 $0.05/小时 **涉及的服务:** IAM, STS, EC2, Lambda, S3, Secrets Manager, ECS, CloudTrail **提供的检测:** 针对 T1190、T1552.005、T1087.004、T1562.008、 T1548.005 和 T1098 的 Sigma + KQL 规则,以及完整的事件响应 playbook。

MayaTrail dashboard

## Docker Compose stack 完整的平台作为一个包含 7 个服务的 Docker Compose stack 运行: | 服务 | 用途 | |---|---| | `db` | PostgreSQL 16 数据库 | | `redis` | Celery 消息 broker + 结果后端 | | `backend` | Django REST API(Gunicorn) | | `worker_enterprise` | Celery worker ——通过 STS AssumeRole(Pulumi Automation API,进程内)在用户的 AWS 账户中部署、攻击和销毁 emulation | | `beat` | Celery Beat 调度器——每 15 分钟自动销毁过期的 stack | | `ui` | React SPA(Nginx,非 root) | | `nginx` | 边缘反向代理(将 `/` 路由至 UI,`/api/` + `/admin/` 路由至 backend) | ## 项目结构 ``` step1/ ├── backend/ # Django REST API │ ├── apps/ │ │ ├── users/ # Auth: registration (invite code), JWT login, Google SSO, profile │ │ ├── connectors/ # AWS account connection via STS AssumeRole │ │ ├── emulations/ # Emulation catalogue + run lifecycle (deploy/attack/destroy) │ │ ├── infrastructure/ # Stack model, Celery tasks, TTL auto-destroy │ │ ├── metrics/ # Platform Overview dashboard metrics (MITRE + attack-surface coverage) │ │ └── logs/ # Read-only audit log │ ├── config/ # Django settings (base/dev/prod), Celery, URLs │ ├── Dockerfile # Backend / beat image │ ├── Dockerfile.worker # Enterprise worker image │ └── requirements.txt ├── emulations/ # Adversary emulation packages (mounted at /opt/emulations) │ ├── registry.py # Auto-discovers packages via MANIFEST.py │ └── scarleteel/ # SCARLETEEL 2.0 emulation │ ├── MANIFEST.py # Identity, MITRE mappings, cost + TTL metadata │ ├── attack.py # run(outputs) — executes the kill chain │ ├── infra/ # Pulumi program (vulnerable infrastructure) │ ├── detections/ # Sigma + KQL detection rules per technique │ └── PLAYBOOK.md # Incident-response playbook ├── frontend/UI/ # React + TypeScript SPA │ ├── src/ │ │ ├── components/ # dashboard, emulations, playbooks, detections, platforms, ... │ │ ├── context/ # Auth, Theme, Platform contexts │ │ ├── services/ # API service layer (Axios) │ │ ├── data/ # Static taxonomies (e.g. attack-surface mapping) │ │ └── types/ # TypeScript type definitions │ ├── DESIGN.md # Frontend design system (source of truth) │ └── Dockerfile # Multi-stage: Node build -> Nginx ├── docker-compose.yml # Full stack orchestration (7 services) └── nginx.conf # Edge reverse proxy config ```
标签:AWS, Django, DPI, OPA, Pulumi, React, StruQ, Syscalls, 搜索引擎查询, 攻击模拟, 数据可视化, 数据展示, 测试用例, 版权保护, 红队, 自动化攻击, 逆向工具, 靶场, 驱动签名利用