作者:深信服千里目安全實驗室
相關閱讀:
1、【Rootkit 系列研究】序章:懸頂的達摩克利斯之劍
2、【Rootkit 系列研究】Windows平臺的高隱匿、高持久化威脅
3、【Rootkit 系列研究】Linux平臺的高隱匿、高持久化威脅
4、【Rootkit 系列研究】Rootkit檢測技術發展現狀
5、【Rootkit 系列研究】Windows平臺的高隱匿、高持久化威脅(二)

序言

從西方APT組織的攻擊歷史及已經泄露的網絡攻擊武器來看,高隱藏、高持久化(Low&Slow)是已經成為區分威脅等級的關鍵特征,而Rookit則是達成此目的重要的技術手段之一。

在之前的文章中,“序章:懸頂的達摩克利斯之劍”,帶我們領略了Rootkit的前世今生,隱匿于Rootkit背后的影子以及針對Rootkit的基本檢測思想。

“Windows平臺高隱匿、高持久化威脅”和“Linux平臺高隱匿、高持久化威脅”各自從宏觀角度講述Windows平臺和linux平臺下,Rootkit技術原理、應用和發展現狀以及攻防角度的總結。

“Rootkit檢測技術發展現狀”讓我們見識到了防御方對抗Rootkit的技術。

本文則是在“Windows平臺高隱匿、高持久化威脅”的基礎上,結合攻擊者在攻擊中利用到的技術手段,對Windows平臺上的rootkit的運行效果及應用方面進行介紹。

Rootkit威脅情報-戰火從未停止

2015年4月,安全研究團隊發表了關于Turla組織的Rootkit分析報告。
2016年8月,安全研究團隊發布了索倫之眼(ProjectSauron)相關的技術細節。
2018年10月,安全研究人員披露有驅動護體的挖礦病毒ProtectionX。
2019年4月,安全研究團隊發布關于跨平臺間諜Rootkit Scranos的文章。
2021年10月,安全研究團隊披露了DirtyMoe Rootkit 驅動程序。
2021年12月,安全研究團隊披露了方程式組織(Equation Group)的攻擊框架DanderSpritz。
2022年1月,安全研究團隊披露了紫狐(Purple Fox)僵尸網絡通過偽裝Telegram安裝程序釋放Rootkit的攻擊事件。

紫狐-黑產中Rootkit技術應用的代表

紫狐是已經持續多年的、以營利為目的的網絡黑產組織,他們歷來每次出現在視野中,都會變化一種攻擊方式或技術。

攻擊者控制大量受害終端,通過刷量、推廣用戶不需要的軟件來獲利,這會拖慢設備性能,嚴重影響受害者的正常使用。

其惡意程序使用了Rootkit技術,以至于具有很高的隱蔽性,很難被受害者發掘和清除。

在紫狐病毒釋放器下載最終Purple Fox Rootkit載荷之前,我們注意到釋放程序會安裝一個名為“Driver.sys”的驅動程序,用于注銷名為“360FsFlt”的Minifilter,并關閉名為“ZhuDongFangYu.exe”的進程,來規避安全軟件檢測。

“ZhuDongFangYu.exe”的進程是從驅動啟動的,用常規手段是無法關閉的。

驅動服務運行后,通過一個獨立的命令行工具進行調用,通過I\O 通訊傳遞指令,具有四種命令,對應四種功能。

實際運行效果如下:

關閉指定文件過濾器 拷貝文件 刪除文件 結束進程 在分析過程中我們發現,該驅動程序為了避免被檢測,在文件拷貝和刪除文件的過程中沒有使用常規的API函數,而是通過IofCallDriver函數向文件設備發送帶有操作的IRP數據,以此達到文件操作的目的。

而在關閉進程功能上,更是提供了兩種結束進程的方法,來規避檢測。而且我們發現,該驅動目前仍是半成品的狀態,也就是說,攻擊者仍在進行功能的迭代升級。

在完成安全軟件進程關閉后,釋放文件才會繼續下載最后的Purple Fox Rootkit,經分析,該Rookit是基于開源Rookit項目“Hidden”修改,具有隱藏注冊表項和值、隱藏文件和目錄、隱藏進程、保護指定進程等功能。

文件隱藏運行效果:

注冊表隱藏運行效果:

進程保護運行效果:

由此可見,學習開源項目也是攻擊者提升攻擊能力的有效方式,他們也在不斷吸取新的技術,應用與攻擊活動之中。

