Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86386581

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

ESET 的安全研究人員近日發現了一種劫持UEFI 的惡意軟件,並將其命名為BlackLotus。該惡意軟件是首個可以在Win11系統上繞過Secure Boot 的UEFI bootkit 惡意軟件。這個bootkit利用UEFI安全啟動的Nday漏洞繞過安全啟動並在啟動過程中加載惡意的內核模塊。設備一旦感染該惡意軟件,就會在Win11 系統中禁用Defender、Bitlocker 和HVCI 等防病毒軟件。

BlackLotus UEFI bootkit近年來發現的UEFI漏洞數量以及在合理的時間窗口內修復或取消易受攻擊的二進製文件的失敗都沒有引起攻擊者的注意。因此,第一個公開的繞過基本平台安全功能的UEFIbootkit——UEFI Secure Boot——現在已經成為現實。在這篇文章中,研究人員首次公開分析了該UEFIbootkit,它能夠在啟用了UEFI Secure Boot的最新Windows 11系統上運行。 bootkit的功能及其單獨的功能使研究人員相信研究人員正在處理一個被稱為BlackLotus的bootkit,UEFIbootkit至少從2022年10月起就開始在黑客論壇上以5000美元的價格出售。

UEFIbootkit的破壞性很大,它完全控制系統啟動過程,因此能夠禁用各種系統安全機制,並在系統啟動的早期階段部署自己的內核模式或用戶模式有效負載。這使得他們可以非常隱秘地行動,並擁有很高的權限。到目前為止,只有少數幾個在野外被發現並被公開報導,例如,研究人員在2020年發現的多個惡意EFI樣本,或功能齊全的UEFIbootkit,如研究人員去年發現的ESPecterbootkit,或卡巴斯基研究人員發現的FinSpybootkit。

與固件植入(如LoJax)相比,UEFIbootkit可能在隱蔽性方面有所下降。研究人員的團隊於2018年發現了第一個野外UEFI固件植入,因為bootkit位於易於訪問的FAT32磁盤分區上。然而,作為啟動加載程序運行可以提供與固件植入幾乎相同的功能,但無需克服多級SPI閃存防禦,如BWE、BLE和PRx保護位,或硬件提供的保護(如Intel Boot Guard)。當然,UEFI Secure Boot阻礙了UEFIbootkit,但有一些不可忽視的已知漏洞可以繞過這一基本的安全機制。最糟糕的是,截止發文時,其中一些漏洞仍然很容易在最新系統上被利用,包括BlackLotus所利用的漏洞。

研究人員的調查始於對2022年末監測中的BlackLotus用戶模式組件(一個HTTP下載器)的一些點擊。經過初步評估,樣本中發現的代碼模式使研究人員發現了六個BlackLotus安裝程序(包括VirusTotal和研究人員自己的遙測)。這使研究人員能夠探索整個執行鏈,並意識到研究人員在這里處理的不僅僅是常規的惡意軟件。

以下是有關BlackLotus的要點,以及與之相關的一系列事件的時間表:

1.它能夠在啟用UEFI Secure Boot的最新、完全修復的Windows 11系統上運行;

2.它利用一個超過一年的漏洞(CVE-2022-21894)繞過UEFI Secure Boot並為bootkit設置持久性,這是該漏洞第一次被公開使用;

3.儘管微軟在2022年1月的更新中修復了該漏洞,但由於受影響的、有效簽名的二進製文件仍未添加到UEFI取消列表中,因此該漏洞仍有可能被利用。 BlackLotus就是利用了這一點,將其合法但易受攻擊的二進製文件副本帶到系統中,以利用該漏洞;

4.它能夠禁用操作系統安全機制,如BitLocker, HVCI和Windows Defender;

5.一旦安裝完畢,bootkit的主要目標是部署一個內核驅動程序(其中一個功能是保護bootkit不被刪除),以及一個負責與CC通信並能夠加載其他用戶模式或內核模式負載的HTTP下載器;

