Hadoop Yarn RPC 0 Day在野利用分析與傳播手段披露
概述
近日,阿里云安全監測到Kinsing僵尸網絡變種,除了沿用之前攻擊手法,最新利用了Hadoop Yarn RPC未授權訪問漏洞進行傳播。
Hadoop作為一個分布式計算應用框架,種類功能繁多,而Hadoop Yarn作為其核心組件之一,負責將資源分配至各個集群中運行各種應用程序,并調度不同集群節點上的任務執行。Hadoop Yarn RPC未授權訪問使得攻擊者無需認證即可通過RPC通信執行惡意命令。Hadoop作為大數據計算基礎組件往往集群化部署,一旦一臺主機淪陷其整個集群都將受到威脅,其對外暴露端口服務會造成極大威脅。阿里云安全持續對該BOT進行監控,發現近期傳播有所上升,提醒廣大用戶注意防護。
傳播手段
Kinsing僵尸網絡通過Hadoop Yarn RPC未授權訪問和Hadoop Yarn Rest API未授權訪問漏洞入侵和傳播,利用f.sh腳本下載挖礦木馬kinsing并執行挖礦。
Hadoop Yarn作為Hadoop核心組件之一,負責將資源分配至各個集群中運行各種應用程序,并調度不同集群節點上的任務執行。其官網(https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html)介紹: ResourceManager 和 NodeManager 構成了數據計算框架。ResourceManager 是在系統中的所有應用程序之間仲裁資源的最終權威。NodeManager 是每臺機器的框架代理,負責容器、監控其資源使用情況(cpu、內存、磁盤、網絡)并將其報告給ResourceManager/Scheduler。每個應用程序的 ApplicationMaster 實際上是一個特定于框架的庫,其任務是協商來自 ResourceManager 的資源并與NodeManager 一起執行和監視任務。

如上介紹的ResourceManager功能,一旦遠程命令執行代碼被提交便會在各個節點中運行,入侵和感染路徑如下圖所示。

ATT&CK階段分析

漏洞利用分析
Hadoop Yarn RPC未授權訪問漏洞存在于Hadoop Yarn中負責資源管理和任務調度的ResourceManager,成因是該組件為用戶提供的RPC服務默認情況下無需認證即可訪問,因此把RPC服務暴露在公網上是非常危險的。
RPC服務利用這一問題會影響到部分有安全意識的用戶。一部分用戶基于過去幾年中基于多種利用Hadoop的歷史蠕蟲已經意識到RESTful API的風險,通過配置開啟了基于HTTP的認證,或通過防火墻/安全組封禁了RESTful API對應的8088端口,但由于他們沒有意識到Hadoop同時提供RPC服務,并且訪問控制機制開啟方式跟REST API不一樣,導致用戶Hadoop集群中RPC服務所在的8032端口仍然可以未授權訪問。
由于自行配置kerberos服務較為復雜,且如果集群已在運行需要重啟集群使配置生效,因此許多用戶會選擇通過防火墻/安全組,使RPC端口不暴露在互聯網的替代方案,具體漏洞解決方案可見安全建議。如圖所示是Kinsing僵尸網絡使用Hadoop Yarn RPC漏洞的Payload。

經測試可知,對于8032暴露在互聯網且未開啟kerberos的Hadoop Yarn ResourceManager,編寫應用程序調用yarnClient.getApplications()即可查看所有應用信息,驗證結果如下
Kinsing僵尸網絡同時使用了早前披露且影響面較廣的Hadoop Yarn Rest API未授權訪問漏洞,Payload如下圖所示。

詳細分析
Kinsing僵尸網絡通過Hadoop Yarn RPC未授權訪問漏洞入侵后會下載Bash腳本進行安全終端卸載、關閉SELINUX、結束其他挖礦團伙進程、挖礦木馬下載執行等操作,具體分析如下。
f.sh分析
Kinsing僵尸網絡入侵主機后會通過IP、端口結束外聯進程,例如常見443、23、3389等端口,爭取更多的資源。

通過Docker命令發現主機內挖礦的進程和容器并結束,例如搜尋帶有xmr、mine、monero關鍵字的Docker進程。

最終通過遠程惡意下載源進行挖礦木馬下載并執行。

kinsing分析
kinsing(7d468dd3257af321562dea36af00de62)是xmrig挖礦木馬,入侵后存放在/var/tmp/文件目錄下,啟動執行后通過命令進行刪除。

安全建議
1)阿里云安全發現該漏洞后第一時間向Apache、Hadoop做了郵件溝通,并得到了官方認可和相關處理建議,郵件中提及存儲和計算節點在提交任務時最好通過Kerberos進行認證以保證其安全性。以下是郵件部分建議截圖

依據官方建議開啟Kerberos認證,配置后的Configuration如下
<property> <name>hadoop.security.authentication</name> <value>kerberos</value> <final>false</final> <source>core-site.xml</source> </property> ... <property> <name>hadoop.rpc.protection</name> <value>authentication</value> <final>false</final> <source>core-default.xml</source> </property>
開啟Kerberos認證之后,Client端無法在非授權情況下訪問,會返回SIMPLE authentication is not enabled異常,成功阻斷非授權情況下的任意命令執行問題。

2)云防火墻利用大數據對互聯網上最新出現RCE進行實時監控,從RCE披露到響應時間整體小于3小時,能夠有效阻止客戶資產被RCE漏洞攻擊,其支持3-7層協議不僅滿足對Web網站的HTTP協議的防護,同時支持4層大量非Web服務的防御。當前云防火墻默認支持對Hadoop Yarn RPC遠程命令執行漏洞的防御。

3)云防火墻智能策略依據歷史流量自學習,提供符合客戶業務暴露面收斂的最佳實踐,通過“一鍵下發”或“自主選擇”可以實現資產的最大程度的互聯網暴露收斂,避免端口對外不當暴露風險,同時有效阻止“重保模式”下網絡空間測繪的掃描行為。

IOC
- URL
http://114.214.169.174/kinsing
http://114.214.169.174/f.sh
- IP
114.214.169.174
- md5
7d468dd3257af321562dea36af00de62
參考
- https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
- https://www.freebuf.com/articles/system/286885.html
- https://hadoop.apache.org/cve_list.html
- https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html#Configuration