APT組織的高對抗利器

Turla組織最早可以追溯到2004年,已經超過45個國家受到相關攻擊,涉及政府、大使館、軍事、教育、研究和制藥公司等多個行業。其攻擊使用的技戰術一直都有著較高的技術水平,對于國家和行業機密有著極大的威脅。

本事件中使用的Rootkit主要功能是通過HOOK一系列系統調用函數,隱藏和保護其用戶態組件。然后通過修改Ntoskrnl.exe和Ndis.sys的內存數據,在0xc3處創建一個新的IDT條目并重定向所有的被HOOK的函數到一個簡單的中斷句柄(ISR),每個被HOOK的函數都有一個唯一的標識符與ISR中的派遣函數相對應。

由于能夠該方法能夠禁用任何主機內的HOOK機制,因此傳統的針對Rookit的監測能力都受到了限制。

Turla rootkit還使用了兩個虛擬文件系統,一個NTFS文件系統和一個FAT文件系統,也就是說,受害者主機上有一個承載了文件系統的加密文件,攻擊者將其作為工作空間使用。

這里突出了Turla組織攻擊活動所使用的工具非常具有高對抗,能夠做到從系統層面避免安全軟件的檢測和查殺。

除了Rootkit部分,還有一點值得注意,Turla在攻擊過程中會使用一個名為“VBoxDrv.sys”的驅動程序,該驅動程序存在CVE-2008-3431漏洞,攻擊者能夠利用該漏洞完成權限提升。

這里就要說到一個概念“VulnDriver”,也就是帶有漏洞的驅動程序,比較常見的VulnDriver還有GDRV.sys (CVE-2018-19320),Novell (CVE-2013-3956), CPU-Z (CVE-2017-15302), ASUS (CVE-2018-18537)。

挖礦木馬常用的礦機所使用的WinRing0.sys也是一個非常常見的VulnDriver,這個驅動是一個名為NZXT CAM的計算機硬件性能監控產品內的一個便于程序訪問Windows內核的組件。

這個看起來不大的驅動程序上存在著多達11個CVE漏洞 ,其中CVE-2020-13516可以越權直接從USB和PCI設備查詢信息;CVE-2020-13515可以越權將數據寫入I/O總線,可能會更改PCI配置信息或特定于供應商的數據寄存器,幫助其他程序完成提權;CVE-2020-13518可以越權直接訪問rdmsr,任意讀取MSR內數據;CVE-2020-13519可以越權直接訪問writemsr,向MSR內寫入數據。

因此,利用這個驅動程序做很多事情,其利用成本低,很受以營利為目的網絡攻擊者歡迎。

在前段時間Log4j 曝出存在RCE漏洞的時候,該漏洞被大量的黑產攻擊者利用,這個驅動程序也連帶著出現在了大眾的視野之中。

這些VulnDriver帶著官方的簽名,而且本身沒有什么惡意行為,因此很多安全廠商都不會告警。

在不久前被曝光的方程式組織的后滲透框架DanderSpritz中,也存在VulnDriver的利用,在其名為DoubleFeature的插件中,存在名為hidsvc.sys的驅動程序,該驅動程序存在 CVE-2017-0005 漏洞,能夠讓攻擊者通過用戶層代碼指定名稱和參數來調用內核功能。

說到這,我們來簡單了解一些方程式這個組織吧。

方程式組織被稱為世界上最尖端的網絡攻擊組織之一,和惡名昭彰的震網(Stuxnet)和火焰(Flame)有著很深的聯系。

震網是一個全球性質的工業病毒,是世界上首個網絡“超級破壞性武器”,曾被用來攻擊伊朗核設施,手法極其陰險。

同時,我國的工業設施也受到了一定的影響。

因此他們的存在,是國家機密和關鍵基礎設施巨大的威脅。

在這次被曝光的項目中存在一個遠程訪問工具,其下有一個名為MSNDSRV.sys的驅動程序。

該驅動程序曾在2015年的EquationDrug?組件中被提到,可以隱藏用戶側組件,另外可以在注冊表遍歷所有網卡,調用NdisRegisterProtocol函數注冊一個NDIS流量監聽器,可以接收到受害主機所有流量,實現通訊流量監控。

在兩個龐大的項目中,這個驅動程序顯得微不足道,和之前提到的Rootkit程序相比,方程式組織的Rootkit技術沒有核心組件的地位,只是整個項目下某一個插件下的一個組件,是一個“隨取隨用”的地位。

