加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

Kubernetes入侵威胁矩阵

发布时间:2021-08-19 18:44:41 所属栏目:云计算 来源:互联网
导读:云和容器技术的快速增长,容器编排系统成了发展最快的技术。尤其是谷歌Kubernetes项目成了容器编排事实上的业界标准。越来越多的企业和开发人员已经将自己的工作转移到了K8S上。尽管K8S具有很多优势,但是统一和集中化的管控也在安全方面带来了新的挑战。在
云和容器技术的快速增长,容器编排系统成了发展最快的技术。尤其是谷歌Kubernetes项目成了容器编排事实上的业界标准。越来越多的企业和开发人员已经将自己的工作转移到了K8S上。尽管K8S具有很多优势,但是统一和集中化的管控也在安全方面带来了新的挑战。在容器云化的环境中(比如K8S)中也存在的各种安全风险,利用ATT&CK模型本文我们介绍K8S攻击威胁矩阵。
Kubernetes
概述
系统化的研究安全和防控最常用的方法是使用MITRE ATT&CK框架。MITRE是美国政府资助的一家研究机构,该机构源于麻省大学专门研究包括军方高密的安全项目,受美国国家标准技术研究所(NIST)的资助,MITRE开展了大量的网络安全研究和实践。
2013年了MITR推出了ATT&CK模型,该模型根据观察实际数据来定义攻击行为并对其分类。ATT&CK模型通过结构化矩阵的形式将已知的攻击行为用威胁信息列表和可信自动化交换表达。从Windows和linux OS覆盖开始,ATT&CK的矩阵涵盖了网络攻击(策略)所涉及的各个阶段,并详细介绍了其中的每个已知方法(技术)。这些矩阵可以帮助企业了解其环境中的攻击面,并确保可以充分检测和缓解各种风险。
MITER ATT&CK框架策略包括:初始访问、执行、持久化、提权、防御绕过、访问凭据、发现、横向扩展、影响力等。
 
对于不同平台下,尽管攻击技术与针对不同平台(比如Linux和Windows)的攻击技术有所差异,但其根本策略实际上是相似的。
例如,将前四个策略(初始访问、执行、持久化、提权)中,如果将OS转换为容器对应为:
"对计算机的初始访问"变成"对可以的初始访问";
"计算机上的恶意代码"转换为"对容器的恶意活动" ;
"保持对计算机的访问权限"变为"保持对集群访问的权限";
"在计算机上获得更高的特权"转化为"在集群获得中获得更高的特权"。
基于此,改造原始工具矩阵为容器云(K8S)版本ATT&CK的威胁攻击矩阵,其中包括与容器编排安全相关的主要技术。
 
如上图,矩阵包含上面列出的9种策略。其中个策略又包含多项技术,攻击者可以使用这些技术来实现不同的目标。下面我们对具体策略具体展开介绍。
1. 访问入口
 
访问入口策略包括获得的对资源访问权限的技术。在容器云虚拟化化环境中,这些技术可以对我们的访问重定向。可以对访问通过URL串行链接,也可以通过访问部署的恶意或被篡改的资源来实现。
(1) 使用云凭证
如果将K8S集群部署在公共云中(例如亚马逊AWS的EKS,谷歌GCP的GKE或微软Azure的AKS),则云凭据(密码,证书,token)泄露可能导致集群被接管。有权访问云帐户凭据的攻击者可以访问任意操纵整个集群。
(2) 注册表中恶意镜像
在群集中运行恶意的镜像可能会损坏群集。可访问私有注册表的攻击者可以在注册表中随意植入自己的非法代码或者木马等供用户拉取使用。此外,用户拉取来自公共注册表(例如Docker Hub)中未经验证的镜像,这些镜像可能是恶意镜像。
基于无限信任的基础镜像建设镜像也会导致类似的结果。
(3) Kubeconfig配置
kubconfigl也使用kubeconfig文件,其中包含有关Kubernetes集群的详细信息,包括它们的分区和凭据。如果群集托管为云服务(例如AKS或GKE),则该文件通过云命令下载到客户端。如果攻击者通过窃取的客户端配置文件,则可以使用该文件访问副本。
(4) 有漏洞的应用程序
在集群中运行有公开漏洞的应用程序可引起集群的访问权限。可能会触发远程代码执行突破(RCE)攻击容器。如果服务帐户安装在容器中(K8S的默认行为),则攻击者可以窃取服务帐户并对API服务器发送请求。
(5) 暴露的仪表板
Kubernetes仪表板是基于Web的用户界面,可用于监视和管理K8S集群。默认情况仪表板只能通过内网访问。如果图省事将仪表板暴露在外部,则可以允许进行身份验证和部署远程管理。
2. 执行攻击
执行攻击策略包括攻击者用来在最大化中运行其代码的技术。
 
