■基于ATT&CK框架的Kubernetes攻击威胁矩阵( 三 )


hostPath挂载
攻击者可以使用hostPath挂载来访问基础主机 , 从而从容器破坏主机 。
访问云资源
如果将Kubernetes集群部署在云中 , 则在某些情况下 , 攻击者可以利用对单个容器的访问来访问集群外的其他云资源 。 例如 , 在AKS中 , 每个节点都包含服务principal凭证 , 该凭证存储在/etc/kubernetes/azure.json中 。 AKS使用该服务principal来创建和管理群集操作所需的Azure资源 。
默认情况下 , 服务principal在群集的资源组中具有贡献者权限 。 有权访问此服务principal文件的攻击者(例如 , 通过hostPath挂载)可以使用其凭据来访问或修改云资源 。
05防御绕过
■基于ATT&CK框架的Kubernetes攻击威胁矩阵
本文插图

防御绕过策略由攻击者用来避免检测并隐藏其活动的技术组成 。
清除容器日志
攻击者可能会攻陷容器上的应用程序或系统日志 , 以防止检测到其活动 。
删除Kubernetes事件
Kubernetes事件是一个Kubernetes对象 , 用于记录状态更改和集群中资源的故障 。 示例事件是在节点上创建容器 , 镜像拉取或Pod调度 。
Kubernetes事件对于识别集群中发生的变化非常有用 。 因此 , 攻击者可能希望删除这些事件(例如 , 通过使用''kubectl delete events - all'') , 以防止其在群集中的活动被检测到 。
Pod/容器名混淆
由诸如Deploymen或DaemonSet之类的控制器创建的Pod在其名称中具有随机后缀 。 攻击者可以利用此事实 , 并为后门容器命名 , 因为它们是由现有控制器创建的 。 例如 , 攻击者可能创建一个名为coredns-{随机字串后缀}的恶意容器 , 该容器看上去与CoreDNS部署有关 。
同样 , 攻击者可以将其容器部署在管理容器所在的kube系统名称空间 。
从代理服务器连接
攻击者可能使用代理服务器来隐藏其原始IP 。 具体来说 , 攻击者经常使用匿名网络(例如TOR)进行活动 。 这可用于与应用程序本身或与API服务器进行通信 。
06访问凭据
■基于ATT&CK框架的Kubernetes攻击威胁矩阵
本文插图

访问凭据策略由攻击者用来窃取凭据的技术组成 。 在容器化环境中 , 这些技术包括正在运行的应用程序的凭据 , 身份 , 群集中存储的密码或云凭据 。
列出Kubernetes机密
Kubernetes机密是一个对象 , 它使用户可以存储和管理敏感信息 , 例如集群中的密码和连接字符串 。 可以通过pod配置中的引用来使用机密 。 有权从API服务器搜索机密的攻击者(例如 , 通过使用pod服务帐户)可以访问敏感信息 , 其中可能包括各种服务的凭据 。
挂载服务principal
将群集部署在云中后 , 在某些情况下 , 攻击者可以利用对群集中容器的访问来获取云凭据 。 例如 , 在AKS中 , 每个节点都包含服务principal凭据 。
访问容器服务帐户
服务帐户(SA)代表K8S中的应用程序身份 。 默认情况下 , 将SA安装到集群中每个已创建的Pod 。 使用SA , 容器中的容器可以将请求发送到Kubernetes API服务器 。 可以访问Pod的攻击者可以访问SA令牌(/var/run/secrets/kubernetes.io/serviceaccount/token中) , 并根据SA权限在集群中执行操作 。 如果未启用RBAC , 则SA在群集中具有无限权限 。 如果启用了RBAC , 则其权限由与其关联的RoleBindingsClusterRoleBindings确定 。
配置文件中的应用程序凭据
开发人员将机密存储在Kubernetes配置文件中 , 例如pod配置中的环境变量 。 此类行为在Azure安全中心监视的群集中很常见 。 有权通过查询API服务器或访问开发人员终端上的那些机密文件的攻击者可以窃取并使用存储的机密 。
07发现


推荐阅读