AWS Pentesting
基本信息
在开始对 AWS 环境进行渗透测试之前,您需要了解一些关于 AWS 工作原理的基本知识,以帮助您理解需要做什么、如何查找错误配置以及如何利用它们。
组织层级、IAM 和其他基本概念的解释见:
学习实验室
模拟攻击的工具:
AWS 渗透测试/红队方法论
为了审计 AWS 环境,了解以下内容非常重要:哪些 服务正在使用,什么 被暴露,谁对什么 有访问权限,以及内部 AWS 服务与 外部服务 是如何连接的。
从红队的角度来看,攻陷 AWS 环境的第一步是设法获取一些 凭证。以下是一些获取凭证的思路:
GitHub(或类似)中的 泄露 - OSINT
社会 工程
密码 重用(密码泄露)
AWS 托管应用程序中的漏洞
服务器端请求伪造 访问元数据端点
本地文件读取
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
第三方 泄露
内部 员工
Cognito 凭证
或者通过 攻陷一个未认证的服务:
或者如果您正在进行 审查,您可以直接 请求凭证,使用这些角色:
在您成功获取凭证后,您需要知道 这些凭证属于谁,以及 他们可以访问什么,因此您需要进行一些基本的枚举:
基本枚举
SSRF
如果您在 AWS 内部的机器上发现了 SSRF,请查看此页面以获取技巧:
Whoami
您需要了解的第一件事是您是谁(您所在的账户以及有关 AWS 环境的其他信息):
注意,公司可能会使用 canary tokens 来识别 令牌被盗用和使用 的情况。在使用令牌之前,建议检查它是否为 canary token。 有关更多信息,请 查看此页面。
组织枚举
IAM 枚举
如果您拥有足够的权限,检查 AWS 账户内每个实体的权限 将帮助您了解您和其他身份可以做什么,以及如何 提升权限。
如果您没有足够的权限来枚举 IAM,您可以 通过暴力破解来窃取它们。 请查看 如何进行枚举和暴力破解:
现在您 已经获得了一些关于您凭据的信息(如果您是红队,希望您 没有被检测到)。是时候找出环境中正在使用哪些服务。 在以下部分中,您可以查看一些 枚举常见服务 的方法。
服务枚举、后期利用与持久性
AWS 拥有惊人的服务数量,在以下页面中,您将找到 基本信息、枚举 备忘单**,** 如何 避免检测、获取 持久性 以及其他关于其中一些服务的 后期利用 技巧:
请注意,您 不 需要 手动 执行所有工作,下面的帖子中您可以找到关于 自动工具 的 部分。
此外,在此阶段,您可能会发现 更多暴露给未认证用户的服务, 您可能能够利用它们:
权限提升
如果您可以 检查至少自己的权限 在不同资源上,您可以 检查是否能够获得更多权限。您应该至少关注以下权限:
公开暴露的服务
在枚举 AWS 服务时,您可能发现其中一些 向互联网暴露元素(虚拟机/容器端口、数据库或队列服务、快照或存储桶...)。 作为渗透测试者/红队成员,您应该始终检查是否可以在它们上找到 敏感信息/漏洞,因为它们可能为您提供 进一步访问 AWS 账户 的机会。
在本书中,您应该找到 关于如何查找暴露的 AWS 服务以及如何检查它们的信息。关于如何查找 暴露网络服务中的漏洞,我建议您 搜索 特定的 服务:
破坏组织
从根/管理账户
当管理账户在组织中创建新账户时,会在新账户中创建一个 新角色,默认命名为 OrganizationAccountAccessRole
,并给予 管理账户 访问新账户的 AdministratorAccess 策略。
因此,要以管理员身份访问子账户,您需要:
破坏 管理 账户并找到 子账户的 ID 和 角色的名称(默认是 OrganizationAccountAccessRole),以允许管理账户以管理员身份访问。
要查找子账户,请转到 AWS 控制台中的组织部分或运行
aws organizations list-accounts
您无法直接找到角色的名称,因此请检查所有自定义 IAM 策略,并搜索任何允许
sts:AssumeRole
访问之前发现的子账户 的策略。破坏 管理账户中的 主体,使其具有
sts:AssumeRole
权限,以访问子账户中的角色(即使该账户允许管理账户中的任何人进行冒充,由于这是外部账户,特定的sts:AssumeRole
权限是必要的)。
自动化工具
侦察
aws-recon:一个多线程的 AWS 安全专注的 库存收集工具,用 Ruby 编写。
cloudlist: Cloudlist 是一个 多云工具,用于获取资产(主机名,IP 地址)来自云服务提供商。
cloudmapper: CloudMapper 帮助您分析您的亚马逊网络服务(AWS)环境。它现在包含更多功能,包括安全问题的审计。
cartography: Cartography 是一个 Python 工具,它将基础设施资产及其之间的关系整合在一个由 Neo4j 数据库驱动的直观图形视图中。
starbase: Starbase 收集来自服务和系统的资产和关系,包括云基础设施、SaaS 应用程序、安全控制等,形成一个直观的图形视图,支持 Neo4j 数据库。
aws-inventory: (使用 python2) 这是一个工具,尝试 发现所有 AWS 资源 在一个账户中创建的。
aws_public_ips: 这是一个工具,用于 获取与 AWS 账户关联的所有公共 IP 地址(包括 IPv4/IPv6)。
Privesc & Exploiting
SkyArk: 发现扫描的 AWS 环境中最特权的用户,包括 AWS Shadow Admins。它使用 powershell。您可以在 https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1 的
Check-PrivilegedPolicy
函数中找到 特权策略的定义。pacu: Pacu 是一个开源的 AWS 利用框架,旨在针对云环境进行攻击性安全测试。它可以 枚举、查找 错误配置 并 利用 它们。您可以在 https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 的
user_escalation_methods
字典中找到 特权权限的定义。请注意,pacu 仅检查您自己的 privescs 路径(而不是账户范围内)。
PMapper: Principal Mapper (PMapper) 是一个脚本和库,用于识别 AWS 账户或 AWS 组织中 AWS 身份和访问管理 (IAM) 配置的风险。它将账户中的不同 IAM 用户和角色建模为有向图,从而能够检查 权限提升 和攻击者可能采取的获取 AWS 中资源或操作的替代路径。您可以在 https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing 中检查以
_edges.py
结尾的文件中使用的 权限以查找 privesc 路径。
cloudsplaining: Cloudsplaining 是一个 AWS IAM 安全评估工具,识别最小权限的违规行为并生成风险优先级的 HTML 报告。 它将向您展示潜在的 过度权限 客户、内联和 aws 策略 以及哪些 主体可以访问它们。 (它不仅检查权限提升,还检查其他有趣的权限,建议使用)。
cloudjack: CloudJack 评估 AWS 账户的 子域劫持漏洞,这是由于 Route53 和 CloudFront 配置的解耦造成的。
ccat: 列出 ECR 仓库 -> 拉取 ECR 仓库 -> 后门化 -> 推送后门镜像
Dufflebag: Dufflebag 是一个工具,搜索公共弹性块存储 (EBS) 快照中的秘密,这些秘密可能被意外遗留。
审计
cloudsploit: Aqua 的 CloudSploit 是一个开源项目,旨在检测云基础设施账户中的 安全风险,包括:亚马逊网络服务 (AWS)、微软 Azure、谷歌云平台 (GCP)、甲骨文云基础设施 (OCI) 和 GitHub(它不查找 ShadowAdmins)。
Prowler: Prowler 是一个开源安全工具,用于执行 AWS 安全最佳实践评估、审计、事件响应、持续监控、加固和取证准备。
CloudFox: CloudFox 帮助您在不熟悉的云环境中获得情境意识。它是一个开源命令行工具,旨在帮助渗透测试人员和其他进攻性安全专业人员在云基础设施中找到可利用的攻击路径。
ScoutSuite: Scout Suite 是一个开源的多云安全审计工具,能够对云环境进行安全态势评估。
cs-suite: 云安全套件 (使用 python2.7,似乎未维护)
Zeus: Zeus 是一个强大的工具,用于 AWS EC2 / S3 / CloudTrail / CloudWatch / KMS 最佳加固实践 (似乎未维护)。它仅检查系统内默认配置的凭证。
持续审计
cloud-custodian: Cloud Custodian 是一个用于管理公共云账户和资源的规则引擎。它允许用户 定义策略以启用良好管理的云基础设施,既安全又成本优化。它将组织中许多临时脚本整合为一个轻量级和灵活的工具,具有统一的指标和报告。
pacbot: 代码即政策机器人 (PacBot) 是一个用于 持续合规监控、合规报告和云安全自动化的平台。在 PacBot 中,安全和合规政策以代码形式实现。PacBot 发现的所有资源都根据这些政策进行评估,以衡量政策符合性。PacBot 自动修复 框架提供了通过采取预定义措施自动响应政策违规的能力。
streamalert: StreamAlert 是一个无服务器的 实时 数据分析框架,使您能够 摄取、分析和警报 来自任何环境的数据,使用您定义的数据源和警报逻辑。计算机安全团队使用 StreamAlert 每天扫描数 TB 的日志数据以进行事件检测和响应。
DEBUG: 捕获 AWS cli 请求
参考文献
Last updated