针对Kubernetes集群的攻击与检测

VSole2023-05-18 15:55:34

2023年4月24日,网络安全行业年度盛会 RSA Conference在旧金山隆重开幕。这次RSAC中,InGuardians公司CEO Jay Beale及安全研究员Alana Trimble带来了一个关于Kubernetes集群的攻击和检测议题Attacking and Detecting Attacks on Kubernetes Clusters。该议题通过演示DEF CON 30's Kubernetes CTF的解决方案,展示在Kubernetes集群中的攻击和防御思路。

DEF CON 30's Kubernetes CTF与议题简介

DEF CON 30's Kubernetes CTF以电影《Scott Pilgrim vs. the World》[1]为主题,是InGuardians公司举办的第二次Kubernetes CTF。

Kubernetes CTF为经验丰富的Kubernetes攻击者提供一个展示攻击技巧的机会,并为新人提供一个学习Kubernetes安全的平台。Kubernetes CTF的举办吸引了DEF CON社区中越来越多的研究人员关注Kubernetes安全。

议题《Attacking and Detecting Attacks on Kubernetes Clusters》[2]使用与DEF CON 30's Kubernetes CTF完全相同的CTF场景,给出了一个Kubernetes CTF解决方案。从一个 Kubernetes节点IP开始,在集群中Pod横向移动,拿到所有的Flag。最后,议题给出了一些Kubernetes集群安全加固策略,并介绍了其公司的一款开源Kubernetes渗透工具。

Kubernetes CTF解决思路

寻找Flag之前先了解本届Kubernetes CTF主题——《Scott Pilgrim vs. the World》。《Scott Pilgrim vs. the World》是一部2010年的动作喜剧电影。故事讲述了年轻摇滚乐手Scott Pilgrim与他所爱的女孩——发型师Ramona Flowers相遇并热恋,但在追求她的过程中,Scott需要先战胜她的七个前男友(Matthew Patel、Lucas Lee、Todd Ingram、Roxy Richter、Ken Katayanagi、Kyle Katayanagi以及Gideon Graves)。接下来,笔者将按Flag顺序介绍议题中给出的每个Flag的解决思路。

Flag1思路

1)使用端口扫描工具发现Kubernetes节点对外暴露的端口和服务;

2)使用目录遍历工具遍历出节点对外暴露服务的api;

3)使用Fuzz工具遍历出服务的请求参数,构造合适编码的参数值;

4)通过反弹Shell拿到该服务对应Pod:matthew-patel的Shell,并在该Pod的文件系统中找到Flag1。

Flag2思路

1)在Pod:matthew-patel中找到SA Token:matthew-patel(ServiceAccount Token:matthew-patel)和Namespace:matthew-patel;

2)根据提示确定Namespace:lucas-lee,并确定Token:matthew-patel在Namespace:lucas-lee中可以执行的操作——List Pod;

3)进入Namespace:lucas-lee下的Pod:lucas-lee-vault-0中,通过反弹Shell拿到Pod:lucas-lee-vault-0的Shell;

4)在Pod:lucas-lee-vault-0中利用Vault工具找到Flag2。

Flag3思路

1)确定SA Token:lucas-lee在Namespace:lucas-lee中可执行的操作——List Secret;

2)通过List列出Namespace:lucas-lee中的Secret,得到Flag3及SA Token: stunt-team。

Flag4思路

1)确定SA Token:stunt-team在Namespace:todd-ingram中可执行的操作——Get/List Pod;

2)列出Namespace:todd-ingram所有Pod,根据Pod的describe信息确定Flag4所在的Pod:spilledcoffee;

3)进入Pod:spilledcoffee中,通过反弹Shell拿到Pod:spilledcoffee的Shell,找到Flag4及SA Token:juile。

Flag5思路

1)确定SA Token:julie在Namespace:todd-ingram中可执行的操作——List/Get/Update/Patch Service;

2)导出Service:envy的yaml配置文件,将该Service绑定的app selector修改为Pod:spilledcoffee的label——spilledcoffee;

3)根据提示,通过已经拿到shell的Pod:spilledcoffee,向修改后的Service发送HTTP请求拿到Flag5以及SA Token:todd。

Flag6思路

1)在Pod:spilledcoffee中利用nodejs的反序列化漏洞拿到Pod:envy-adam的shell;

2)在Pod:envy-adam的文件系统中找到Flag6、SA Token:envy-adam及下一个Flag提示的Namespace:roxy-richter。

Flag7思路

1)确定SA Token:envy-adam在Namespace:roxy-richter中可执行的操作——List Configmap;

2)列出所有Configmap,根据Name找到Flag7存在的Configmap:roxy-richter-flag;

3)以yaml格式查看Configmap:roxy-richter-flag拿到Flag7及下一个Flag提示的Namespace:katayanagi-twins。

Flag8思路

1)确定SA Token:envy-adam在Namespace:katayanagi-twins中可执行的操作——List/Get Pod;

2)进入Namespace:katayanagi-twins下的Pod:ninth-circle;

3)在Pod:ninth-circle的文件系统中找到Flag8。

Flag9思路

1)节点目录/etc/kubernetes/manifests作为/manifests挂载到Pod:ninth-circle中;

2)将特权容器配置写入/manifests创建“特权Pod”;

3)通过挂载节点的文件系统获取Kubelet Token;

4)使用Kubelet Token进入Namespace:gideon-graves 的Pod:gideon-graves-chaos-theater中,在文件系统中找到Flag9。