但就是這樣一個看起來不值一提的組件,在兩個程序中都出現了。

足以說明,Rookit是方程式組織在攻擊組件開發的過程中非常常用的技術,而對于這類常用的組件,攻擊者也不會花太多心思進行二次開發。

然而就算是這樣,安全廠商仍舊鮮有捕獲到方程式組織的活動痕跡,該組織的高隱匿技術之強,可想而知。

檢測-這是一場與攻擊者的軍備競賽

業界對反Rootkit軟件使用的技術進行了分類。簽名的檢測(Signature-based detection)、文件完整性監測(File integrity monitoring)、Rootkit Hook檢測(Rootkit hooking detection)、交叉視圖分析(Cross-view analysis)以及基于網絡的檢測(Network-based detection)。

基于簽名的檢測就是匹配rootkit軟件字節特征,缺點是無法匹配新的rootkit,而且特征容易更改,對于已安裝rootkit的系統再實施檢測不理想。

文件完整性監測,該方法計算關鍵的、不變的操作系統文件的哈希,并將其與存儲在數據庫中的已知值進行比較。這項技術對于在磁盤上修改系統二進制文件的rootkit很有效,但rootkit的作者很快使用hooking或DKOM技術,以此篡改執行結果,使得檢測效果不理想。

Rootkit Hook檢測,SSDT、IAT和IDT都有一組用于每個服務或中斷的函數指針,它們都在內存中的特定范圍內。當rootkit修改Hook指向惡意服務或中斷例程時,函數指針所指向的位置幾乎總是位于特定內存地址范圍之外。在這期間還發展了Inline Hook形式,來規避這些關鍵表的檢測,后來發展了FSD Hook、FSD Inline Hook。

交叉視圖分析,交叉視圖分析涉及從“用戶”或“API”視圖查看系統,并將其與低級視圖進行比較,交叉視圖方法可以檢測基于DKOM和系統例程補丁的Rootkit,不能檢測基于HOOK的Rootkit。

基于網絡的檢測,理論上,rootkit可能會試圖隱藏其網絡通信,以逃避操作系統或用戶的檢測,但是從系統外部還是能看到流量的,這方面成了C2隱藏通信和網絡檢測的較量。

Windows也引進了一些防御技術,PatchGuard和DSE。PatchGuard用于內核完整性檢測,守護容易被HOOK的地方。DSE用于檢測驅動簽名,限制未簽名驅動加載。上文提到的Turla則繞過了這種限制,通過引入VulnDriver間接繞過。通過修改內存中的特殊變量就能關閉DSE功能,此時,加載第二個未簽名的惡意驅動,直接HOOK PatchGuard告警的關鍵函數,在下一個內核完整性校驗過程中不讓異常表現出來,從而完成了PatchGuard功能的繞過。

總結

說了這么多,其實只想說明一個問題,那就是Rootkit技術一直都沒有過時,它一直都是攻擊者青睞的攻擊技術。雖然他的熱度被各式各樣的新型網絡威脅所掩蓋,但在那些網絡攻擊的事件中,我們又常常能見到它的影子。

在我們忙于研究處理其他網絡威脅技術的時候,它也在以某種的方式存在,并不斷成長著。在安全廠商不斷提升己方檢測能力的同時,攻擊者也在不斷提升對抗能力,傳統的檢測方式不斷的承受著一輪又一輪的攻擊。

對于高對抗的Rookit技術的檢測,對于傳統的檢測技術是一個很大的挑戰,安全廠商還有很多的工作要去完成。

參考鏈接

1 . https://decoded.avast.io/martinchlumecky/dirtymoe-rootkit-driver/

2.https://blog.talosintelligence.com/2020/12/vuln-spotlight-NZXT-CAM-.html

3.https://blog.minerva-labs.com/malicious-telegram-installer-drops-purple-fox-rootkit

4.https://www.lastline.com/labsblog/dissecting-turla-rootkit-malware-using-dynamic-analysis/

5.https://mp.weixin.qq.com/s/a1LgQqmkGFYYq7JQLQKmMQ

6.《Eset-Turla-Outlook-Backdoor》

7.https://securelist.com/operation-tunnelsnake-and-moriya-rootkit/101831/

8.https://unit42.paloaltonetworks.com/acidbox-rare-malware/


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1872/