0x01 前言
本文主要从红队视角讲述AWS公有云中的一些横向移动思路以及对应的一些身份和权限基础。
概括一下AWS横向移动思路:在获得一个凭据(AK、SK等)的前提下,枚举所有可访问资源,再通过可控制资源获得更多的凭据,获得更多资源控制权。
所以本文从下面三个方面介绍AWS横向移动:
-
AWS中的身份和访问管理机制
-
AWS中资源以及资源特殊性
-
AWS一些常见横向移动思路
0x02 AWS身份与访问管理
AWS身份与访问管理机制也就是IAM,官方对IAM的介绍是:“AWS Identity and Access Management (IAM) 是一种 Web 服务,可以帮助您安全地控制对 AWS 资源的访问。可以使用 IAM 来控制谁通过了身份验证(准许登录)并获得授权(拥有权限)来使用资源。”
简单来说AWS基于IAM机制实现了谁可以对什么资源进行什么操作的控制。
2.1 AWS中的用户与身份
用户分为根用户和普通用户:
根用户是在创建AWS账户时就建立的一个用户,具有该账户下的最高权限。根用户可以再根据需求创建一些有各种各样权限的普通用户,这些普通用户可以在各种不同的用途中发挥作用。类似企业在AWS中进行注册后获得一个管理员权限,这个管理员再为运维,开发人员等创建不同权限的普通用户。用户可以通过账号密码登录AWS控制台,也可以通过AK、SK实现编程访问。
除了用户,AWS中的身份还包括用户组和角色等:
为了用户统一管理,可以给用户分组,如开发组和运维组,然后再加上不同的权限;而为了方便权限的统一管理,可以创建不同的角色,分配不同的权限,如运维组长。
2.2 IAM权限配置
IAM中权限配置不同于其它ACL机制,是以策略(policies)来描述权限配置,这种形式下的权限配置更灵活。
下面是一个策略配置的demo: 配置了该策略的用户允许在2022/7/1之前对任何资源做IAM相关的任何操作
IAM策略中存在以下几个要素:
-
资源:EC2,Bucket,ECS等。
-
权限:执行操作的权限。
-
上下文:时间,位置,网络,资源等。
-
身份:附加到用户/用户组/角色/EC2实例上。
由于策略具体配置比较复杂,这里就不展开了。
下面介绍一些策略的分类,主要分为基于身份的策略和基于资源的策略:
identity based:附加到用户等身份上,说明了用户可以对哪些资源进行哪些操作,又细分为下面两种策略:
-
托管策略:独立的策略,可以建立好之后长期使用的。
AWS内置了很大适用于各种场景下的托管策略,当然也可以自己创建策略:
-
内联策略:直接附加到用户上的策略,单独为某个用户加权限。
• sources based:直接在资源(如储存桶)上配置某些用户可以访问,如储存桶可公开访问这种配置。
为了方便管理,可以把多个权限组合为一个角色:
0x03 AWS资源以及其特殊性
前面提到横向移动的过程也是不断获取资源,然后再根据资源获取更多凭据的过程,下面解释这么说的理由。
以EC2为例,EC2很符合我们对资源的认知,属于一种计算资源。稍微了解过公有云安全的应该都知道me