Kubernetes安全加固策略

  • 使用网络策略(Kubernetes 本地防火墙规则)阻止传出连接防止反弹shell。
  • 使用Web应用程序防火墙(例如启用modsecurity 的 ingress-nginx)来防止自动扫描,降低远程命令执行的风险。
  • 审核RBAC策略,确保ServiceAccount Token没有过度权限。
  • 停用将ServiceAccount Token自动挂载到Pod的功能。
  • 使用Kyverno[3]、OPA Gatekeeper[4]等out-of-tree准入控制器,防止创建可以获取/列出集群Secret的RBAC角色。
  • 使用NameSpace隔离来减少用户水平越权,修改其他用户Service的风险。
  • 使用服务网格(如Istio[5]、Linkerd[6]等)管理和监视不同微服务之间的通信,通过强制执行策略来增强安全性。
  • 通过镜像扫描和供应链保护来检测易受攻击的库文件。
  • 确保对敏感配置使用Secret,而不是Configmap。
  • 考虑对敏感节点目录进行文件完整性监控,如/etc/kubernetes/manifests。
  • 使用Pod安全标准或其他准入控制器来防止节点目录的HostPath安装。
  • 确保Kubernetes集群有审计策略,并捕获日志。可以根据图1来关联日志内容与可能的攻击事件。

图1 攻击路径与API事件

Peirates

Peirates[7]是InGuardians公司开源的一款Kubernetes渗透工具,采用Golang编写,可以运行在Kubernetes集群的容器内或外部的Kubernetes节点上。Peirates专注于权限提升和横向移动,它可以自动窃取和收集Kubernetes集群内的ServiceAccount Token及Secret,进一步获得代码执行能力及对Kubernetes集群的控制能力。

kubernetespod
本作品采用《CC 协议》,转载必须注明作者和本文链接
NSA和CISA联合发布Kubernetes安全加固建议。指南称,Kubernetes环境被黑的主要诱因是供应链攻击、恶意攻击者和内部威胁。虽然管理员无法应对这3种威胁,但可以通过避免错误配置、减小安全风险等方式来加固Kubernetes系统。针对Kubernetes系统安全风险的防护措施包括扫描容器和pod的bug和错误配置、使用最小权限来运行pod和容器、进行网络隔离、强认证、防火墙等。
近日,互联网公开了Linux Netfilter权限提升漏洞的POC及EXP,相关CVE编号:CVE-2021-22555。该漏洞在kCTF中被用于攻击kubernetes pod容器实现虚拟化逃逸,该漏洞已在Linux内核代码中存在15年。目前官方已发布安全版本修复该漏洞,建议受影响用户尽快更新至安全版本进行防护,做好资产自查以及预防工作,以免遭受黑客攻击。
最近这log4j热度很高。好久没写文章了,而且目前市面有些文章里面的内容信息已经有些过时缺少最新信息迭代,借此机会我剑指系列基于国内外的关于此漏洞的研究我进行了总结和归纳,并且将我自己目前发现的小众的技巧方法分享给各位,希望能给各位带来帮助不会让各位失望。
容器安全是一个庞大且牵涉极广的话题,而容器的安全隔离往往是一套纵深防御的体系,牵扯到AppArmor、Namespace、Capabilities、Cgroup、Seccomp等多项内核技术和特性,但安全却是一处薄弱则全盘皆输的局面,一个新的内核特性可能就会让看似无懈可击的防线存在突破口。随着云原生技术的快速发展,越来越多的容器运行时组件在新版本中会默认配置AppArmor策略,原本我们在《红蓝对
Kubernetes通常被称为“K8s”,是一种非常流行的开源容器编排系统,可以自动部署、扩展和管理容器化工作负载。
对于在共享基础设施上运行的容器化应用程序来说,安全是至关重要的。随着越来越多的组织将其容器工作负载转移到Kubernetes,K8s已经成为容器协调的首选平台。而随着这一趋势,威胁和新的攻击方式也越来越多,有必要加强所有的安全层。 在Kubernetes中,安全问题有两个方面:集群安全和应用安全。我们已经在另一篇文章中介绍了集群安全。在这篇文章中,我们将探讨如何确保Kubernetes部署和一般
虽然网上有大量从零搭建 K8S 的文章,但大都针对老版本,若直接照搬去安装最新的 1.20 版本会遇到一堆问题。故此将我的安装步骤记录下来,希望能为读者提供 copy and paste 式的集群搭建帮助。
虽然网上有大量从零搭建?的文章,但大都针对老版本,若直接照搬去安装最新的?版本会遇到一堆问题。故此将我的安装步骤记录下来,希望能为读者提供?式的集群搭建帮助。服务等,可供用户免费下载、使用和分享。??启动的三节点服务已经配置好了以下使用?节点进行演示查看,其他节点操作均一致#?
域安全 | K8s调度策略
2023-02-08 16:01:30
在K8s中,调度是指将Pod放置到合适的节点上。在一个集群中满足一个 Pod调度请求的所有节点称之为可调度节点。PodFitsResources 过滤函数会检查候选节点的可用资源能否满足 Pod 的资源请求。根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。最后,kube-scheduler 会将 Pod 调度到得分最高的节点上。可以通过一些手段约束一个Pod以便限制其只能在特定的节点上运行,或优先在特定的节点上运行。
VSole
网络安全专家