6.至少從2022年10月6日起,BlackLotus就在地下論壇上進行銷售;

7.有趣的是,如果受攻擊的主機位於以下地區,研究人員分析的一些BlackLotus安裝程序不會繼續進行bootkit安裝:

Romanian(Moldova),ro-MDRussian(Moldova),ru-MDRussian(Russia),ru-RUUkrainian(Ukraine),uk-UABelarusian(Belarus),be-BYArmenian(Armenia),hy-AMKazakh(Kazakhstan),kk-KZ與BlackLotus相關的各事件的時間軸如下圖所示。

1.png

與BlackLotus UEFI bootkit相關的主要事件時間軸

如上所述,自2022年10月6日起,bootkit已在地下論壇上銷售。目前,研究人員還無法從監測數據中確定用於向受害者部署bootkit的確切傳播渠道。研究人員從公開來源和監測數據中獲得的BlackLotus樣本數量很少,這證明只有很少的攻擊者開始使用它。但是,在BlackLotus依賴的易受攻擊的啟動程序被取消之前,研究人員擔心,如果這個bootkit落入知名的犯罪組織手中,情況會迅速發生變化,這是基於bootkit的易於部署和犯罪組織利用其殭屍網絡傳播惡意軟件的能力。

幕後組織是BlackLotus嗎? BlackLotus屬於一款相當全能的固件級rootkit 惡意軟件。特點是能夠躲過各種刪除操作,以及繞過先進的Windows 防護措施。此前這類高級攻擊能力,僅被擁有深厚背景的機構所擁有,比如情報威脅組織。

1.BlackLotus在黑客論壇上的宣稱它具有集成的安全啟動繞過。將易受攻擊的驅動程序添加到UEFI取消列表目前是不可能的,因為該漏洞影響了數百個至今仍在使用的啟動加載程序。

安全研究人員分析:它利用CVE-2022-21894來破壞安全啟動,並在支持UEFI Secure Boot的系統上實現持久性。在撰寫本文時,它使用的易受攻擊的驅動程序仍然沒有在最新的dbx中被取消。

2.BlackLotus在黑客論壇上宣稱,bootkit具有內置的Ring0/Kernel保護,可以防止被刪除。

安全研究人員分析:它的內核驅動程序保護屬於EFI系統分區(ESP)上的文件句柄,可以不被關閉。作為額外的保護層,這些句柄會被持續監控,如果這些句柄中的任何一個被關閉,就會觸發藍屏死機(BSOD)。

3.BlackLotus在黑客論壇上宣稱,它具有反虛擬機(anti-VM)、反調試和代碼混淆功能,可以阻止被分析。

安全研究人員分析:它包含各種反虛擬機(anti-VM)、反調試和混淆技術,使其更難被複製或分析。

4.BlackLotus在黑客論壇上宣稱其目的是充當HTTP下載器。

安全研究人員分析:它的最後一個組件充當HTTP下載器,如HTTP下載器部分所述。

5.BlackLotus在黑客論壇上宣稱,HTTP下載器在一個合法的進程中以SYSTEM帳戶運行。

安全研究人員分析:它的HTTP下載器在winlogon.exe進程上下文中運行。

6.BlackLotus在黑客論壇上的宣稱,它是一個磁盤大小只有80kB的小型bootkit。

安全研究人員分析:能夠獲得的樣本確實在80 kB左右。

7.BlackLotus在黑客論壇宣稱,它可以禁用Windows內置的安全保護,如HVCI, Bitlocker, Windows Defender,並繞過用戶帳戶控制(UAC)。

安全研究人員分析:它可以禁用HVCI, Windows Defender, BitLocker並繞過UAC。

基於這些分析,研究人員可以肯定他們在野外發現的bootkit是BlackLotus UEFIbootkit。

攻擊概述BlackLotus攻擊鏈的簡單步驟如下圖所示。它由三個主要部分組成:

