一、 概述

近日,绿盟科技星云实验室与北京豪密科技有限公司联合推出了一项云攻防技术培训课程。该课程旨在根据客户需求,为客户提供专题培训,帮助客户熟悉常见的云安全架构,并提供云攻防技术理解,同时结合模拟攻击实验提升攻防能力。该课程参与学员涵盖了特殊行业的单位、国企等十多家单位。课程共分为六个章节,分别就云计算基础、云上攻击路径、云上资产发现与信息收集、云服务层攻防、云原生安全攻防以及虚拟化安全攻防进行了详细介绍。

本系列文章旨在以科普为目的面向各位读者推出,本文是该系列的第二篇,主要介绍的内容是云上攻击路径,从传统攻防和云上攻防的异同点切入,结合一些常见的云上攻击场景,介绍了云计算场景存在的攻击路径。

二、云上攻击路径

2.1 

传统攻防与云上攻防的异同点

随着云计算的不断发展,企业逐渐将业务部署上云,由于云环境的复杂以及虚拟化技术的应用比例越来越高,传统攻防的手法可能并不适用云计算场景。因此需要对比分析云上攻防与传统攻防的异同点,从而对云计算攻防有更全面的认识。

图1 云计算发展阶段

图1梳理了云计算的发展阶段,主要分为:服务器虚拟化阶段、私有云&桌面虚拟化阶段、公有云&混合云阶段。而虚拟化技术作为云计算实现的重要支撑,在发展过程中被应用的比例越来越高,从这一规律表明,云计算攻防的主要关注点其实是虚拟化技术。

图2 OWASP Top 10 2017版至2021版

图2展示了OWSAP(Open Web Application Security Project)TOP 10从2017年至2021年的变化,表明传统攻防如今更关注的安全风险是失效的访问控制、加密机制失效、注入、不安全设计等。

而国际云安全联盟(简称CSA)在2022年发布的《云计算的11类顶级威胁》[1]报告中指出云计算环境中突出的安全风险:

1. 身份、凭据,访问和管理密钥、特权账号管理的不足

2. 不安全的接口和API

3. 配置不当和变更控制的不足

4. 缺乏云安全架构和战略

5. 不安全的软件开发

6. 不安全的第三方资源

7. 系统漏洞

8. 云计算数据的意外泄露

9. 无服务器和容器化工作负载的配置不当和利用

10. 有组织的犯罪、黑客和APT攻击

11. 云存储数据泄露

感兴趣的可以阅读原报告,在此不做赘述。

通过对比传统攻防与云计算攻防关注的风险点可以看出两者的区别:

- 攻击面:云计算攻防涉及的攻击面不止包含传统攻防中的资产和服务,同时增加了云计算独有的一些资产,如云服务资源、云管理平台等。

- 攻击复杂度:由于虚拟化技术、资源共享、相对复杂的架构,导致云计算攻防的逻辑层次更加复杂,攻击路径更加灵活多变,因此攻击复杂度变得更高。

2.2 

云上横向、纵向攻击路径

那么云计算都存在哪些攻击路径呢?参考腾讯安全《2019云安全威胁报告》[2]和《云上攻防:RED TEAMING FOR CLOUD》[3],可以总结云计算中的横向、纵向攻击路径如下:

图3 腾讯《2019云安全威胁报告》云计算攻击路径全景图

其中纵向攻击路径包括以下几种(纵向攻击指通过互联网、自外向内的攻击路径):

1. 利用裸金属服务器管理接口

2. 利用租户虚拟机逃逸

3. 独立租户 VPC 实例模式的容器和微服务网络攻击

4. 共享集群模式容器和微服务网络攻击

5. SaaS 服务共享集群模式攻击

6. 恶意攻击者针对云服务平台业务互联网络的旁路攻击

7. 恶意攻击者针对云服务平台开发/运营网络的旁路攻击

8. 针对云用户控制台界面或开放式 API 的攻击

横向攻击路径包括以下几种(横向攻击路径指在获取一定权限后,利用网络或共享资源进行横向移动的路径):

1. 利用租户资源和访问权限,在 VPC 内进行横向迁移攻击,或作为跳板攻击其他用户

2. 利用微服务不同功能组件间共享资源或权限的横向迁移

3. 利用共享数据库集群间的资源或数据进行横向迁移

4. 当成功实现虚拟机逃逸后,利用 Hypervisor 和硬件层面的控制面网络和接口进行横向迁移

5. 利用网络虚拟化的共享资源、威胁接触面和控制面网络进行横向迁移

6. 利用存储虚拟化的共享资源、威胁接触面和控制面网络进行横向迁移

7. 利用云平台管理面/控制面和业务面间的接口进行横向迁移

8. BMC 等固件破坏后获取进行物理机层面的潜伏,或利用底层硬件权限反向获取 Hypervisor OS 或租户虚拟机 OS 的数据和系统访问权

在实际的渗透测试过程中,需要根据信息收集的结果以及预期的攻击目标,选取正确的攻击路径。

2.3 

常见云上攻击场景

下面通过一些具体的攻击场景来加深对云计算攻击路径的理解。

场景一:利用泄露的云凭据&IAM服务