(1) 容器执行
拥有权限的攻击者可以使用exec命令(" kubectl exec")在群集中的容器中运行恶意命令。通过这种方法,攻击者可以使用合法镜像(例如Ubuntu OS镜像)作为后门容器,并使用" kubectl exec"远程运行其恶意代码。
(2) 新建容器
攻击者可能尝试通过新建容器在集群中运行其代码。有权在群集中部署Pod或控制器的攻击者(例如DaemonSetReplicaSetDeployment)则可以创建用于代码执行的新容器。
(3) 应用程序利用
部署在群集中并且易受到远程代码执行漏洞或最终允许执行代码的漏洞的应用程序使攻击者能够在群集中运行代码。如果将服务帐户安装到容器(K8S中的默认行为),则攻击者将能够使用此服务帐户凭据对API服务器发送请求。
(4) 在容器内运行的SSH
攻击者可能会使用在容器内运行的SSH服务。如果攻击者通过暴力破解或其他方法(例如网络钓鱼)获得了到容器的有效凭据,则可以通过SSH远程访问该容器。
3. 持久化
 
持久化策略由攻击者用来在失去最初访问点的情况下保持对群集的访问的技术。
(1) 后门容器
攻击者在集群的容器中运行恶意代码。通过使用诸如DaemonSet或Deployments之类的K8S控制器,攻击者可以确保在集群中的一个或者多个节点中运行容器。
(2) 可写的hostPath挂载
hostPath卷将目录或文件从主机装载到容器。有权在群集中创建新容器的攻击者可以创建一个具有可写hostPath卷的容器,并在基础主机上获得持久性。例如,可以通过在主机上创建cron作业来实现。
(3) K8S CronJob
Kubernetes Job可以用于运行为批处理作业执行有限任务的容器。Kubernetes Job是一个控制器,它创建一个或多个Pod,并确保指定数量的Pod终端。Kubernetes CronJob用于计划作业。攻击者可能使用Kubernetes CronJob来调度集群容器执行恶意代码。
4. 权限提升
 
权限提升策略由攻击者用来在环境中获取比其当前拥有的更高特权的技术组成。在容器化环境中,权限提升技术包括从容器访问节点,在集群中获得更高的特权,甚至获得对云资源的访问。
(1) 特权容器
特权容器是具有主机功能的容器,它可以消除常规容器的所有限制。特权容器可以执行几乎可以直接在主机上执行的所有操作。获得对特权容器的访问权或有权创建新的特权容器的攻击者(例如,通过使用窃取的pod服务帐户),攻击者可以访问主机的资源。
(2) Cluster-admin 绑定
基于角色的访问控制(RBAC)是Kubernetes中的关键安全功能。RBAC可以限制集群中各种身份的允许操作。Cluster-admin是Kubernetes中的内置高特权角色,有权在群集中创建绑定和群集绑定的攻击者可以创建到群集管理员ClusterRole或其他高特权角色的绑定。
(3) hostPath挂载
攻击者可以使用hostPath挂载来访问基础主机,从而从容器破坏主机。
(4) 访问云资源
如果将Kubernetes集群部署在云中,则在某些情况下,攻击者可以利用对单个容器的访问来访问集群外的其他云资源。例如,在AKS中,每个节点都包含服务principal凭证,该凭证存储在/etc/kubernetes/azure.json中。AKS使用该服务principal来创建和管理群集操作所需的Azure资源。
默认情况下,服务principal在群集的资源组中具有贡献者权限。有权访问此服务principal文件的攻击者(例如,通过hostPath挂载)可以使用其凭据来访问或修改云资源。
5. 防御绕过
 
防御绕过策略由攻击者用来避免检测并隐藏其活动的技术组成。
(1) 清除容器日志
攻击者可能会攻陷容器上的应用程序或系统日志,以防止检测到其活动。
(2) 删除Kubernetes事件
Kubernetes事件是一个Kubernetes对象,用于记录状态更改和集群中资源的故障。示例事件是在节点上创建容器,镜像拉取或Pod调度。
Kubernetes事件对于识别集群中发生的变化非常有用。因此,攻击者可能希望删除这些事件(例如,通过使用" kubectl delete events - all"),以防止其在群集中的活动被检测到。
(3) Pod/容器名混淆
由诸如Deploymen或DaemonSet之类的控制器创建的Pod在其名称中具有随机后缀。攻击者可以利用此事实,并为后门容器命名,因为它们是由现有控制器创建的。例如,攻击者可能创建一个名为coredns-{随机字串后缀}的恶意容器,该容器看上去与CoreDNS部署有关。
同样,攻击者可以将其容器部署在管理容器所在的kube系统名称空间。
(4) 从代理服务器连接
攻击者可能使用代理服务器来隐藏其原始IP。具体来说,攻击者经常使用匿名网络(例如TOR)进行活动。这可用于与应用程序本身或与API服务器进行通信。
6. 访问凭据
 
访问凭据策略由攻击者用来窃取凭据的技术组成。在容器化环境中,这些技术包括正在运行的应用程序的凭据,身份,群集中存储的密码或云凭据。
(1) 列出Kubernetes机密
Kubernetes机密是一个对象,它使用户可以存储和管理敏感信息,例如集群中的密码和连接字符串。可以通过pod配置中的引用来使用机密。有权从API服务器搜索机密的攻击者(例如,通过使用pod服务帐户)可以访问敏感信息,其中可能包括各种服务的凭据。

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读