它首先執行安裝程序(下圖中的步驟1),該安裝程序負責將bootkit的文件部署到EFI系統分區,禁用HVCI和BitLocker,然後重新啟動計算機。

第一次重新啟動後,利用CVE-2022-21894並隨後記錄攻擊目標設備所有者的密鑰(MOK),以便在啟用UEFI Secure Boot的系統上實現持久性。然後重新啟動設備(下圖的步驟2-4)。

在所有後續啟動中,執行自簽名的UEFIbootkit,並部署其內核驅動程序和用戶模式有效負載(HTTP下載器)。這些組件能夠一起從CC服務器下載並執行額外的用戶模式和驅動程序組件,並保護bootkit不被刪除(下圖中的步驟5-9)。

2.png

BlackLotus的簡單步驟

工件分析儘管研究人員認為這是BlackLotus UEFIbootkit,但在分析的示例中沒有發現任何引用此名稱的內容。相反,該代碼充滿了對《暮蝉悲鸣时》 (HigurashiWhenTheyCry)動漫的引用,例如,在單個組件名稱中,例如Higurashi_installer_uac_module.dll和Higurashi _kernel.sys,以及用於簽名bootkit二進製文件的自簽名證書中(如下圖所示)。

3.png

BlackLotusbootkit使用的自簽名證書

此外,代碼解密但從不使用包含來自BlackLotus開發者的消息的各種字符串(如下圖所示),注意,hasherezade是一位著名的研究人員和各種惡意軟件分析工具的開發者,或者只是一些來自各種歌曲、遊戲或系列的隨機引用。

4.png

BlackLotus開發者在代碼中留下的消息示例

安裝過程研究人員首先分析了BlackLotus安裝程序,bootkit似乎以安裝程序的形式傳播,有兩個版本——離線和在線。這兩者之間的區別在於它們獲取合法(但易受攻擊)的Windows二進製文件的方式,這些二進製文件後來被用於繞過安全啟動。

在脫機版本中,Windows二進製文件嵌入在安裝程序中;

在在線版本中,Windows二進製文件直接從Microsoft符號存儲中下載。到目前為止,我們已經看到以下Windows二進製文件被BlackLotus bootkit濫用:

https://msdl.microsoft.com/download/symbols/bootmgfw.efi/7144BCD31C0000/bootmgfw.efi;https://msdl.microsoft.com/download/symbols/bootmgr.efi/98B063A61BC000/bootmgr.e fi;https://msdl.microsoft.com/download/symbols/hvloader.efi/559F396411D000/hvloader.efi;安裝程序的目標很明確,它負責禁用Windows安全功能,如BitLocker磁盤加密和HVCI,並將多個文件(包括惡意bootkit)部署到ESP。完成後,它會重新啟動受攻擊的設備,讓被釋放的文件完成其工作,以確保每次系統啟動時都會自動執行自簽名的UEFIbootkit,無論UEFI Secure Boot保護狀態如何。

初始化步驟執行安裝程序時,它會檢查它是否有足夠的權限(至少需要管理員)將其余文件部署到ESP,並執行其他需要提升進程的操作,如關閉HVCI或禁用BitLocker。如果不是這樣的話,它會嘗試通過使用此處詳細描述的UAC繞過方法再次執行安裝程序來提升,通過程序兼容性助手進行UAC繞過。

獲得必要的權限後,它將繼續,通過使用可用的Windows API函數讀取SecureBoot UEFI變量的值來檢查UEFI Secure Boot狀態,並通過直接訪問內存中的KUSER_SHARED_DATA結構字段NtMajorVersion和NtMinorVersion來確定Windows版本。它這樣做是為了決定是否需要繞過UEFI Secure Boot來在受害者的系統上部署bootkit(因為安全啟動支持最初是在Windows 8中添加的,並且可能不會在任何給定的設備上啟用)。