路径:窃取云凭据->查询凭据权限->利用IAM服务进行权限提升->横向移动->控制云服务资源

公有云厂商在提供各类云服务时,为了便于用户在多种场景下(如在业务代码中调用云服务功能或引入云上数据资源时)使用,大部分都支持API调用的方式,此时便涉及到访问控制的问题。用户使用云厂商生成的凭证(如图4所示)可成功访问该凭证对应权限下的云服务资源:

图4 某云厂商API密钥

当通过多种途径收集到泄露的云凭据时,一旦凭据被赋予高权限或风险权限,则可以直接访问云服务资源或利用IAM服务进行权限提升从而访问云服务资源,感兴趣的可以阅读《云凭证的泄露与利用》[4]和《浅谈云上攻防系列——云IAM原理&风险以及最佳实践》[5]进行详细了解。

场景二:利用实例元数据服务

路径:应用漏洞利用->获取元数据服务访问权限->角色信息获取->角色临时凭据获取->临时凭据权限查询->横向移动->控制云服务资源->数据窃取

元数据服务是一个内网服务,通过该服务,可以在主机内取得当前云主机实例的元数据,便于对管理和配置实例,但其中也包含一些敏感数据,如角色的临时访问凭据。当攻击者获取到云服务器实例的访问权限时,可以利用元数据服务获取角色的临时凭据进行权限提升和横向移动。

图5 Capital One攻击事件

图5展示了2019年Capital One公司发生的攻击事件原理,攻击者通过结合SSRF漏洞与元数据服务获取到了角色的临时凭据,然后利用该凭据横向移动至AWS S3存储桶中,最终窃取了S3存储桶中的敏感数据。

场景三:利用容器逃逸

路径:应用程序漏洞利用->获取容器权限->容器逃逸->横向移动至其他容器或其他节点->寻常有效凭据->横向移动->控制云服务资源

随着容器技术的火热发展与落地,越来越多企业将业务以容器化形式部署,因此通过应用程序漏洞等方式可能获取到的仅仅是容器内的权限,并不能满足攻击的最终目标。在《容器逃逸技术概览》[6]中,将容器逃逸利用手法划分为四种:

1. 危险配置导致的容器逃逸

2. 危险挂载导致的容器逃逸

3. 相关程序漏洞导致的容器逃逸

4. 内核漏洞导致的容器逃逸

通过其中任一手法都可能逃逸至宿主机,从而横向至其他容器或其他节点,然后寻找有效凭据,最终获取云服务资源权限。

场景四:利用错误配置的存储桶

路径:存储桶服务发现->使用凭据访问IAM->窃取云凭据->查询凭据权限->权限提升->横向移动->获取云服务器资源

对象存储也称为基于对象的存储,是一种计算机数据存储架构,旨在处理大量非结构化数据。 与其他架构不同,它将数据指定为不同的单元,并捆绑元数据和唯一标识符,用于查找和访问每个数据单元。这些单元(或对象)可以存储在本地,但通常存储在云端,以便于从任何地方轻松访问数据。大部分公有云厂商都推出了对象存储服务,如AWS S3、Azure Blob、阿里云OSS等。存储桶在使用时会涉及公开访问、公开读写等权限设置,一旦配置不当,便有可能造成安全风险。

场景五:利用虚拟机逃逸

路径:应用程序漏洞利用->获取云服务器控制权->虚拟机逃逸->获得宿主机控制权->横向移动->接管宿主机上虚拟机资源

当通过应用程序漏洞获取云服务器控制权时,可通过一些信息收集手段判断当前所处的环境,或是容器、或是虚拟机、或是物理机,具体可参考《虚拟机环境检测》[7]。当自身处于虚拟机环境中时,为了进一步扩大权限,便可以采用虚拟机逃逸,获取宿主机权限,尝试横向移动,从而接管宿主机上所有虚拟机资源。

场景六:对企业内部网络、运维或管理内部网络进行攻击

路径:钓鱼邮件攻击->进入企业内部网络->探测云管理平台->横向移动->获取云平台权限->接管云服务

在2022年的RSAC会议中,来自Varonis公司的Matt Radolec分享了议题《Pain in the Apps — Three Attack Scenarios Attackers Are Using to PWN SaaS》,主要介绍了三种针对SaaS平台的攻击场景,每种攻击场景都始于钓鱼邮件。当企业员工意识薄弱,容易受到钓鱼邮件攻击,可能被攻击者获取内网权限或窃取云平台的Cookie。然后攻击者利用内网权限或Cookie获取云平台权限,最终接管云服务,对企业安全造成破坏。

场景七:Kubernetes集群中的渗透测试

路径:应用程序漏洞利用->获取容器权限->容器逃逸->接管节点->利用高权限ServiceAccount横向移动->接管集群

与场景三中类似,当业务以集群模式部署时,可通过容器逃逸技术获取宿主机权限。Kubernetes集群中使用RBAC模型来进行授权[9]。当集群内的角色或集群角色权限配置不当时,可被攻击者用来横向移动或权限提升,从而接管集群。详情可见《容器逃逸即集群管理员?你的集群真的安全吗?》[10],其中介绍了一些利用风险的RBAC权限接管集群的案例,在此不做赘述。