Pular para o conteúdo

Stratus Red Team

Stratus Red Team is an open-source adversary emulation platform that simulates real-world cloud attacks across AWS, Azure, GCP, and Kubernetes. It’s designed for security teams to validate detections, test incident response procedures, and improve cloud security posture through controlled purple team exercises.

go install github.com/DataDog/stratus-red-team/v2/cmd/stratus@latest
stratus --version
# Download latest release
cd /tmp
wget https://github.com/DataDog/stratus-red-team/releases/download/v2.x.x/stratus-linux-x86_64
chmod +x stratus-linux-x86_64
sudo mv stratus-linux-x86_64 /usr/local/bin/stratus
brew install stratus-red-team
stratus --version
docker run datadog/stratus-red-team:latest stratus --help
docker run -e AWS_REGION=us-east-1 datadog/stratus-red-team:latest stratus list
docker run -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
  -e AWS_REGION=us-east-1 \
  datadog/stratus-red-team:latest stratus detonate aws.defense-evasion.cloudtrail-delete
stratus list
stratus list --platform aws
stratus list --platform azure
stratus list --platform gcp
stratus list --platform kubernetes
stratus list --mitre-attack-tactic credential-access
stratus list --mitre-attack-tactic defense-evasion
stratus list --mitre-attack-tactic discovery
stratus show aws.initial-access.console-login-without-mfa
stratus show azure.credential-access.add-member-to-group
stratus detonate aws.discovery.ec2-enumerate-instances

Stratus follows a structured lifecycle for each technique:

Lifecycle StageDescriptionCommand
WarmupPre-requisite setup (create test IAM user, EC2 instances)stratus warmup <technique>
DetonateExecute the attack techniquestratus detonate <technique>
CleanupRemove artifacts created during detonatestratus detonate --cleanup
RevertUndo all changes from warmupstratus revert <technique>
StatusCheck warmup/detonate state of techniquestratus status <technique>
# 1. Warm up (creates test infrastructure)
stratus warmup aws.persistence.create-access-key

# 2. Detonate (runs the attack)
stratus detonate aws.persistence.create-access-key

# 3. View status
stratus status aws.persistence.create-access-key

# 4. Cleanup artifacts from detonate
stratus detonate --cleanup aws.persistence.create-access-key

# 5. Revert warmup changes
stratus revert aws.persistence.create-access-key
TechniqueDescription
aws.credential-access.ec2-get-password-dataRetrieve Windows instance password
aws.credential-access.ec2-describe-security-groupsList security groups and rules
aws.credential-access.iam-get-userEnumerate IAM user details
aws.credential-access.secretsmanager-listList AWS Secrets Manager secrets
TechniqueDescription
aws.persistence.create-access-keyCreate IAM access keys for persistence
aws.persistence.create-iam-userBackdoor IAM user creation
aws.persistence.create-login-profileAdd password-based console access
aws.persistence.create-iam-roleCreate privileged IAM role
aws.persistence.lambda-invocation-roleCreate Lambda execution role
TechniqueDescription
aws.defense-evasion.cloudtrail-deleteDelete CloudTrail logs
aws.defense-evasion.disable-cloudtrailDisable CloudTrail logging
aws.defense-evasion.disable-guarddutyDisable GuardDuty detections
aws.defense-evasion.vpc-flow-logs-disableDisable VPC Flow Logs
aws.defense-evasion.s3-block-public-access-disableDisable S3 public access block
TechniqueDescription
aws.discovery.ec2-enumerate-instancesList EC2 instances and details
aws.discovery.iam-enumerate-usersEnumerate IAM users
aws.discovery.iam-enumerate-rolesEnumerate IAM roles
aws.discovery.s3-list-bucketsList all S3 buckets
aws.discovery.rds-describe-instancesDiscover RDS database instances
TechniqueDescription
aws.exfiltration.s3-download-objectDownload objects from S3 bucket
aws.exfiltration.ec2-snapshot-createCreate EC2 snapshot for data theft
aws.exfiltration.rds-snapshot-createCreate RDS snapshot copy
aws.exfiltration.logs-get-log-eventsExtract CloudWatch logs
TechniqueDescription
aws.initial-access.console-login-without-mfaAWS console login without MFA
aws.initial-access.ec2-launch-instanceLaunch EC2 instance
TechniqueDescription
aws.lateral-movement.iam-assume-roleAssume IAM role across accounts
aws.lateral-movement.ec2-describe-instancesEnumerate instances for pivoting
stratus show azure.credential-access.az-cli-list-user-credentials
TechniqueDescription
azure.credential-access.get-managed-identity-tokenExtract managed identity tokens
azure.credential-access.list-app-service-authEnumerate app service authentication
TechniqueDescription
azure.persistence.create-service-principalCreate backdoor service principal
azure.persistence.add-global-adminAdd global admin to Entra ID
azure.persistence.app-service-publishPublish backdoor app service
stratus list --platform azure | grep entra
TechniqueDescription
azure.persistence.add-member-to-groupAdd backdoor member to group
azure.defense-evasion.disable-mfa-for-userDisable MFA on target user
TechniqueDescription
azure.discovery.list-subscriptionsEnumerate Azure subscriptions
azure.discovery.list-app-servicesDiscover app service instances
azure.discovery.list-keyvault-secretsEnumerate Key Vault secrets
stratus list --platform gcp | grep service-account
TechniqueDescription
gcp.persistence.iam-add-memberAdd backdoor IAM member
gcp.credential-access.get-service-account-keysEnumerate service account keys
TechniqueDescription
gcp.discovery.compute-instancesList Compute Engine instances
gcp.discovery.list-cloud-sqlEnumerate Cloud SQL instances
gcp.discovery.list-storage-bucketsList GCS buckets
TechniqueDescription
gcp.defense-evasion.disable-cloud-audit-logsDisable Cloud Audit Logging
TechniqueDescription
kubernetes.persistence.create-podCreate privileged pod
kubernetes.privilege-escalation.create-clusterroleCreate ClusterRole for persistence
TechniqueDescription
kubernetes.persistence.create-clusterrolebindingBind cluster admin role
kubernetes.discovery.list-clusterrolesEnumerate available roles
stratus detonate kubernetes.credential-access.list-secrets
TechniqueDescription
kubernetes.credential-access.list-secretsExtract Kubernetes secrets
kubernetes.credential-access.get-secretRead specific secret value
stratus list -o table
stratus list -o json | jq '.[] | .id'
# AWS + credential access
stratus list --platform aws --mitre-attack-tactic credential-access

