您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[腾讯]:云上安全攻防实战手册 - 发现报告
当前位置:首页/行业研究/报告详情/

云上安全攻防实战手册

信息技术2022-09-15-腾讯在***
云上安全攻防实战手册

目 录 前 言 .....................................................................................................................................................................1 一、元数据服务带来的安全挑战...................................................................................................................2 二、Web应用托管服务中的元数据安全隐患 ....................................................................................... 13 三、对象存储服务访问策略评估机制研究 ............................................................................................. 23 四、Kubelet访问控制机制与提权方法研究 ......................................................................................... 48 五、国内首个对象存储攻防矩阵................................................................................................................ 60 六、SSRF漏洞带来的新威胁 ...................................................................................................................... 68 七、CVE-2020-8562漏洞为k8s带来的安全挑战 ........................................................................... 86 八、云服务器攻防矩阵 .................................................................................................................................. 94 九、Etcd风险剖析 ........................................................................................................................................ 106 十、云IAM原理&风险以及最佳实践 .................................................................................................... 115 1 前 言 云计算的出现彻底改变了IT产业和传统企业的IT结构,各行各业正加速上云步伐。从安全从业者视角来看,云就像一个极具诱惑力的“蜜罐”,云上海量的数据和业务正吸引着攻击者的视线。 近年来,云上安全威胁呈现出三大趋势。首先在威胁主体上,专业化的高级持续性威胁(APT)组织层出不穷,当前全球范围内具备国家级攻击力量的黑客组织就高达40多个;其次在受攻击目标上,国家关键基础设施、企业商业数据、个人敏感信息等都成为攻击标的;最后,数实融合和数字化转型的潮流致使云安全面临着资源和人力的巨大缺口。 云时代下,各种新技术不断涌现,使得云安全在攻击面以及攻击路径上呈现出愈发复杂的状态。当前,云上安全攻防实力已成为企业价值的重要参数之一,腾讯安全依托20余年网络攻防实战技术的沉淀,从元数据服务、对象存储服务、Kubelet访问控制机制、安全漏洞等角度出发,将实战经验汇编成《云上安全攻防实战手册》,以期为行业带来参考。 2 一、元数据服务带来的安全挑战 在针对云上业务的的攻击事件中,很多攻击者将攻击脆弱的元数据服务作为攻击流程中重要的一个环节并最终造成了严重的危害。 以2019年的美国第一资本投资国际集团(CapitalOne)信息泄露事件举例,根据《ACase Study of the Capital One Data Breach》报告指出,攻击者利用CapitalOne部署在AWS云上实例中的SSRF漏洞向元数据服务发送请求并获取角色的临时凭证,在获取角色临时凭据后将该角色权限下的S3存储桶中的数据复制到攻击者的本地机器上,最终导致这一严重数据泄露事件的产生,这一事件影响了北美超过1亿人。CapitalOne 的股价在宣布数据泄露后收盘下跌 5.9%,在接下来的两周内总共下跌了 15%。 Capital One信息泄露事件攻击原理图,可参见图: 图1-1 CapitalOne信息泄露事件攻击原理图 在介绍元数据服务带来的安全挑战之前,我们先来简单介绍一下元数据服务以及角色的概念。 01.元数据服务以及角色介绍 元数据服务 元数据即表示实例的相关数据,可以用来配置或管理正在运行的实例。用 户可以通过元数据服务在运行中的实例内查看实例的元数据。以AWS举例,可 3 以在实例内部访问如下地址来查看所有类别的实例元数据:http://169.254.169.254/latest/meta-data/ 169.254.169.254属于链路本地地址(Link-localaddress),链路本地地址又称连结本地位址,是计算机网络中一类特殊的地址,它仅供于在网段,或广播域中的主机相互通信使用。这类主机通常不需要外部互联网服务,仅有主机间相互通讯的需求。IPv4链路本地地址定义在169.254.0.0/16地址块。 而在具体的技术实现上,云厂商将元数据服务运行在Hypervisor(虚拟机管理程序)上。当实例向元数据服务发起请求时,该请求不会通过网络传输,也永远不会离开这一台计算机。基于这个原理,元数据服务只能从实例内部访问。 可以PING云厂商所提供的元数据服务域名,以查看其IP地址 图1-2 从上图可见,元数据服务属于链路本地地址。从设计上来看,元数据服务看起来很安全,那为什么说元数据服务脆弱呢? 由于元数据服务部署在链路本地地址上,云厂商并没有进一步设置安全措施来检测或阻止由实例内部发出的恶意的对元数据服务的未授权访问。攻击者可以通过实例上应用的SSRF漏洞对实例的元数据服务进行访问。 因此,如果实例中应用中存在SSRF漏洞,那么元数据服务将会完全暴露在攻击者面前。 在实例元数据服务提供的众多数据中,有一项数据特别受到攻击者的青睐,那就是角色的临时访问凭据。这将是攻击者由SSRF漏洞到获取实例控制权限的桥梁。 访问管理角色 既然攻击涉及到访问管理角色的临时凭据,我们首先看下访问管理角色是 什么:访问管理的角色是拥有一组权限的虚拟身份,用于对角色载体授予云中 4 服务、操作和资源的访问权限。用户可以将角色关联到云服务器实例。为实例绑定角色后,将具备以下功能及优势:  可使用 STS 临时密钥访问云上其他服务  可为不同的实例赋予包含不同授权策略的角色,使实例对不同的云资源具有不同的访问权限,实现更精细粒度的权限控制  无需自行在实例中保存 SecretKey,通过修改角色的授权即可变更权限,快捷地维护实例所拥有的访问权限 具体的操作流程如下: 图1-3 在将角色成功绑定实例后,用户可以在实例上访问元数据服务来查询此角色的临时凭据,并使用获得的临时凭据操作该角色权限下的云服务API接口。 02.针对元数据服务的攻击 接下来我们将介绍下针对元数据服务的一些常见的攻击模式。攻击者可以首先通过目标实例上的SSRF漏洞获取与实例绑定的角色名称(rolename)。攻击者可以构造访问元数据接口的payload,并通过存在SSRF漏洞的参数传递: http://x.x.x.x/?url=http://169.254.169.254/latest/meta-data/ iam/info,在获取到角色名称后,攻击者可以继续通过SSRF漏洞获取角色的临时凭证:http://x.x.x.x/url=http://169.254.169.254/latest/metadata /iam/security-credentials/<rolename> 获取角色临时凭据的案例可参见下图: 图1-4 从上图可见,攻击者可以获取角色的TmpSecretID以及TmpSecretKey。 5 在攻击者成功获取角色的临时凭据后,将会检查获取到的角色临时凭据的权限策略。有的时候,可以通过获取到的角色名称,来猜测该角色的权限策略,例如角色名为:TKE_XXX,则这个角色很大可能是拥有操作TKE容器服务的权限。 此外,如果获取的临时密钥拥有查询访问管理接口的权限,攻击者可以通过访问“访问管理”API来准确获取的角色权限策略。可以通过如下几种方式判断获取角色的权限策略: 1、通过使用临时API凭据访问“获取角色绑定的策略列表”API接口,见下图: 图1-5 从上图可见,攻击者获取到的与实例绑定的角色的临时凭据权限策略是“AdministratorAccess”,这个策略允许管理账户内所有用户及其权限、财务相关的信息、云服务资产。 2、通过使用临时API凭据访问“获取角色详情”API接口,见下图: 图1-6 通过查询的返回结果可以见,角色的权限策略为AssumeRole。 在弄清楚窃取的凭据所拥有的权限后,攻击者便可以通过凭据的权限制定后续的攻击流程。但在开始后续的攻击阶段之前,攻击者会先判断当前权 限是否可以获取目标的数据资源。 在所有云资源中,攻击者们往往对目标的数据更加感兴趣。如果攻击者获取的密钥拥有云数据库服务或云存储服务等服务的操作权限,攻击者将会尝试窃取目标数据。临时凭据同样也可以帮助攻击者们在目标实例中执行指令并控制实例权限。 6 与通过密钥构造请求这种方式发起攻击相比,攻击者们在实战中更倾向于使用云命令行工具来进行攻击。 云服务厂商为用户提供了相应的云命令行工具以管理云服务,例如腾讯云提供的TCCLI工具、AWS的AWSCLI工具。攻击者可以通过在云命令行工具中配置窃取到的API密钥来对云资源进行调用。与构造请求访问云API接口这种方式相比,使用云命令行工具将会给攻击者带来更多便捷。 在使用云命令行工具之前,应先配置API密 钥 ,以AWSCLI工具配置举例,可以将: 图1-7 攻击者将窃取来的AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN配置完成后,可以使用云命令行工具在目标实例上执行命令。 在配置好密钥后,攻击者可以尝试使用如下图命令通过AWSCLI在实例中运行bash脚本以获取实例控制权限。 图1-8 借助通过元数据服务窃取到的凭据以及AWSCLI所提供的功能,攻击者可以在实例中执行反弹shell命令,由此进入实例。 除此之外,攻击者还可以选择修改userdata,将反弹shell写入userdata中后将实例重启,从而控制实例。 7 Userdata涉及到云厂商提供的一种功能,这项功能允许用户自定义配置在实例启动时执行的脚本的内容。 通过这一功能,攻击者可以尝试在实例的userdata中写入恶意