RobbinHood:利用Windows驅動程序漏洞關閉殺軟的勒索軟件

類似文章鏈接:https://www.freebuf.com/articles/system/228338.html

近期,Sophos安全團隊發現了一起新型勒索軟件攻擊事件,該勒索軟件能通過合法且經過數字簽名的硬件驅動程序,在惡意文件加密部分執行之前禁用目標計算機中的安全產品。

該驅動程序曾由臺灣主板製造商技嘉(Gigabyte)使用(當前已棄用),它具有一個已知的漏洞CVE-2018-19320,利用此漏洞,攻擊者能夠嘗試訪問設備並部署第二個驅動程序,進而殺死系統中的殺毒產品。

該漏洞於2018年被發現,技嘉曾否認此漏洞並表示其產品不受影響,後來才決定撤銷此驅動程序。但由於用於對驅動程序進行數字簽名的Verisign代碼簽名機制尚未撤銷簽名證書,Authenticode簽名仍然有效,因此它當前仍能存在且具有威脅性。

圖1.勒索告示

Sophos將此次觀察到的勒索軟件稱爲RobbinHood。試圖繞過殺毒產品的勒索軟件並不少見,例如Nemty使用常規的taskkill殺死進程和服務,而Snatch勒索軟件則將電腦重新引導到安全模式以解決端點保護的問題。顯然,從內核模式執行進程終止具有許多優勢。

本文將對此次攻擊的操作方式作探討,並提出一些在未來面對這類情形的威脅時的防禦措施。

擊破Windows防禦

在不深入研究勒索軟件或數據加密本身的情況下,我們將專注於攻擊者用來殺死端點保護軟件的模塊。攻擊的這一部分由STEEL.EXE中嵌入的幾個文件組成,所有文件都被提取到到C:\WINDOWS\TEMP。

STEEL.EXE

STEEL.EXE負責終止進程並刪除殺軟文件。爲此,STEEL.EXE應用程序首先部署ROBNR.EXE,後者安裝惡意的未簽名驅動程序RBNL.SYS。該驅動程序以內核模式運行,處於提取進程和文件最佳位置,不受諸如端點保護之類的安全控制措施的阻礙。

RBNL.SYS安裝完成後,STEEL.EXE讀取PLIST.TXT文件,指示RBNL.SYS刪除該文件中列出的所有應用程序並終止其關聯進程。如果進程作爲服務運行,則服務也會因爲關聯文件被刪除而不再自動重啓。

STEEL.EXE進程退出後,勒索軟件程序就可以暢通無阻地執行加密攻擊。

ROBNR.EXE

ROBNR.EXE是一個便捷的應用程序,可植入並安裝易受攻擊的GDRV.SYS驅動程序和惡意RBNL.SYS驅動程序。

64位Windows計算機具有爲驅動程序簽名實施的機制,這意味着Windows僅允許加載由製造商和Microsoft正確簽名的驅動程序。

惡意軟件作者沒有費心爲驅動程序尋找簽名,因爲它涉及購買證書,購買的證書也可能隨時被頒發機構吊銷,導致驅動程序不再可用。這裏作者選擇了另一條途徑,利用正確簽名的第三方GDRV.SYS驅動程序中的提權漏洞,該漏洞允許讀寫任意內存,作者的目的是爲了(暫時)禁用Windows內核內存中的驅動程序簽名機制。一旦禁用了驅動程序簽名機制,攻擊者便可以加載其未簽名的惡意驅動程序。

禁用驅動程序簽名執行

攻擊者可以通過更改內核空間中的單個變量(單個字節)來禁用驅動程序簽名強制實施。在Windows 7(或更早版本)中,此變量稱爲nt!g_CiEnabled (NTOSKRNL.EXE);在Windows 8和10上,此變量稱爲ci!g_CiOptions(CI.DLL)。爲了找到變量所在位置,攻擊者使用了一種來自DSEFix的策略。

在Windows 8或10上步驟如下:首先在進程中調用DONT_RESOLVE_DLL_REFERENCES來加載標準的Windows組件CI.DLL,並將其作爲一個數據庫。加載CI.DLL後通過GetModuleBaseByName函數查詢CI.DLL在內核內存中的位置,使用NtQuerySystemInformation(SystemModuleInformation…)來獲取所有已加載內核模塊的內核地址。

圖2.找到控制驅動程序簽名實施的變量

圖3.獲取模塊的內核地址

一旦知道了這些內核地址,攻擊者便會從模塊的導出地址表中解析導出的CiInitialize函數。然後反彙編該函數找到call CipInitialize()的指令mov dword ptr [address],ecx。下圖中展示了地址g_CiOptions。