# Azure + persistence
stratus list --platform azure --mitre-attack-tactic persistence

# Defense evasion across all platforms
stratus list --mitre-attack-tactic defense-evasion
# JSON output for scripting
stratus list --format json | jq '.[] | select(.tactic=="credential-access")'

# CSV export
stratus list --format csv > techniques.csv
stratus show aws.defense-evasion.cloudtrail-delete --format json

Warmup creates prerequisite infrastructure (IAM users, EC2 instances, S3 buckets) needed for techniques to run successfully.

stratus warmup aws.persistence.create-access-key
stratus warmup aws.discovery.ec2-enumerate-instances
stratus warmup aws.discovery.iam-enumerate-users
stratus status aws.persistence.create-access-key
# Some techniques support parameters
stratus warmup aws.discovery.ec2-enumerate-instances
stratus revert aws.persistence.create-access-key

Detonation executes the actual attack technique. Should be performed after successful warmup.

stratus detonate aws.initial-access.console-login-without-mfa
# Runs detonate + cleanup in one command
stratus detonate --cleanup aws.defense-evasion.cloudtrail-delete
stratus detonate --force aws.discovery.ec2-enumerate-instances
for technique in aws.discovery.ec2-enumerate-instances aws.discovery.iam-enumerate-users; do
  stratus detonate $technique
done
stratus detonate --dry-run aws.persistence.create-access-key
stratus status aws.persistence.create-access-key
Warmup:  ✓ done
Detonate: ✓ done
stratus revert aws.persistence.create-access-key
stratus detonate --cleanup aws.defense-evasion.cloudtrail-delete
stratus status aws.persistence.create-access-key --verbose
for technique in $(stratus list --platform aws --format json | jq -r '.[].id'); do
  echo "=== $technique ==="
  stratus status $technique 2>/dev/null | head -2
done

Stratus supports extending with custom techniques via JSON configuration.

techniques:
  - id: custom.example.my-technique
    name: My Custom Attack
    description: Custom detection test
    tactic: discovery
    platforms:
      - aws
    prerequisites:
      - iam:CreateUser
    steps:
      - name: Create test user
        module: ec2
        function: describe_instances
stratus detonate --techniques-dir ./custom_techniques custom.example.my-technique
# Verify AWS credentials
aws sts get-caller-identity

# Check Azure authentication
az account show

# Verify GCP credentials
gcloud auth list
# Check required IAM permissions
stratus show aws.persistence.create-access-key --show-permissions

# Ensure service account has necessary roles
gcloud projects get-iam-policy <project>
# Use verbose output
stratus warmup --verbose aws.persistence.create-access-key

# Check prerequisites
stratus show aws.persistence.create-access-key | grep -i prerequisite
# Force cleanup
stratus revert --force aws.persistence.create-access-key

# Manual cleanup may be required for failed techniques
aws iam delete-user --user-name stratus-<randomid>
# Add delays between detonations
for technique in $(stratus list --platform aws --format json | jq -r '.[].id'); do
  stratus detonate $technique
  sleep 5
done
PracticeDetails
Use Test AccountsRun on isolated test AWS/Azure/GCP accounts, not production
Document DetectionLog all detonate events and correlate with SIEM detections
Cleanup After TestsAlways run cleanup/revert to remove test artifacts
Start SimpleTest individual techniques before batch execution
Monitor LogsEnable CloudTrail, Azure Audit Logs, Cloud Audit Logs
Validate DetectionVerify your detection tools alert on technique execution
Schedule TestsRun red team exercises on regular cadence (monthly/quarterly)
Team CommunicationNotify relevant teams before purple team exercises
Review ResultsDocument which techniques triggered alerts and which didn’t
Iterate DetectionsUpdate detection rules based on gaps identified
#!/bin/bash
TECHNIQUE="aws.discovery.ec2-enumerate-instances"

echo "Starting red team exercise on $TECHNIQUE"
echo "1. Warming up..."
stratus warmup $TECHNIQUE

echo "2. Detonating attack..."
stratus detonate $TECHNIQUE

echo "3. Check your monitoring for alerts..."
sleep 30

echo "4. Cleaning up..."
stratus detonate --cleanup $TECHNIQUE
stratus revert $TECHNIQUE

echo "5. Verify cleanup..."
stratus status $TECHNIQUE
ToolPurpose
CALDERAMulti-platform adversary emulation with plugin architecture
Atomic Red TeamAtomic techniques mapping directly to MITRE ATT&CK
PacuAWS exploitation and reconnaissance framework
CloudGoatAWS-focused intentional vulnerability creator
GremlinChaos engineering for cloud infrastructure testing
KubeletKubernetes security assessment framework
FalcoRuntime security monitoring for cloud-native environments
# Run Stratus technique and monitor with Falco
stratus detonate kubernetes.privilege-escalation.create-clusterrole &
falco -o json | jq '.rule'

# Automate with Atomic Red Team
stratus list --format json | jq '.[] | select(.platform=="aws")'