Next-generation AWS Cloud Adversary Emulation platform
Project description
Atlas
AWS Cloud Adversary Emulation Platform
⚠️ This tool is still under development. APIs and behavior may change. Use with caution in production environments.
Contributing Red Team Techniques
We welcome contributions of new red team techniques. If you have attack paths, privilege escalation methods, or AWS abuse techniques you'd like to add to Atlas, please open an issue or submit a pull request. The planner and attack graph are designed to be extended—see src/atlas/planner/attack_graph.py and src/atlas/knowledge/data/api_detection_profiles.yaml for how techniques are modeled.
What is Atlas?
Atlas is a next-generation AWS cloud adversary emulation platform. It helps red teams and security researchers:
- Discover attack paths from a given identity (recon + attack graph)
- Plan multi-step privilege escalation chains
- Simulate execution without making AWS API calls
- Execute attack paths with configurable stealth and safety guardrails
- Explain attack paths with AI-powered or template-based explanations
Requirements
- Python 3.12+
- AWS credentials configured (e.g.
~/.aws/credentials)
Installation
Install from PyPI (recommended):
pip install atlas-redteam
Or with pipx (isolated environment, no venv needed):
pipx install atlas-redteam
Update to latest version:
pip install --upgrade atlas-redteam
# or
pipx upgrade atlas-redteam
Note for maintainers: To publish new versions so users get updates, see docs/RELEASE.md.
For development (editable install):
git clone https://github.com/Haggag-22/Atlas.git
cd Atlas
pip install -e ".[dev]"
Quick Start
# Configure AWS profile
atlas config --profile my-profile --region us-east-1
# Run recon + planning (creates a case)
atlas plan --case mycase
# List attack paths and simulate
atlas simulate --case mycase --attack-path AP-01
# Explain an attack path
atlas explain --case mycase --attack-path AP-01
# Open the GUI
atlas gui --case mycase
Commands
| Command | Description |
|---|---|
atlas config |
Set or show AWS profile and region |
atlas plan |
Run reconnaissance + planning. Uses pathfinding.cloud (65+ verified IAM privesc paths) automatically—syncs on first run if needed. |
atlas simulate |
Simulate an attack path (no AWS calls) |
atlas run |
Execute an attack path (uses AWS) |
atlas cases |
List saved cases |
atlas delete-case |
Delete a saved case |
atlas explain |
Explain an attack path (AI or template) |
atlas gui |
Open the Streamlit web UI |
atlas inspect |
Inspect detection profiles for API actions |
Output Structure
output/<case>/
├── case.json # Case metadata
├── plan/ # Recon + planning
│ ├── env_model.json
│ ├── attack_edges.json
│ ├── attack_paths.json
│ └── ...
├── sim/ # Simulation results (if run)
├── run/ # Execution results (if run)
└── explanations.json # Cached AI/template explanations
Attack Techniques (Examples)
Atlas models techniques such as:
- Role assumption (
sts:AssumeRole) - Access key creation (
iam:CreateAccessKey) - Policy attachment (
iam:AttachUserPolicy,iam:AttachRolePolicy) - Inline policy injection (
iam:PutUserPolicy,iam:PutRolePolicy) - PassRole abuse (Lambda, etc.)
- Trust policy modification (
iam:UpdateAssumeRolePolicy) - Lambda code injection
- S3 read/write access
Detection costs and noise levels are derived from CloudTrail and GuardDuty profiles in src/atlas/knowledge/.
Discovered Resources
The recon engine collects the following resource types (configurable via recon.resource_types):
| Resource | Service | Key Security Data |
|---|---|---|
| S3 Buckets | S3 | Bucket policies, Public Access Block |
| EC2 Instances | EC2 | Instance profiles, IMDS config, security groups |
| Lambda Functions | Lambda | Execution roles, resource policies, environment variables |
| RDS Instances | RDS | Public accessibility, encryption, IAM auth, snapshots |
| KMS Keys | KMS | Key policies, grants, rotation status |
| Secrets Manager Secrets | Secrets Manager | Resource policies, rotation, KMS encryption |
| SSM Parameters | SSM | Parameter types (SecureString), KMS key IDs |
| CloudFormation Stacks | CloudFormation | Stack roles, capabilities, outputs |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atlas_redteam-2.0.0a1.dev40.tar.gz.
File metadata
- Download URL: atlas_redteam-2.0.0a1.dev40.tar.gz
- Upload date:
- Size: 305.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd4c235d22b774e6e802a99f50f1b12ac6d456fcbb6146307a713e6747bf4042
|
|
| MD5 |
90d3bff12c22114d13d16a1cb9484860
|
|
| BLAKE2b-256 |
38b58ba4131e0b6c98ce9e8680371e5db0d08bf3bfaff4efe0c519341a3165f0
|
Provenance
The following attestation bundles were made for atlas_redteam-2.0.0a1.dev40.tar.gz:
Publisher:
publish.yml on Haggag-22/Atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atlas_redteam-2.0.0a1.dev40.tar.gz -
Subject digest:
bd4c235d22b774e6e802a99f50f1b12ac6d456fcbb6146307a713e6747bf4042 - Sigstore transparency entry: 990342501
- Sigstore integration time:
-
Permalink:
Haggag-22/Atlas@2506105e198602d2e413988faa6c3adc3920bec4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Haggag-22
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2506105e198602d2e413988faa6c3adc3920bec4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file atlas_redteam-2.0.0a1.dev40-py3-none-any.whl.
File metadata
- Download URL: atlas_redteam-2.0.0a1.dev40-py3-none-any.whl
- Upload date:
- Size: 309.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
556cba5d578863dce85031a75ac6b1e4c119fe7e54feb27710afc70f22650930
|
|
| MD5 |
9411e90297f9b1c3c558518a7eaae7ed
|
|
| BLAKE2b-256 |
7a6d785f354cb96bf61610547e8aeb0861ee6999e0f116c53d7050beddccec4a
|
Provenance
The following attestation bundles were made for atlas_redteam-2.0.0a1.dev40-py3-none-any.whl:
Publisher:
publish.yml on Haggag-22/Atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atlas_redteam-2.0.0a1.dev40-py3-none-any.whl -
Subject digest:
556cba5d578863dce85031a75ac6b1e4c119fe7e54feb27710afc70f22650930 - Sigstore transparency entry: 990342579
- Sigstore integration time:
-
Permalink:
Haggag-22/Atlas@2506105e198602d2e413988faa6c3adc3920bec4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Haggag-22
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2506105e198602d2e413988faa6c3adc3920bec4 -
Trigger Event:
push
-
Statement type: