一文看清PrintNightmare的危險與應對

上星期Microsoft警告Windows用戶有關Windows Print Spooler服務的安全漏洞(有稱PrintNightmare),漏洞編號分別是CVE-2021-1675和CVE-2021-34527,兩個漏洞都可以讓攻擊者在持有普通用戶帳號的情況下,取得運行Windows Print Spooler的漏洞伺服器或客端裝置的控制權,而該服務在所有Windows客端或伺服器上是預設開啟,包括Domain controller在內。

Kaspersky產品已能防護有關漏洞攻擊

Kaspersky的產品現時已經能應對利用以上兩個漏洞發動的攻擊,並命名為以下的名字:

  • HEUR:Exploit.Win32.CVE-2021-1675.*
  • HEUR:Exploit.Win32.CVE-2021-34527.*
  • HEUR:Exploit.MSIL.CVE-2021-34527.*
  • HEUR:Exploit.Script.CVE-2021-34527.*
  • HEUR:Trojan-Dropper.Win32.Pegazus.gen
  • PDM:Exploit.Win32.Generic
  • PDM:Trojan.Win32.Generic
  • Exploit.Win32.CVE-2021-1675.*
  • Exploit.Win64.CVE-2021-1675.*

Kaspersky的偵測邏輯從最新的Mimikatz framework v.2.2.0-20210707中,也成功封鎖該攻擊技術。現時正密切監視情況並改良偵測有關漏洞,通過行為偵測和Exploit Prevention元件。如果是使用Managed Detection and Response服務,Kaspersky的SOC專家能夠偵測漏洞被利用的情況、調查有關攻擊並向客戶回報。

CVE-2021-34527

當使用RPC protocol新增打印機時( (RpcAsyncAddPrinterDriver [MS-PAR] 或 RpcAddPrinterDriverEx [MS-RPRN]),客端需要向Print Spooler服務提供多項參數:

  • pDataFile – 該打印機data檔案的路徑
  • pConfigFile – 該打印機設定檔案的路徑
  • pDriverPath – 當打印機運作期間使用的驅動檔案

這服務會進行檢查,確保pDataFile和pDriverPath不是UNC路徑,但並沒有檢查pConfigFile,意味著服務會複製設定DLL檔案到%SYSTEMROOT%\system32\spool\drivers\x64\3\資料夾(x64版本OS)。

現在,如果Windows Print Spooler服務再嘗試新增打印機,但這次設定pDataFile去該複製DLL的路徑,打印服務便會讀取該DLL,因為該路徑並非UNC路徑,並成功通過檢查,這種成法可以透過低權限帳號進行。

CVE-2021-1675

本機版本的PrintNightmare使用CVE-2021-34527相同的方法,不同之在進入點功能(AddPrinterDriverEx),這意味著攻擊者能把惡意DLL放入任何目錄去利用安全漏洞攻擊。

緩解措施

Kaspersky的專家預計,越來越多有心人會藉此方法去取得公司內部資源,甚至是加密勒索感染和數據盜竊。所以強烈建議Windows的用戶依照Microsoft的指引,以及最新的保安更新。

引述自Microsoft (7th July 2021):

因為有漏洞被利用的可能,domain controller和Active Directory管理系統需要把Print Spooler服務關閉,建議的做法透過Group Policy Object (GPO)。

雖然安全評估聚焦在domain controller,但任何伺服器也有被可能成為這種攻擊的對象。

資料來源:Securelist