《k0otkit:针对K8s集群的通用后渗透控制技术-会后发布版(32页).pdf》由会员分享,可在线阅读,更多相关《k0otkit:针对K8s集群的通用后渗透控制技术-会后发布版(32页).pdf(32页珍藏版)》请在三个皮匠报告上搜索。
1、阮博男阮博男绿盟科技 星云实验室 安全研究员k0otkit:针对K8s集群的通用后渗透控制技术声明本次演讲所涉技术仅限教学研究使用严禁用于非法用途!核心问题如何控制一个大型Kubernetes集群?POST PENETRATION目录pKubernetes简介pKubernetes环境的一般渗透过程pk0otkit:针对Kubernetes的通用后渗透控制技术p总结 攻p总结 防Kubernetes简介图片来自https:/kubernetes.io/docs/concepts/overview/components/Kubernetes,also known as K8s,isan open
2、-sourcesystem forautomatingdeployment,scaling,andmanagement ofcontainerizedappllcations.Kubernetes环境的一般渗透过程常见K8s集群渗透路线图Kubernetes环境的一般渗透过程 容器逃逸关注“绿盟科技研究通讯”回复“容器逃逸”获取容器逃逸深度研究内核漏洞危险挂载应用漏洞危险配置任何层次都可能导致容器逃逸Kubernetes环境的一般渗透过程更形象的渗透路线图Kubernetes环境的一般渗透过程目标是一个单节点集群!Yeah!Mission completed!目标是一个双节点集群!反弹shel
3、l!Mission completed!目标是一个三节点集群!反弹shell x2!Mission completed!目标是一个拥有100个节点集群!Emmm核心问题如何控制一个大型Kubernetes集群?POST PENETRATIONk0otkitpKubernetes+rootkitp阶段:Web渗透 提权 逃逸 Master root?p假设:Master参与Pod调度p需求:控制整个集群,无论规模大小p要求:快速、隐蔽、持久化phttps:/ Net/PID Namespacep挂载宿主机根目录pPod执行反弹shellk0otkit v0.1k0otkit v0.1接下来,只需
4、等待所有节点反弹shell就好kubectl apply-f attacker.yaml 但,管理员kubectl get能看到有诡异资源出现,K.O.p在v0.1的基础上,增强隐蔽性p使用kube-system命名空间p去掉敏感词,伪装正常资源k0otkit v0.2k0otkit v0.2接下来,只需等待所有节点反弹shell就好kubectl apply-f attacker.yaml 但,网络流量明文传输被发现,K.O.p在v0.2的基础上p替换bash shell为Meterpreterp加密流量(Meterpreter功能)p退出Meterpreter后触发DaemonSet机制,
5、自动重连k0otkit v0.3k0otkit v0.3接下来,只需等待所有节点反弹shell就好kubectl apply-f attacker.yaml 但,动静太大,需要传入Meterpreter构建镜像,K.O.p在v0.3的基础上,不创建文件,从STDIN读取YAMLp不构建新镜像,把Payload藏入YAML环境变量k0otkit v0.4k0otkit v0.4接下来,只需等待所有节点反弹shell就好cat EOF|kubectl apply-f-但,Payload环境变量过长被发现,K.O.p在v0.4的基础上,采用Secret资源分离PayloadpSecret同样能以环境
6、变量形式供Pod使用pBase64编码,在Pod内自动解码p查看K8s资源发现异常的概率降低k0otkit v0.5k0otkit v0.5接下来,只需等待所有节点反弹shell就好cat EOF|kubectl apply-f-但,管理员查看kube-system命名空间资源,K.O.p在v0.5的基础上,使用动态容器注入技术p直接把容器注入到集群已有DaemonSet Pod中p自动化实现kubectl edit,向kube-proxy Pod注入恶意容器k0otkit v0.6k0otkit v0.6接下来,