在繼續下一步之前,它將位於ESP:\EFI\Microsoft\Boot\目錄中的合法Windows啟動管理器(bootmgfw.efi)二進製文件重命名為winload.efi。此重命名的bootmgfw.exfi備份稍後將被bootkit用於啟動操作系統,或者在從CC服務器收到“卸載”命令時恢復原始啟動鏈,詳見CC通信部分。

步驟1——部署文件如果啟用了UEFI Secure Boot,安裝程序會將多個文件放入ESP:/EFI/Microsoft/Boot/和ESP:/system32/目錄中。前者是Windows使用的標準目錄,後者是安裝程序創建的自定義文件夾。

表1提供了安裝程序釋放的文件列表,並簡要說明了每個文件在執行鏈中的角色。稍後研究人員將詳細解釋執行鍊是如何工作的,現在只需注意,幾個合法的Microsoft簽名文件與惡意文件一起被釋放。

表1:BlackLotus安裝程序在啟用UEFI Secure Boot的系統上部署的文件

5.png

如果受害者正在運行不支持UEFI Secure Boot的Windows版本,或者在UEFI Secure Boot被禁用的情況下,部署非常簡單。部署惡意bootkit唯一需要做的事情是將ESP:\EFI\Microsoft\Boot\目錄中現有的Windows啟動管理器(bootmgfw.efi)二進製文件替換為攻擊者自己的自簽名惡意UEFI應用程序。由於UEFI Secure Boot是禁用的(因此在啟動期間不執行完整性驗證),因此不需要利用,UEFI固件只是執行惡意啟動管理器而不會導致任何安全違規。

步驟2——禁用受虛擬機監控程序保護的代碼完整性(HVCI)為了以後能夠運行自定義的未簽名內核代碼,安裝程序必須確保在系統上禁用了HVCI。已經有一位ESET研究人員在2022年就這個主題寫了一篇內容文章(簽名內核驅動程序——Windows內核的無防護網關):

基於虛擬化的安全(VBS)提供了幾個保護功能,其中最突出的是hypervisor保護的代碼完整性(HVCI),這也是一個獨立的功能。 HVCI在內核中強制執行代碼完整性,並且只允許執行有簽名的代碼。它有效地防止了易受攻擊的驅動程序被濫用來執行未簽名的內核代碼或加載惡意驅動程序(無論使用何種攻擊方法),似乎惡意軟件濫用易受攻擊的驅動程序來加載惡意代碼是微軟實現這一功能的主要動機之一。

如下圖所示,要禁用此功能,安裝程序將HypervisorEnforcedCodeIntegrity註冊表項下的Enabled註冊表值設置為零。

6.png

負責禁用HVCI的BlackLotus安裝程序函數的Hex-Rays反編譯代碼

步驟3——禁用BitLocker安裝程序禁用的下一個功能是BitLocker驅動器加密。這樣做的原因是,BitLocker可以與受信任的平台模塊(TPM)結合使用,以確保自系統上配置BitLocker驅動器加密以來,各種啟動文件和配置(包括安全啟動)未被篡改。考慮到安裝程序修改了受攻擊設備上的Windows啟動鏈,在支持TPM的系統上保持BitLocker將導致下次啟動時出現BitLocker恢復屏幕,並提示受害者係統已被攻擊。

要禁用此保護,BlackLotus安裝程序進行以下操作:

遍歷Root\CIMV2\Security\MicrosoftVolumeEncryption WMI命名空間下的所有捲,並通過調用Win32_EncryptableVolume WMI類的GetProtectionStatus方法檢查其保護狀態;

對於受BitLocker保護的對象,它調用DisableKeyProtectors方法,DisableCount參數設置為零,這意味著保護將被掛起,直到手動啟用;

在禁用了必要的保護並部署了所有文件後,安裝程序將自己註冊為在下次系統重新啟動時刪除,並重新啟動計算機以繼續利用CVE-2022-21894。