今天小編分享的科技經驗:BlackCat勒索軟體啟用了新的籤名内核驅動程式,歡迎閱讀。
我們将在本文中詳細介紹發生在 2023 年 2 月的 BlackCat 勒索軟體事件,研究人員在其中發現了一種新型逃避功能。
2022 年 12 月下旬,Mandiant、Sophos 和 Sentinel One 的研究人員發現惡意内核驅動程式是通過幾個微軟硬體開發人員帳戶 ( 由微軟 Windows 硬體開發人員計劃認證 ) 籤名的,微軟随後撤銷了幾個在這些攻擊中被濫用的微軟硬體開發者賬戶。
我們将在本文中介紹有關 2023 年 2 月發生的 BlackCat 勒索軟體事件,該變體與三家安全商 2022 年 12 月下旬披露的惡意驅動程式重疊。眾所周知,BlackCat 在逃避功能上使用了多種技術,比如使用禁用和修改工具或使用安全模式引導技術。
本文重點分析揭示了這種新功能,它涉及使用籤名内核驅動程式進行逃避。我們認為這個新的内核驅動程式是一個最新版本,繼承了以前研究中披露的示例的主要功能。該驅動程式與單獨的用戶客戶機可執行檔案一起使用,試圖控制、暫停和終止部署在攻擊目标上的安全代理的各種進程。
攻擊者使用不同的方法對其惡意内核驅動程式進行籤名:通常是通過濫用 Microsoft 籤名門戶、使用洩露和被盜的證書或使用地下服務。在示例中,攻擊者試圖部署 Mandiant 披露的舊驅動程式,該驅動程式通過 Microsoft 籤名 ( SHA256: b2f955b3e6107f831ebe67997f8586d4fe9f3e98 ) 。由于該驅動程式之前已經被發現并檢測到,攻擊者部署了另一個由被盜或洩露的交叉籤名證書籤名的内核驅動程式。
惡意籤名的内核驅動程式
我們觀察到的 2023 年 2 月的勒索軟體事件證明,勒索軟體運營商及其附屬機構對獲得他們在攻擊中使用的勒索軟體有效負載的特權級訪問非常感興趣。他們通常使用包含低權限組件的勒索軟體家族,以避免在最終有效負載被釋放後被安全產品檢測到。跟蹤分析發現,大多數與内核相關的有效負載通常是在企圖逃避階段被發現的。
内核級攻擊的分布
大多數與内核相關的有效負載都是在企圖逃避階段被發現的
一些勒索軟體攻擊試圖遵守微軟的代碼籤名要求。這使得惡意攻擊者可以靈活地在釋放實際負載之前編譯為特定任務 ( 通常涉及削弱防御和逃避 ) 設計的内核模塊。攻擊者可以采取以下方法:
1. 使用代碼籤名證書,該證書要麼是洩露的,要麼是竊取的,要麼是從黑市購買的。
2. 通過模仿合法機構并按照微軟的流程獲取交叉籤名證書 ( 前提是微軟允許對内核模式代碼進行交叉籤名 ) ,濫用微軟的門戶來發布籤名的内核模塊,獲得新的有效代碼籤名證書,以及從黑市購買與真實身份相關的有效代碼籤名證書和 / 或擴展驗證(EV)證書。
顯示攻擊者如何遵守微軟代碼籤名要求的圖表
對籤名驅動程式的分析
接下來,我們将研究二月 BlackCat 攻擊中使用的籤名驅動程式(ktgn.sys)。下圖顯示了這些新籤署的驅動程式的其他示例,以及它們是如何被用作 BlackCat 逃避程式的。
BlackCa 在逃避階段釋放的檔案
通過虛拟機保護的用戶代理 tjr.exe 将内核驅動程式釋放到用戶臨時目錄 C:%User%AppDataLocalTempKtgn.sys。然後安裝被釋放的驅動程式,名稱為 Ktgn,啟動值為 System(在系統重新啟動時啟動)。通過我們對用戶與該驅動程式互動時發生的情況的分析,我們觀察到它只使用了一個公開的設備輸入和輸出控制(IOCTL)代碼—— Kill Process,該代碼用于阻止安裝在系統上的安全代理進程。
與此同時,驅動程式 ktgn.sys 使用當前吊銷的有效數字籤名從 "BopSoft" ( 它也曾被其他攻擊者用于代碼籤名 ) 籤名,可以成功加載到執行籤名策略的 64 位 Windows 安裝中,該驅動程式使用 Safengine Protector v2.4.0.0 工具進行混淆,這使得靜态分析技術不可靠。通過加載被混淆的驅動程式并嘗試構建一個用戶模式客戶端來觀察暴露的 IOCTL 接口,我們可以确定每個 IOCTL 代碼的函數。最後,我們觀察到相同的内核驅動程式被不同的代碼籤名證書籤名。
具有不同籤名者的驅動程式變體
用于混淆二進制檔案的封裝程式
由于它沒有注冊解除安裝回調函數,因此只有在釋放或修改服務系統資料庫項後重新啟動系統時,才能解除安裝驅動程式。
服務控制管理器無法停止該服務
缺少解除安裝函數的驅動程式
一個名為 \.keHeperDriverLink 的符号鏈接被創建,該符号允許用戶模式客戶端與其連接和通信。請注意,該鏈接只允許一個連接,如果多個客戶端試圖同時連接,系統将崩潰。
正在檢查另一個用戶模式進程是否正在嘗試連接到驅動程式
暴露的 IOCTL 接口
這個客戶機支持 10 個不同的命令,每個命令實現一個特定的功能,該功能由内核驅動程式通過适當的 IOCTL 接口執行。驅動程式和用戶模式客戶端之間的通信使用 irp_mj_devicide_control 處理程式通過以下代碼發生,每個 IOCTL 代碼及其對應的功能:
222088h:激活驅動程式
22208ch:取消激活驅動程式
222094h:終止進程
222184h:删除檔案
222188h:強制删除檔案
22218ch:復制檔案
222190h:強制復制檔案
2221c8h:注冊進程 / 線程對象通知
2221c4h:注銷進程 / 線程對象通知
222264h:重啟系統
根據我們對内核驅動程式的分析,它似乎仍在開發和測試中,因為它的結構不是很好,而且它的一些功能目前還不能使用。接下來将介紹各種 IOCTL 接口的詳細信息。
IOCTL 222088h
在執行任何其他操作之前,必須首先調用 IOCTL 222088h 來激活驅動程式。如果未調用此代碼,驅動程式将不接受任何操作,并将返回消息 STATUS_ACCESS_DENIED。用戶模式客戶端将此激活字節數組發送給驅動程式。
激活是對位于驅動程式中的大小為 0x42 的硬編碼字節數組進行簡單的字節比較。如果比較通過,它将設定一個 BOOLEAN 标志,該标志将在任何操作之前進行檢查。
運行内存中的激活字節數
復制激活字節以測試驅動程式操作
IOCTL 22208 ch
IOCTL 22208Ch 在用戶模式客戶端完成取消之前在 IOCTL 代碼 222088h 中設定的标志的操作後被調用。這将使驅動程式失效并停止處理任何新的操作。
客戶端将需要傳遞 IOCTL 代碼 222088h 中傳遞的相同字節數組,以便成功完成操作。
IOCTL 222094 h
IOCTL 222094h 用于阻止任何用戶模式進程(甚至是受保護的進程)。Tt 從用戶代理接收進程 ID,然後在目标進程上下文中創建内核線程。創建的内核線程調用 ZwTerminateProcess API 來終止目标進程。
檢查驅動程式是否激活
IOCTL 222094h 終止進程
IOCTL 222184 h
IOCTL 222184h 用于删除特定的檔案路徑。
IOCTL 222184h 删除檔案路徑
IOCTL 222188 h
IOCTL 222188h 強制删除檔案。為此,内核驅動程式執行以下操作:
1. 它嘗試使用暴力方法打開系統上的所有進程(從 PID=0x4 到 PID=0x27FFD);
2. 當它成功地打開一個進程時,它會嘗試引用進程内的所有句柄,再次使用暴力方法(從 HANDLE=0x4 開始到 HANDLE=0x27FFD);
3. 當它成功引用句柄時,它使用 ObQueryNameString API 将句柄映射到名稱。當找到匹配項時,内核驅動程式關閉句柄。
此操作将确保關閉對該檔案的所有引用,并且該操作可以成功完成,而不會出現任何錯誤,說明該檔案正被其他應用程式使用。
暴力破解 PID
暴力破解句柄
IOCTL 22218 ch
IOCTL 22218Ch 用于復制檔案。
IOCTL 22218Ch 用于復制檔案
IOCTL 222190 h
IOCTL 222190h 用于強制復制檔案。驅動程式使用與強制删除相同的操作(IOCTL 代碼:222188h)。它使用暴力方法關閉所有進程對檔案的所有引用,然後復制檔案。
IOCTL 2221C4h 和 IOCTL 2221C8h
IOCTL 2221C4h 和 2221C8h 都用于注冊和注銷進程 / 線程通知回調。然而,在撰寫本文時,這兩條路徑都是無法實現的,這表明它們仍處于開發或測試階段。
注冊對象通知的偽代碼
注銷對象通知的偽代碼
對象通知函數的偽代碼
IOCTL 222264 h
IOCTL 222264h 通過調用 HalReturnToFirmware API 重啟系統。
總結
攻擊者通過終端保護平台 ( EPP ) 和終端檢測與響應 ( EDR ) 技術,正在積極尋求對 Windows 作業系統的高權限訪問的惡意攻擊,繞過各類防護措施。由于這些添加的保護層,攻擊者傾向于選擇阻力最小的方法,通過内核層(甚至更低級别)運行惡意代碼。所以我們認為,這種威脅會一直存在。
惡意攻擊者将繼續使用 rootkit 對安全工具隐藏惡意代碼,繞過防御,并在很長一段時間内不會被檢測到。這些 rootkit 将被惡意組織大量使用,他們既擁有逆向工程低級系統組件的技能,又擁有開發此類工具所需的資源。這些惡意攻擊者還擁有足夠的财力,可以從黑市購買 rootkit 或購買代碼籤名證書來構建 rootkit。這意味着涉及這類 rootkit 的主要危險在于它們能夠隐藏復雜的有針對性的攻擊,這些攻擊将在攻擊的早期使用,允許攻擊者在受害者環境中啟動實際有效負載之前就逃脫檢測。
緩解措施
代碼籤名證書通常會被攻擊者濫用,因為它們在攻擊中提供了額外的混淆層。對于組織來說,洩露的密鑰不僅會帶來安全風險,還會導致對原始籤名軟體的聲譽和信任的喪失。企業應該通過實現最佳實踐來保護他們的證書,例如減少對私鑰的訪問,從而降低對證書進行未經授權訪問的風險。為私鑰使用強密碼和其他身份驗證方法還可以幫助保護它們免受惡意攻擊者的竊取或破壞。此外,使用單獨的測試籤名證書 ( 用于測試環境中使用的預發布代碼 ) 可以最大限度地減少實際發布籤名證書在攻擊中被濫用的可能性。
對于一般的勒索軟體攻擊,組織可以實現一個系統的安全框架,分配資源來建立一個強大的防御策略。建議如下:
盤點資產和數據;
識别授權和未經授權的設備和軟體;
審計事件和事件日志;
管理硬體和軟體配置;
僅在必要時授予管理員權限和訪問權限;
監控網口、協定和服務;
為合法應用程式建立軟體許可列表;
實施數據保護、備份和恢復措施;
啟用多因素身份驗證 ( MFA ) ;
在系統各層部署最新版本的安全解決方案;
注意攻擊的早期迹象;
保護潛在的入口點 ( 如終端、電子郵件、web 和網絡 ) ,組織可以檢測并防範惡意元素和可疑活動,從而保護自己免受勒索軟體攻擊。