Kubernetes攻擊威脅矩陣
云和容器技術(shù)的快速增長,容器編排系統(tǒng)成了發(fā)展最快的技術(shù)。尤其是谷歌Kubernetes項目成了容器編排事實上的業(yè)界標準。越來越多的企業(yè)和開發(fā)人員已經(jīng)將自己的工作轉(zhuǎn)移到了K8S上。盡管K8S具有很多優(yōu)勢,但是統(tǒng)一和集中化的管控也在安全方面帶來了新的挑戰(zhàn)。在容器云化的環(huán)境中(比如K8S)中也存在的各種安全風(fēng)險,利用ATT&CK模型本文我們介紹K8S攻擊威脅矩陣。
概述
系統(tǒng)化的研究安全和防控最常用的方法是使用MITRE ATT&CK框架。MITRE是美國政府資助的一家研究機構(gòu),該機構(gòu)源于麻省大學(xué)專門研究包括軍方高密的安全項目,受美國國家標準技術(shù)研究所(NIST)的資助,MITRE開展了大量的網(wǎng)絡(luò)安全研究和實踐。
2013年了MITR推出了ATT&CK模型,該模型根據(jù)觀察實際數(shù)據(jù)來定義攻擊行為并對其分類。ATT&CK模型通過結(jié)構(gòu)化矩陣的形式將已知的攻擊行為用威脅信息列表和可信自動化交換表達。從Windows和linux OS覆蓋開始,ATT&CK的矩陣涵蓋了網(wǎng)絡(luò)攻擊(策略)所涉及的各個階段,并詳細介紹了其中的每個已知方法(技術(shù))。這些矩陣可以幫助企業(yè)了解其環(huán)境中的攻擊面,并確??梢猿浞謾z測和緩解各種風(fēng)險。
MITER ATT&CK框架策略包括:初始訪問、執(zhí)行、持久化、提權(quán)、防御繞過、訪問憑據(jù)、發(fā)現(xiàn)、橫向擴展、影響力等。
對于不同平臺下,盡管攻擊技術(shù)與針對不同平臺(比如Linux和Windows)的攻擊技術(shù)有所差異,但其根本策略實際上是相似的。
例如,將前四個策略(初始訪問、執(zhí)行、持久化、提權(quán))中,如果將OS轉(zhuǎn)換為容器對應(yīng)為:
- "對計算機的初始訪問"變成"對可以的初始訪問";
- "計算機上的惡意代碼"轉(zhuǎn)換為"對容器的惡意活動" ;
- "保持對計算機的訪問權(quán)限"變?yōu)?quot;保持對集群訪問的權(quán)限";
- "在計算機上獲得更高的特權(quán)"轉(zhuǎn)化為"在集群獲得中獲得更高的特權(quán)"。
基于此,改造原始工具矩陣為容器云(K8S)版本ATT&CK的威脅攻擊矩陣,其中包括與容器編排安全相關(guān)的主要技術(shù)。
如上圖,矩陣包含上面列出的9種策略。其中個策略又包含多項技術(shù),攻擊者可以使用這些技術(shù)來實現(xiàn)不同的目標。下面我們對具體策略具體展開介紹。
1. 訪問入口
訪問入口策略包括獲得的對資源訪問權(quán)限的技術(shù)。在容器云虛擬化化環(huán)境中,這些技術(shù)可以對我們的訪問重定向??梢詫υL問通過URL串行鏈接,也可以通過訪問部署的惡意或被篡改的資源來實現(xiàn)。
(1) 使用云憑證
如果將K8S集群部署在公共云中(例如亞馬遜AWS的EKS,谷歌GCP的GKE或微軟Azure的AKS),則云憑據(jù)(密碼,證書,token)泄露可能導(dǎo)致集群被接管。有權(quán)訪問云帳戶憑據(jù)的攻擊者可以訪問任意操縱整個集群。
(2) 注冊表中惡意鏡像
在群集中運行惡意的鏡像可能會損壞群集??稍L問私有注冊表的攻擊者可以在注冊表中隨意植入自己的非法代碼或者木馬等供用戶拉取使用。此外,用戶拉取來自公共注冊表(例如Docker Hub)中未經(jīng)驗證的鏡像,這些鏡像可能是惡意鏡像。
基于無限信任的基礎(chǔ)鏡像建設(shè)鏡像也會導(dǎo)致類似的結(jié)果。
(3) Kubeconfig配置
kubconfigl也使用kubeconfig文件,其中包含有關(guān)Kubernetes集群的詳細信息,包括它們的分區(qū)和憑據(jù)。如果群集托管為云服務(wù)(例如AKS或GKE),則該文件通過云命令下載到客戶端。如果攻擊者通過竊取的客戶端配置文件,則可以使用該文件訪問副本。
(4) 有漏洞的應(yīng)用程序
在集群中運行有公開漏洞的應(yīng)用程序可引起集群的訪問權(quán)限。可能會觸發(fā)遠程代碼執(zhí)行突破(RCE)攻擊容器。如果服務(wù)帳戶安裝在容器中(K8S的默認行為),則攻擊者可以竊取服務(wù)帳戶并對API服務(wù)器發(fā)送請求。
(5) 暴露的儀表板
Kubernetes儀表板是基于Web的用戶界面,可用于監(jiān)視和管理K8S集群。默認情況儀表板只能通過內(nèi)網(wǎng)訪問。如果圖省事將儀表板暴露在外部,則可以允許進行身份驗證和部署遠程管理。
2. 執(zhí)行攻擊
執(zhí)行攻擊策略包括攻擊者用來在最大化中運行其代碼的技術(shù)。
(1) 容器執(zhí)行
擁有權(quán)限的攻擊者可以使用exec命令(" kubectl exec")在群集中的容器中運行惡意命令。通過這種方法,攻擊者可以使用合法鏡像(例如Ubuntu OS鏡像)作為后門容器,并使用" kubectl exec"遠程運行其惡意代碼。
(2) 新建容器
攻擊者可能嘗試通過新建容器在集群中運行其代碼。有權(quán)在群集中部署Pod或控制器的攻擊者(例如DaemonSet\ReplicaSet\Deployment)則可以創(chuàng)建用于代碼執(zhí)行的新容器。
(3) 應(yīng)用程序利用
部署在群集中并且易受到遠程代碼執(zhí)行漏洞或最終允許執(zhí)行代碼的漏洞的應(yīng)用程序使攻擊者能夠在群集中運行代碼。如果將服務(wù)帳戶安裝到容器(K8S中的默認行為),則攻擊者將能夠使用此服務(wù)帳戶憑據(jù)對API服務(wù)器發(fā)送請求。
(4) 在容器內(nèi)運行的SSH
攻擊者可能會使用在容器內(nèi)運行的SSH服務(wù)。如果攻擊者通過暴力破解或其他方法(例如網(wǎng)絡(luò)釣魚)獲得了到容器的有效憑據(jù),則可以通過SSH遠程訪問該容器。
3. 持久化
持久化策略由攻擊者用來在失去最初訪問點的情況下保持對群集的訪問的技術(shù)。
(1) 后門容器
攻擊者在集群的容器中運行惡意代碼。通過使用諸如DaemonSet或Deployments之類的K8S控制器,攻擊者可以確保在集群中的一個或者多個節(jié)點中運行容器。
(2) 可寫的hostPath掛載
hostPath卷將目錄或文件從主機裝載到容器。有權(quán)在群集中創(chuàng)建新容器的攻擊者可以創(chuàng)建一個具有可寫hostPath卷的容器,并在基礎(chǔ)主機上獲得持久性。例如,可以通過在主機上創(chuàng)建cron作業(yè)來實現(xiàn)。
(3) K8S CronJob
Kubernetes Job可以用于運行為批處理作業(yè)執(zhí)行有限任務(wù)的容器。Kubernetes Job是一個控制器,它創(chuàng)建一個或多個Pod,并確保指定數(shù)量的Pod終端。Kubernetes CronJob用于計劃作業(yè)。攻擊者可能使用Kubernetes CronJob來調(diào)度集群容器執(zhí)行惡意代碼。
4. 權(quán)限提升
權(quán)限提升策略由攻擊者用來在環(huán)境中獲取比其當(dāng)前擁有的更高特權(quán)的技術(shù)組成。在容器化環(huán)境中,權(quán)限提升技術(shù)包括從容器訪問節(jié)點,在集群中獲得更高的特權(quán),甚至獲得對云資源的訪問。
(1) 特權(quán)容器
特權(quán)容器是具有主機功能的容器,它可以消除常規(guī)容器的所有限制。特權(quán)容器可以執(zhí)行幾乎可以直接在主機上執(zhí)行的所有操作。獲得對特權(quán)容器的訪問權(quán)或有權(quán)創(chuàng)建新的特權(quán)容器的攻擊者(例如,通過使用竊取的pod服務(wù)帳戶),攻擊者可以訪問主機的資源。
(2) Cluster-admin 綁定
基于角色的訪問控制(RBAC)是Kubernetes中的關(guān)鍵安全功能。RBAC可以限制集群中各種身份的允許操作。Cluster-admin是Kubernetes中的內(nèi)置高特權(quán)角色,有權(quán)在群集中創(chuàng)建綁定和群集綁定的攻擊者可以創(chuàng)建到群集管理員ClusterRole或其他高特權(quán)角色的綁定。
(3) hostPath掛載
攻擊者可以使用hostPath掛載來訪問基礎(chǔ)主機,從而從容器破壞主機。
(4) 訪問云資源
如果將Kubernetes集群部署在云中,則在某些情況下,攻擊者可以利用對單個容器的訪問來訪問集群外的其他云資源。例如,在AKS中,每個節(jié)點都包含服務(wù)principal憑證,該憑證存儲在/etc/kubernetes/azure.json中。AKS使用該服務(wù)principal來創(chuàng)建和管理群集操作所需的Azure資源。
默認情況下,服務(wù)principal在群集的資源組中具有貢獻者權(quán)限。有權(quán)訪問此服務(wù)principal文件的攻擊者(例如,通過hostPath掛載)可以使用其憑據(jù)來訪問或修改云資源。
5. 防御繞過
防御繞過策略由攻擊者用來避免檢測并隱藏其活動的技術(shù)組成。
(1) 清除容器日志
攻擊者可能會攻陷容器上的應(yīng)用程序或系統(tǒng)日志,以防止檢測到其活動。
(2) 刪除Kubernetes事件
Kubernetes事件是一個Kubernetes對象,用于記錄狀態(tài)更改和集群中資源的故障。示例事件是在節(jié)點上創(chuàng)建容器,鏡像拉取或Pod調(diào)度。
Kubernetes事件對于識別集群中發(fā)生的變化非常有用。因此,攻擊者可能希望刪除這些事件(例如,通過使用" kubectl delete events - all"),以防止其在群集中的活動被檢測到。
(3) Pod/容器名混淆
由諸如Deploymen或DaemonSet之類的控制器創(chuàng)建的Pod在其名稱中具有隨機后綴。攻擊者可以利用此事實,并為后門容器命名,因為它們是由現(xiàn)有控制器創(chuàng)建的。例如,攻擊者可能創(chuàng)建一個名為coredns-{隨機字串后綴}的惡意容器,該容器看上去與CoreDNS部署有關(guān)。
同樣,攻擊者可以將其容器部署在管理容器所在的kube系統(tǒng)名稱空間。
(4) 從代理服務(wù)器連接
攻擊者可能使用代理服務(wù)器來隱藏其原始IP。具體來說,攻擊者經(jīng)常使用匿名網(wǎng)絡(luò)(例如TOR)進行活動。這可用于與應(yīng)用程序本身或與API服務(wù)器進行通信。
6. 訪問憑據(jù)
訪問憑據(jù)策略由攻擊者用來竊取憑據(jù)的技術(shù)組成。在容器化環(huán)境中,這些技術(shù)包括正在運行的應(yīng)用程序的憑據(jù),身份,群集中存儲的密碼或云憑據(jù)。
(1) 列出Kubernetes機密
Kubernetes機密是一個對象,它使用戶可以存儲和管理敏感信息,例如集群中的密碼和連接字符串??梢酝ㄟ^pod配置中的引用來使用機密。有權(quán)從API服務(wù)器搜索機密的攻擊者(例如,通過使用pod服務(wù)帳戶)可以訪問敏感信息,其中可能包括各種服務(wù)的憑據(jù)。
(2) 掛載服務(wù)principal
將群集部署在云中后,在某些情況下,攻擊者可以利用對群集中容器的訪問來獲取云憑據(jù)。例如,在AKS中,每個節(jié)點都包含服務(wù)principal憑據(jù)。
(3) 訪問容器服務(wù)帳戶
服務(wù)帳戶(SA)代表K8S中的應(yīng)用程序身份。默認情況下,將SA安裝到集群中每個已創(chuàng)建的Pod。使用SA,容器中的容器可以將請求發(fā)送到Kubernetes API服務(wù)器。可以訪問Pod的攻擊者可以訪問SA令牌(/var/run/secrets/kubernetes.io/serviceaccount/token中),并根據(jù)SA權(quán)限在集群中執(zhí)行操作。如果未啟用RBAC,則SA在群集中具有無限權(quán)限。如果啟用了RBAC,則其權(quán)限由與其關(guān)聯(lián)的RoleBindings\ClusterRoleBindings確定。
(4) 配置文件中的應(yīng)用程序憑據(jù)
開發(fā)人員將機密存儲在Kubernetes配置文件中,例如pod配置中的環(huán)境變量。此類行為在Azure安全中心監(jiān)視的群集中很常見。有權(quán)通過查詢API服務(wù)器或訪問開發(fā)人員終端上的那些機密文件的攻擊者可以竊取并使用存儲的機密。
7. 發(fā)現(xiàn)
發(fā)現(xiàn)策略由攻擊者用來探測可以訪問的環(huán)境的技術(shù)組成。這些技術(shù)有助于攻擊者進行橫向移動并獲得更多資源。
(1) 訪問Kubernetes API服務(wù)器
Kubernetes API服務(wù)器是群集的網(wǎng)關(guān)。通過向RESTful API發(fā)送各種請求來執(zhí)行集群中的操作。API服務(wù)器可以檢索群集的狀態(tài),其中包括部署在群集上的所有組件。攻擊者可能會發(fā)送API請求來探測集群,并獲取有關(guān)集群中的容器,機密和其他資源的信息。
(2) 訪問Kubelet API
Kubelet是安裝在每個節(jié)點上的Kubernetes代理。Kubelet負責(zé)正確執(zhí)行分配給該節(jié)點的Pod。Kubelet公開了不需要身份驗證的只讀API服務(wù)(TCP端口10255)。具有網(wǎng)絡(luò)訪問主機權(quán)限的攻擊者(例如,通過攻陷容器上運行代碼)可以請求訪問Kubelet API。
通過訪問[NODE IP]:10255/pods /檢索節(jié)點上正在運行的Pod。
通過訪問[NODE IP]:10255/spec/檢索有關(guān)節(jié)點本身的信息,例如CPU和內(nèi)存消耗。
(3) 內(nèi)網(wǎng)映射
攻擊者可能嘗試對群集網(wǎng)絡(luò)探測以獲取有關(guān)正在運行的應(yīng)用程序的信息,包括掃描已知漏洞。默認情況下,在Kubernetes中對pod通訊沒有任何限制。因此,獲得單個容器訪問權(quán)限的攻擊者可能會使用它來探測網(wǎng)絡(luò)。
(4) 訪問Kubernetes儀表板
Kubernetes儀表板是基于Web的UI,用于監(jiān)視和管理Kubernetes集群。儀表板允許用戶使用其服務(wù)帳戶(kubernetes-dashboard)在群集中執(zhí)行操作,該權(quán)限由該服務(wù)帳戶的綁定或群集綁定確定。獲得對群集中容器的訪問權(quán)限的攻擊者可以使用其對儀表板容器的網(wǎng)絡(luò)訪問權(quán)限。因此,攻擊者可能會使用儀表板的身份來檢索有關(guān)群集中各種資源的信息。
(5) 實例元數(shù)據(jù)API
云提供者提供了實例元數(shù)據(jù)服務(wù),用于檢索有關(guān)虛擬機的信息,例如網(wǎng)絡(luò)配置,磁盤和SSH公鑰。VPS通過不可路由的IP地址訪問此服務(wù),該IP地址只能從VPS內(nèi)部訪問。獲得容器訪問權(quán)限的攻擊者可以查詢元數(shù)據(jù)API服務(wù),以獲取有關(guān)基礎(chǔ)節(jié)點的信息。例如,在AWS中,以下請求將檢索實例的所有元數(shù)據(jù)信息:
- IP/latest/meta-data/
8. 橫向擴展
橫向擴展移動策略包括攻擊者用來目標環(huán)境中擴展的技術(shù)。在容器化環(huán)境中,這包括從對一個容器的給定訪問中獲得對群集中各種資源的訪問權(quán),從容器中對基礎(chǔ)節(jié)點的訪問權(quán)或?qū)υ骗h(huán)境的訪問權(quán)。
(1) 訪問云資源
攻擊者可能會從攻陷的容器擴展到云環(huán)境。
(2) 容器服務(wù)賬戶
獲得對群集中容器的訪問權(quán)限的攻擊者可以使用已安裝的服務(wù)帳戶令牌請求訪問API服務(wù)器,并獲得對群集中其他資源的訪問權(quán)限。
(3) 集群內(nèi)部網(wǎng)絡(luò)
Kubernetes的網(wǎng)絡(luò)行為允許群集中Pod之間的流量作為默認行為。獲得單個容器訪問權(quán)限的攻擊者可能會將其用于群集中另一個容器的網(wǎng)絡(luò)可達性。
(4) 配置文件中的應(yīng)用程序憑據(jù)
開發(fā)人員將機密存儲在Kubernetes配置文件中,例如,作為pod配置中的環(huán)境變量。使用這些憑據(jù),攻擊者可能會訪問群集內(nèi)部和外部的其他資源。
(5) 可寫卷安裝到主機上
攻擊者可能試圖從受感染的容器中獲取對基礎(chǔ)主機的訪問。
(7) 訪問Kubernetes儀表板
有權(quán)訪問Kubernetes儀表板的攻擊者可以管理儀表板資源,還可以使用儀表板的內(nèi)置"exec"功能在集群中的各個容器上運行其代碼。
(8) 訪問Tiller端點
Helm是由CNCF維護的K8S集群中受歡迎的軟件包管理器。Tiller是Helm V2之前的的服務(wù)器端組件。
Tiller公開群集中的內(nèi)部gRPC端點,偵聽端口44134。默認情況下該端點不需要身份驗證。攻擊者可以使用Tiller的服務(wù)帳戶(通常具有較高的特權(quán)),在Tiller的服務(wù)可訪問的任何容器上運行代碼,并在群集中執(zhí)行操作。
9. 影響力
影響力策略包括攻擊者用來破壞,濫用或破壞環(huán)境正常行為的技術(shù)。
(1) 數(shù)據(jù)刪除和加密
攻擊者可能試圖破壞群集中的數(shù)據(jù)和資源。這包括刪除部署,配置,存儲和計算資源?;蛘邔⑺匈Y源進行加密,然后勒索。
(2) 資源劫持
攻擊者可能會利用已攻陷的資源來運行任務(wù)。一種常見的濫用方式是用來挖礦。有權(quán)訪問群集中的容器或有權(quán)創(chuàng)建新容器的攻擊者可以將它們用于此類活動。
(3) 拒絕服務(wù)
攻擊者可能會嘗試執(zhí)行拒絕服務(wù)攻擊,這會使合法用戶無法使用該服務(wù)。在容器集群中,這包括嘗試阻止容器本身,基礎(chǔ)節(jié)點或API服務(wù)器的可用性。
10. 總結(jié)
了解容器化環(huán)境的攻擊面是為這些環(huán)境構(gòu)建安全解決方案的第一步。上面介紹的矩陣可以幫助我們識別針對K8S的不同威脅的防御能力方面差距,補全安全威脅短板和瓶頸,提高集群的安全性。