圖4.使用HDE反彙編程序查找g_CiOptions的位置

知道了g_CiOptions變量在內核空間中的位置,就可以將易受攻擊的第三方驅動程序放到磁盤上啓動。有關此漏洞的確切信息請參閱此篇文章(https://www.secureauth.com/labs/advisories/gigabyte-drivers-elevation-privilege-vulnerabilities)。

除了技嘉驅動程序之外,還有其他許多具有類似漏洞的易受攻擊的驅動程序,可能會在將來被攻擊者濫用,例如VirtualBox (CVE-2008-3431), Novell (CVE-2013-3956), CPU-Z (CVE-2017-15302), ASUS (CVE-2018-18537)。

圖5.惡意驅動程序的部署方式

惡意驅動程序

成功部署和啓動惡意驅動程序後,ROBNR.EXE進程退出,STEEL.EXE開始處理PLIST.TXT文件,列出所有要殺死的應用程序。

該惡意內核驅動程序用於終止進程並刪除關聯的文件。它採用了多種技巧來殺死這些應用程序,即使它們正在使用中並受到安全產品篡改保護機制的保護。

圖6.惡意驅動程序啓動

圖7.惡意驅動程序處理來自STEEL.EXE的命令(IOCTL)

在惡意驅動程序中發現以下字符串,表明惡意驅動程序很可能是由RobbinHood勒索軟件背後的同一作者構建的:

C:\Users\Mikhail\Desktop\Robnhold\x64\Win7Release\Robbnhold.pdb

刪除文件

惡意驅動程序具有多種刪除文件的方法,但它不會只選擇一種方式,而是按順序運行這些方法確保文件真正刪除。

要刪除正在使用的文件,惡意驅動程序直接在NTFS.SYS存儲設備上發出I/O請求數據包或IRP。通過清除ImageSectionObject和DataSectionObject指針,存儲設備將假定文件未在使用中,並且即使文件仍作爲進程運行也會被安全刪除。此技巧的使用請參見此文。

圖8.惡意驅動程序使用多種方式刪除文件

圖9.惡意驅動程序刪除正在使用的文件

終止進程

刪除文件後,STEEL.EXE將殺死與文件關聯的所有進程,也是通過惡意內核驅動程序來完成的。

圖10.惡意驅動程序終止進程

依靠對象句柄過濾進行篡改保護的端點保護進程無法防止內核模式的進程終止或文件刪除。惡意驅動程序打開的進程句柄是內核句柄,而內核句柄是不能被過濾的。因此,惡意內核驅動程序可以殺死這些進程的同時不干擾端點安全控制。有一種解決方案是,讓端點保護進程監視任何試圖內核模式驅動程序的進程,並防止安裝發生。

如果該進程作爲服務運行,則Windows的服務控制管理器將(通常)嘗試重新啓動剛剛被殺死的進程,但會因相關文件不存在而失敗。安全應用程序將被有效永久禁用,重新啓動服務的失敗嘗試將顯示在事件日誌中。

當STEEL.EXE殺死了PLIST.TXT列表中的所有進程和文件後將退出。現在,勒索軟件可以不受阻礙地加密系統上的所有文件。

可以採取哪些措施來防止此類攻擊?

即使用戶安裝好了所有的補丁,且電腦上沒有已知的漏洞,仍然有可能被攻擊,因爲攻擊者利用的漏洞是他們自己帶來的。那麼,我們可以做些什麼來阻止攻擊者的初始訪問呢?

採用三管齊下的方法,可以最大程度地降低遭受攻擊的風險。

1.破壞整條攻擊鏈的威脅保護

當今的勒索軟件往往了使用多種技術,把防禦集中在單一的技術上只會讓你面臨的的風險上升。取而代之的是應該部署多種技術來儘可能多地攻破攻擊的各個階段,並將公共雲集成到安全策略中。

2.嚴格的安全措施

包括:

·使用多重驗證(MFA)

·使用通過密碼管理器管理的複雜密碼

·限制訪問權限;僅向用戶帳戶和管理員授予他們所需的訪問權限

·進行定期備份,並將其置於離線和離線狀態,以使攻擊者無法找到它們

·鎖定RDP,如果不需要它,可以關閉或使用速率限制,2FA或者VPN

·確保啓用了篡改保護,篡改保護旨在防止勒索軟件禁用端點保護的情況發生

3.持續的員工教育

人往往是網絡安全中最薄弱的環節,網絡犯罪分子正是利用人類心理和行爲謀取不法收益的專家。因此,保障員工獲得安全方面的教育也是很重要的。

本文參考自:https://news.sophos.com/en-us/2020/02/06/living-off-another-land-ransomware-borrows-vulnerable-driver-to-remove-security-software/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章