最近,我們遇到了一個對于企業來說非常典型的攻擊場景,一名擁有管理員權限的開發者在啟動云原生應用時,錯誤地用了一個較弱的憑證來進行配置。僅12個小時之后,該環境就受到了DreamBus 僵尸網絡的攻擊,它試圖躲避防御系統,并開始攻擊系統,運行Kinsing惡意軟件和加密貨幣挖礦代碼(門羅)。在這時,Aqua的云原生監測及響應功能(CNDR)及時的發出了攻擊警報。本文將介紹受攻擊環境的基本情況,黑客如何獲得訪問權,以及Aqua的 CNDR 如何以與云化應用相匹配的速度進行檢測、調查,和抵御攻擊。
搭建環境
首先,開發者搭建了一個的簡單的容器環境,由四個專屬容器鏡像組成:
- Web UI: 允許用戶由此登錄并交互處理應用程序
- 網關:可作為應用程序的網關
- 微服務:可支持應用程序
- 數據庫: 一個PostgreSQL 數據庫
為了更好的理解攻擊發生的方式和原因,我們首先復現開發者在運行容器之前所進行的動作。
掃描容器鏡像
首先,開發者合理運用了Aqua的解決方案掃描了容器鏡像。從下面的截圖您可以看到,容器鏡像微服務和web UI存在著低至中等程度的漏洞。由于它們的影響可以忽略不計,開發者沒有理會這些漏洞,因此它們通過了該公司的安全合規政策評估。其他兩個容器鏡像看上去也似乎一切正常。
接下來,開發者利用Aqua的動態威脅分析(Dynamic Threat Analysis, DTA)掃描了容器鏡像。DTA的作用是在安全的隔離環境(即沙盒)中運行容器鏡像,以便在容器開始運行后更好地了解其情況。因為靜態掃描軟件會基于數字簽名和哈希算法來探測已知漏洞和惡意文件,而DTA能檢測出在運行時才會顯現的惡意行為,而一般的靜態檢測方法則沒有辦法檢測出這種行為。
舉例來說,即使一個容器鏡像看上去是安全的,但這時一條命令要求從遠程C2服務器里獲得并執行有效負載(通常是通過Entrypoint),在這種情況下,靜態掃描軟件是不會監測該異常的。同樣,對于采用無文件攻擊的手法以及打包一些轉碼文件文件也可以達到逃避靜態檢測的效果。相較于靜態掃描軟件,DTA還有一個優勢,它可以檢測出惡意的網絡流量。因此,DTA能夠在給定的容器鏡像上提供更全面的威脅檢測輸出。在這個案例中,DTA沒有檢測出任何問題——容器鏡像中沒有惡意軟件。
運行工作負載
開發人員部署了 Aqua 的工作負載保護和 CNDR,但禁用了drift prevention的功能,如果該功能開啟,在鏡像實例化成為容器后,這一功能會嚴格禁止對鏡像進行任何修改。 而且,該開發人員在設定相關外部防火墻策略時,將數據庫容器開放允許用戶從任何 IP 地址 (0.0.0.0:5432)進行訪問,并沒有創建任何微分段策略(Micro-segmentation policies)來限制對容器或數據庫的訪問。 除此之外,開發人員還給PostgreSQL 數據庫配置了弱密碼(Weak credentials)。
利用CNDR監測攻擊
首次警報
Aqua的 CNDR是最近推出的云原生監測和響應功能,它利用基于內核觀察形成的告警信號,實時檢測并阻止未知攻擊。
在環境創建之后的12個小時之內,CNDR警告其中一個容器出現了嚴重的安全問題。開發者即刻停止了這個容器的運行,并開始調查問題的成因。
CNDR一共發出25條報警,提示容器和底層主機出現了不同的問題。通過CNDR的控制面板,事件和響應團隊能夠輕松地獲知相應的信息、各個事件和相關背景、來源(例如主機或容器)、相關描述及嚴重性,從而節約了大量時間。
點擊“查看完整事件數據”(View Full Event Data),可獲取有關每個事件的詳細信息。在本案例中,黑客在容器中執行了來自/tmp的Kinsing惡意軟件。
進一步收集證據
可以通過CNDR的審核篩選來進一步收集證據。CNDR監測到,有人使用了wget和curl從遠程源下載文件。這就說明在運行期間,容器下載了應用curl,黑客因此能夠從遠程源下載更多的文件。
CNDR的審計日志記錄了約7000個事件,完整地重現了攻擊時的情形。記錄中包括檢測可疑和惡意行為,以及阻斷網絡通信等,例如:
- 監測到Wget/Curl 程序
- 監測到加密挖礦
- 通過/tmp執行 二進制
- 禁用安全工具
- 復制遠程文件
我們在審計日志中發現了Kinsing惡意軟件(MD5 648effa354b3cbaad87b45f48d59c616)和kdevtmpfsi (MD5 8c6681daba966addd295ad89bf5146af) 。有人將它們從遠程源中下載到了/tmp 庫。如下面的截圖所示,它們的所有者都是“postgres”群組中的用戶“postgres”。
審計日志進一步顯示了代碼執行情況,如下:
此外,容器中還發現了幾個惡意文件:
- k (MD5 d79229c6c7fcbc4802934e34f80661a8), 打包挖礦病毒
- c (MD5 080a3bccdddc6979e3f1e74f732603b0), 打包挖礦病毒
- ss (MD5 a0db00b585a994be2cff9bb4a62ca385), 盡管 VirusTotal未檢測到,仍是挖礦病毒
獲得初始訪問權
盡管通過分析PostgreSQL日志可以知道為了獲取初始訪問權而出現的違規操作,但是這些日志連同其他日志一起都丟失了。刪除系統日志正是Kingsing黑客的慣用伎倆之一。
通過CNDR的事件屏幕中的一個警報能夠推斷出,黑客通過刪除系統日志破壞了系統的完整性。這就解釋了日志文件丟失的原因。這也不禁讓人懷疑,黑客是否轉儲了數據庫的內容,并將其泄露到外部環境。
從Postgres 9.3版開始, 數據庫的超級用戶和‘pg_execute_server_program’群組中的用戶就能利用‘COPY TO/FROM PROGRAM’功能運行任意的OS指令。該功能可能會在身份驗證后被攻擊,或在后臺運行PostgreSQL時通過SQL注入攻擊。值得注意的是,供應商卻并不認為這個功能是一個漏洞。
重要經驗:深度防御非常關鍵
從這次攻擊中,我們可以看到深度防御戰略發揮了明顯的作用。在該環境中部署的,包括工作負載保護和安全掃描在內的保護初始層,都無法預防或監測到攻擊的發生。
如果不是CNDR的告警提示,黑客就已經成功完成了攻擊,神不知鬼不覺地挖礦加密貨幣,并可能造成更大的破壞。然而,CNDR實時監測到了攻擊,不僅針對惡意活動發出了警報,還提供了額外的日志,以協助進一步調查。
類似的攻擊表明,深度防御的方法是有價值的——它構建了多重的安全功能,部署了豐富的防御能力,可以瓦解多種攻擊向量(attack vectors)。如果一個安全管控失效了,還有其它的安全層可以預防或阻止攻擊。
遷移推薦:Aqua的運行時深度防御戰略
Aqua的運行時保護方法部署了一系列的安全機制,在您的云原生環境中建立了一層又一層的管控功能,以保護網絡、工作負載和數據的保密性、完整性和可用性。
高級惡意軟件和行為保護
Aqua高級防惡意軟件保護功能能持續對環境進行掃描,根據數字簽名和哈希算法監測已知威脅和惡意軟件。在本次攻擊中,Aqua的防惡意軟件保護功能監測到了惡意腳本(.systemd-service.sh)、Kinsing惡意軟件、Kdevtmpfsi加密貨幣挖礦代碼和其它的惡意內容。
為了檢測未知的威脅,Aqua基于行為的保護功能可以發現可疑和惡意的行為,包括無文件的惡意軟件執行、防御規避技術、可疑的網絡通信和木馬。在本案例中,CNDR發現了若干個可疑的實例和惡意活動,包括刪除日志和下載并執行二進制。
我們強烈推薦您使用工具來確保密碼的高強度并與生產兼容。比如,Avishai Wool 和Liron David的項目可以預估密碼長度,即通過預測密碼破解軟件需要嘗試多少次才能破解密碼,從而幫助用戶避免選擇那些保密性弱的密碼。
調查期間,我們利用Aqua的解決方案掃描了我們的容器鏡像:靜態掃描軟件和DTA。本案例中被攻擊的漏洞存在爭議,因而被忽視了。為此,我們強烈建議在生產環境中部署CNDR等監測及響應解決方案,它們不僅能夠在運行時發現惡意行為,還有助于監測并預防生產環境中出現零日攻擊(Zero-day attacks)。
Aqua的云工作負載保護平臺能力
Aqua的云工作負載保護平臺能力包含了一套強大的運行時控制(Runtime controls)能力,適用于虛擬機、容器和無服務器架構負載保護。它們充當深度防御層,在運行前就加固工作負載,之后實時抵御生產環境中正在進行的攻擊。而另外一些事前控制策略例如鏡像合規策略等負責檢測工作負載是否符合規范運行要求,決定哪些可以運行以及哪些不能。
微分段策略決定了節點、集群和主機之間可接受的流量 ,而Kubernetes保證策略則要求必須存在(或不存在)Kubernetes配置才能允許工作負載運行。最終用戶可以完全控制工作負載保護功能,也可以為了保護運行環境而提前配置。
我們強烈建議您不要暴露一些私有服務到Internet環境,例如,PostgreSQL數據庫。不過,當數據需要公開訪問時,也會存在合法的用例。如果是這種情況,可以考慮使用網絡防火墻并限制對數據庫的訪問。與其允許任何人都可以獲得進站流量,不如將流量限制到特定的IP或容器。
Drift prevention
為了在運行時保持容器間的不變性,在鏡像被實例化成為容器后,Drift prevention功能將嚴格禁止對鏡像的修改。這一功能利用了容器屬性的不可變性,在運行中的容器中識別并阻止異常行為。
關于Aqua Security
Aqua Security是全球最大的云原生安全廠商之一,總部位于以色列特拉維夫,為客戶的創新以及加速數字化轉型保駕護航。Aqua平臺在整個應用生命周期管理中提供預防、檢測和響應自動化服務,以確保供應鏈、云基礎架構平臺和運行時工作負載的安全運行。Aqua的客戶是全球金融服務、軟件、媒體、制造和零售領域最大的企業之一,能夠在廣泛的云提供商和現代技術堆棧中實施,其中包括容器、無服務器功能和云虛擬機。如需了解更多信息,歡迎關注官方微信公眾號“AquaSecurity”。