《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接下來,只需等待所有節點反彈shell就好kubectl get kube-proxy
7、o yml|sed|kubectl replace-f-但,pull外部鏡像失敗或被發現,K.O.p在v0.6的基礎上,不再創建或拉取新鏡像p使用一定在集群中每個節點上都存在的鏡像p目標:kube-proxy鏡像,包含echo和perlk0otkit v0.7k0otkit v0.7接下來,只需等待所有節點反彈shell就好kubectl get kube-proxy o yml|sed|kubectl replace-f-但,最后Meterpreter被判定為惡意文件,K.O.p在v0.7的基礎上,使用無文件攻擊技術p徹底解決Payload痕跡問題p別忘了,kube-proxy鏡像提供per
8、lp無文件攻擊需要memfd_create,Docker默認允許k0otkit v1.0Seccomp白名單k0otkit v1.0kubectl get kube-proxy o yml|sed|kubectl replace-f-接下來,只需等待所有節點反彈shell就好是的,只需等待所有節點反彈shell就好k0otkit 補全最后一塊拼圖k0otkit DEMOpk0otkit利用多種技術及天然優勢:DaemonSets&Secrets(快速持續反彈,資源分離)kube-proxy image(就地取材)動態容器注入(高隱蔽性)Meterpreter(流量加密,持續反彈)無文件攻擊(高隱蔽性)p快速、隱蔽、持續總結 攻總結 防p設置Pod安全策略,禁止容器內root權限p設置Pod安全策略,限制容器內capabilities和系統調用能力p實時監控kube-system命名空間資源,避免燈下黑p實時檢測容器內進程異常行為,及時告警+處置異常容器p針對無文件攻擊(如memfd_create)進行檢測p實時檢測容器異常流量,及時阻斷p刪除k0otkit,修復漏洞,做好安全更新