Tests and validates Stratus Red Team attack techniques by executing warmup, detonation, and cleanup phases with comprehensive validation. Validates cloud credentials, parses command output, checks expected outcomes, and generates HTML reports. Use when testing attack techniques, validating TTPs, verifying technique behavior, or when user mentions stratus, warmup, detonate, or technique IDs like aws.*, azure.*, gcp.*, k8s.*, or entra-id.*. Supports AWS, Azure, GCP, Kubernetes, and Entra ID.
npx skills add https://github.com/DataDog/stratus-red-team --skill test-attack-technique
When this skill is invoked, follow this workflow:
--skip-cleanup flagv2/ directory first: cd v2go run cmd/stratus/*.go show <technique-id> silently to verify the technique existsgo run cmd/stratus/*.go listBased on the technique platform, validate current credentials and get explicit user confirmation.
See references/credentials.md for detailed validation commands per cloud provider.
Quick reference:
aws sts get-caller-identity - show Account, UserId, Arnaz account show - show name, id, user, tenantId. CRITICAL: Export AZURE_SUBSCRIPTION_ID and ARM_SUBSCRIPTION_ID environment variables before running stratus commandsgcloud config get-value project && gcloud auth list - show project and active accountkubectl config current-context && kubectl config view --minify - show cluster and namespaceaz ad signed-in-user show - show userPrincipalName and idPresent credentials to user and ask for explicit confirmation:
Current credentials for <platform>:
<formatted credential info>
These credentials will be used to:
1. Create infrastructure (warmup)
2. Execute the attack technique (detonate)
3. Clean up resources (cleanup)
Do you want to proceed with these credentials?
Use AskUserQuestion to get confirmation. If user declines, stop and provide instructions for changing credentials.
Based on the technique documentation, source code analysis, and your understanding of the attack:
Read the technique details:
go run cmd/stratus/*.go show <technique-id> provides the descriptionDraft a high-level plan including:
Present the plan to the user:
FIRST, output the complete plan as regular text (not in a tool call):
═══════════════════════════════════════════════════════════════
Test Execution Plan for <technique-name>
═══════════════════════════════════════════════════════════════
WARMUP PHASE - Expected Infrastructure:
• <list of expected resources>
DETONATION PHASE - Expected Attack Behavior:
• <list of expected actions and outcomes>
VALIDATION - What I'll Check:
• After warmup: <validation checks>
• After detonation: <validation checks>
═══════════════════════════════════════════════════════════════
THEN, after displaying the plan, use AskUserQuestion to get user validation:
If the user wants to modify, discuss changes and update the plan before proceeding.
Use TodoWrite to track progress through phases.
Copy this checklist and track your progress:
Test Execution Progress:
- [ ] Step 1: Validate technique exists
- [ ] Step 2: Validate and confirm credentials
- [ ] Step 3: Draft and approve execution plan
- [ ] Step 4: Export AZURE_SUBSCRIPTION_ID and ARM_SUBSCRIPTION_ID (Azure only)
- [ ] Step 5: Run warmup and parse output
- [ ] Step 6: Run detonation and parse output
- [ ] Step 7: Validate assumptions against results
- [ ] Step 8: Run cleanup (unless --skip-cleanup)
- [ ] Step 9: Generate HTML report
For Azure techniques, first export the subscription IDs:
export AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv)
export ARM_SUBSCRIPTION_ID=$AZURE_SUBSCRIPTION_ID
Then run warmup from the v2/ directory:
cd v2 && go run cmd/stratus/*.go warmup <technique-id>
Parse the output to extract:
Store for validation. Output is unstructured - intelligently parse based on technique type (e.g., look for "Created S3 bucket stratus-red-team-xxx" patterns).
cd v2 && go run cmd/stratus/*.go detonate <technique-id>
Parse the output to extract:
Compare expected vs. actual outcomes:
Example validation approaches:
*aws.credential-access.secretsmanager-retrieve-secrets:*
aws secretsmanager list-secrets or aws secretsmanager get-secret-value --secret-id <name>*aws.impact.s3-ransomware-individual-deletion:*
aws s3 ls and aws s3 ls s3://<bucket-name>/aws s3 ls s3://<bucket-name>/Store results (including CLI commands and outputs) for report.
cd v2 && go run cmd/stratus/*.go cleanup <technique-id>
Cleanup runs unless --skip-cleanup is set. Verify success and note any failures in report.
Generate a comprehensive HTML report saved to the scratchpad directory with filename:
test-report-<technique-id>-<timestamp>.html
Use the template file: Read assets/report-template.html and replace placeholders with actual values:
Placeholders to replace:
{{TECHNIQUE_ID}}, {{TECHNIQUE_NAME}}, {{PLATFORM}}, {{TACTIC}}, {{TIMESTAMP}}, {{CREDENTIAL_INFO}}{{EXPECTED_WARMUP_RESOURCES}}, {{EXPECTED_DETONATION_BEHAVIORS}}, {{PLANNED_CHECKS}}{{WARMUP_STATUS}}, {{WARMUP_STATUS_CLASS}} (success/failure), {{WARMUP_RESOURCES}}, {{WARMUP_OUTPUT}}{{DETONATION_STATUS}}, {{DETONATION_STATUS_CLASS}}, {{DETONATION_BEHAVIORS}}, {{DETONATION_OUTPUT}}{{VALIDATION_CHECKS}} - Generate HTML for each check including CLI commands and outputs: <div class="check pass">
<strong>Check:</strong> Storage account exists
<br><strong>Expected:</strong> stratus-rg-xxxxx created
<br><strong>Actual:</strong> stratus-rg-xxxxx found in output
<div class="check-command">$ aws s3 ls</div>
<div class="check-output">2024-01-15 10:30:45 stratus-red-team-bucket-abc123</div>
<strong>Status:</strong> Pass
</div>
Include CLI commands and outputs when validation involved running commands.
{{CLEANUP_STATUS}}, {{CLEANUP_STATUS_CLASS}}, {{CLEANUP_OUTPUT}}{{OVERALL_RESULT}}, {{CHECKS_PASSED}}, {{TOTAL_CHECKS}}, {{ISSUES}}, {{RECOMMENDATIONS}}After generation: show file path, display summary, suggest opening in browser.
v2/ directoryAssess Kubernetes workloads and cluster configuration for AKS Automatic compatibility. Identifies incompatibilities, generates fixes, and guides migration from AKS Standard to AKS Automatic. WHEN: migrate to AKS Automatic, check AKS Automatic readiness, validate manifests for Automatic, assess cluster for Automatic compatibility, fix deployment for Automatic compatibility, identify AKS Automatic migration blockers, is my cluster ready for AKS Automatic.
Discovers available Azure OpenAI model capacity across regions and projects. Analyzes quota limits, compares availability, and recommends optimal deployment locations based on capacity requirements. USE FOR: find capacity, check quota, where can I deploy, capacity discovery, best region for capacity, multi-project capacity search, quota analysis, model availability, region comparison, check TPM availability. DO NOT USE FOR: actual deployment (hand off to preset or customize after discovery), quota increase requests (direct user to Azure Portal), listing existing deployments.
Interactive guided deployment flow for Azure OpenAI models with full customization control. Step-by-step selection of model version, SKU (GlobalStandard/Standard/ProvisionedManaged), capacity, RAI policy (content filter), and advanced options (dynamic quota, priority processing, spillover). USE FOR: custom deployment, customize model deployment, choose version, select SKU, set capacity, configure content filter, RAI policy, deployment options, detailed deployment, advanced deployment, PTU deployment, provisioned throughput. DO NOT USE FOR: quick deployment to optimal region (use preset).
Unified Azure OpenAI model deployment skill with intelligent intent-based routing. Handles quick preset deployments, fully customized deployments (version/SKU/capacity/RAI policy), and capacity discovery across regions and projects. USE FOR: deploy model, deploy gpt, create deployment, model deployment, deploy openai model, set up model, provision model, find capacity, check model availability, where can I deploy, best region for model, capacity analysis. DO NOT USE FOR: listing existing deployments (use foundry_models_deployments_list MCP tool), deleting deployments, agent creation (use agent/create), project creation (use project/create).
Intelligently deploys Azure OpenAI models to optimal regions by analyzing capacity across all available regions. Automatically checks current region first and shows alternatives if needed. USE FOR: quick deployment, optimal region, best region, automatic region selection, fast setup, multi-region capacity check, high availability deployment, deploy to best location. DO NOT USE FOR: custom SKU selection (use customize), specific version selection (use customize), custom capacity configuration (use customize), PTU deployments (use customize).
This skill should be used when working with LaminDB, an open-source data framework for biology that makes data queryable, traceable, reproducible, and FAIR. Use when managing biological datasets (scRNA-seq, spatial, flow cytometry, etc.), tracking computational workflows, curating and validating data with biological ontologies, building data lakehouses, or ensuring data lineage and reproducibility in biological research. Covers data management, annotation, ontologies (genes, cell types, diseases, tissues), schema validation, integrations with workflow managers (Nextflow, Snakemake) and MLOps platforms (W&B, MLflow), and deployment strategies.
Latch platform for bioinformatics workflows. Build pipelines with Latch SDK, @workflow/@task decorators, deploy serverless workflows, LatchFile/LatchDir, Nextflow/Snakemake integration.
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.
Take datadog/test-attack-technique from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.