微軟7號發(fā)布了PrintNightmare的安全漏洞補(bǔ)丁,PrintNightmare漏洞的CVE編號為CVE-2021-1675和CVE-2021-34527,。這是Windows打印假脫機(jī)程序中的一個嚴(yán)重漏洞,微軟將其評為關(guān)鍵漏洞,。在Microsoft為其發(fā)布補(bǔ)丁之前,,漏洞利用代碼已在公共領(lǐng)域泄漏。微軟建議系統(tǒng)管理員在補(bǔ)丁可用之前禁用Print Spooler服務(wù),。當(dāng)Windows Print Spooler服務(wù)錯誤地執(zhí)行特權(quán)文件操作時,,遠(yuǎn)程代碼執(zhí)行漏洞就會出現(xiàn)。由于 Windows Print Spooler 服務(wù)在Windows上默認(rèn)運(yùn)行,,微軟不得不為 Windows Server 2019,、Windows Server 2012 R2、Windows Server 2008,、Windows 8.1,、Windows RT 8.1 以及 Windows 10 的各種支持版本發(fā)布補(bǔ)丁。
微軟表示:“2021年7月6日及之后發(fā)布的安全更新包含對Windows Print Spooler服務(wù)中名為PrintNightmare的遠(yuǎn)程代碼執(zhí)行漏洞的保護(hù),,記錄在CVE-2021-34527以及CVE-2021-1675中,。我們建議用戶立即安裝這些更新?!?/p>
該漏洞是微軟近年來面臨的一個較為嚴(yán)重的問題,,因?yàn)槲④浬踔翞閃indows 7也發(fā)布了補(bǔ)丁,而早在2020年1月14日微軟就已經(jīng)終止了對Windows 7的技術(shù)支持,。雖然漏洞發(fā)布了,,但PrintNightmare漏洞所帶來的影響尚未完全結(jié)束,因?yàn)槟承┌姹镜腤indows補(bǔ)丁尚未發(fā)布,。據(jù)了解,,Windows 10版本1607、Windows Server 2016和Windows Server 2012的更新尚不可用,。這些Windows版本的安全更新或?qū)⒃诮诎l(fā)布,。
CVE-2021-1675和CVE-2021-34527(也稱為PrintNightmare)的技術(shù)分析
具有普通用戶帳戶的攻擊者可以利用這兩個漏洞來控制運(yùn)行Windows Print Spooler服務(wù)的易受攻擊的服務(wù)器或客戶端機(jī)器。該服務(wù)在所有Windows客戶機(jī)和服務(wù)器(包括域控制器)上默認(rèn)啟用,。
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.*
卡巴斯基的安全檢測工具檢測邏輯也成功阻止了來自最新 Mimikatz 框架 v. 2.2.0-20210707 的攻擊技術(shù),。
目前卡巴斯基正在密切監(jiān)控這些情況,并使用行為檢測和漏洞利用防護(hù)組件改進(jìn)對這些漏洞的通用檢測,。作為托管檢測和響應(yīng)服務(wù)的一部分,,卡巴斯基 SOC 專家能夠檢測對這些漏洞的利用、調(diào)查此類攻擊并向客戶報告,。
CVE-2021-34527
當(dāng)使用 RPC 協(xié)議添加新打印機(jī)(RpcAsyncAddPrinterDriver [MS-PAR] 或 RpcAddPrinterDriverEx [MS-RPRN])時,,客戶端必須向 Print Spooler 服務(wù)提供多個參數(shù):
pDataFile——此打印機(jī)的數(shù)據(jù)文件的路徑;
pConfigFile—— 此打印機(jī)的配置文件的路徑,;
pDriverPath——此打印機(jī)在工作時使用的驅(qū)動程序文件的路徑,;
該服務(wù)進(jìn)行了多次檢查以確保 pDataFile 和 pDriverPath 不是 UNC 路徑,,但是沒有對 pConfigFile 進(jìn)行相應(yīng)的檢查,這意味著該服務(wù)會將配置 DLL 復(fù)制到文件夾 %SYSTEMROOT%\system32\spool\drivers\x64\3\ (在 x64 版本的操作系統(tǒng)上),。
現(xiàn)在,,如果 Windows Print Spooler 服務(wù)嘗試再次添加打印機(jī),但這次將 pDataFile 設(shè)置為復(fù)制的 DLL 路徑(來自上一步),,則打印服務(wù)將加載此 DLL,,因?yàn)樗穆窂讲皇?UNC 路徑,,并且檢查將成功通過,。這些方法可由低權(quán)限帳戶使用,并且 DLL 由 NT AUTHORITY\SYSTEM 組進(jìn)程加載,。
CVE-2021-1675
PrintNightmare 的本地版本使用與 CVE-2021-34527 相同的方法進(jìn)行漏洞利用,,但入口點(diǎn)函數(shù)(AddPrinterDriverEx)有所不同,這意味著攻擊者可以將惡意 DLL 放在任何本地可訪問的目錄中以運(yùn)行漏洞利用,。
緩解措施
卡巴斯基的專家們預(yù)計,,試圖獲取公司內(nèi)部資源的黑客攻擊將會越來越多,同時還存在著感染勒索軟件和竊取數(shù)據(jù)的高風(fēng)險,。
因此,,強(qiáng)烈建議你遵循微軟的指導(dǎo)方針,應(yīng)用最新的Windows安全更新,。
雖然漏洞發(fā)布了,,但PrintNightmare漏洞所帶來的影響尚未完全結(jié)束,PrintNightmare是Windows打印假脫機(jī)程序中的一個漏洞,,它是由AddPrinterDriverEx(),、RpcAddPrinterDriver()和RpcAsyncAddPrinterDriver()用于安裝本地或遠(yuǎn)程打印機(jī)驅(qū)動程序的Windows API函數(shù)中缺少ACL(訪問控制列表)檢查引起的。
這些函數(shù)都可以通過不同的Windows API 使用,,如下所示:
AddPrinterDriverEx (SDK)
RpcAddPrinterDriver (MS-RPRN)
RpcAsyncAddPrinterDriver (MS-PAR)
使用 PrintNightmare,,可以繞過權(quán)限檢查,將惡意 DLL 安裝到 C:\Windows\System32\spool\drivers 文件夾中,,然后利用漏洞將其作為打印驅(qū)動程序加載,,以實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行或本地權(quán)限提升。
當(dāng)測試是否允許將文件安裝到具有SYSTEM權(quán)限的文件夾中時,,API將用戶提供的參數(shù)作為權(quán)限檢查的一部分,。
這與文件夾上的ACL無關(guān),它是軟件SDK內(nèi)部的一個檢查,,可以通過API調(diào)用為函數(shù)提供額外的參數(shù)來繞過它,。
為了利用該漏洞,攻擊者可以通過 RPC 或 LRPC 將請求直接發(fā)送到本地服務(wù),。雖然微軟的 OOB 補(bǔ)丁專注于阻止遠(yuǎn)程利用漏洞,,但 Hickey 表示他們沒有解決底層 ACL 檢查問題,,允許創(chuàng)建修改后的漏洞利用。微軟最近發(fā)布的補(bǔ)丁專注于解決 RCE 漏洞利用向量,,似乎解決了普遍存在的 PoC,,但是你也可以通過 LRPC 和本地 API 來實(shí)現(xiàn)這一點(diǎn),具體取決于主機(jī)和環(huán)境,,看來補(bǔ)丁確實(shí)沒有正確解決 ACL 檢查中的潛在問題,,這允許在完全修補(bǔ)的主機(jī)上仍然利用 LPE。
另外,,在更新發(fā)布后,,CERT/CC 漏洞分析師 Will Dormann 警告說,該補(bǔ)丁似乎只解決了 PrintNightmare 的遠(yuǎn)程代碼執(zhí)行(通過 SMB 和 RPC 的 RCE)變體,,而不是本地提權(quán)(LPE)變體,,因此允許攻擊者濫用后者以獲取易受攻擊系統(tǒng)的 SYSTEM 權(quán)限。
現(xiàn)在,,對更新補(bǔ)丁的進(jìn)一步測試表明,,針對該漏洞的利用可以完全繞過補(bǔ)救措施,從而獲得本地權(quán)限提升和遠(yuǎn)程代碼執(zhí)行,。但是,,要實(shí)現(xiàn)這一點(diǎn),必須啟用名為“Point and Print限制”的 Windows 策略(計算機(jī)配置\策略\管理模板\打印機(jī):Point and Print限制),,該策略可能用于安裝惡意打印機(jī)驅(qū)動程序,。請注意,針對 CVE-2021-34527 的 Microsoft 更新并不能有效防止對 Point and Print NoWarningNoElevationOnInstall 設(shè)置為 1 的系統(tǒng)的利用,。就微軟而言,,它在其公告中解釋說,Point and Print 與此漏洞沒有直接關(guān)系,,但該技術(shù)削弱了本地安全態(tài)勢,,從而使漏洞利用成為可能。
雖然 Microsoft 已推薦停止和禁用 Print Spooler 服務(wù)的核心選項(xiàng),,但另一種解決方法是啟用Point and Print的安全提示,,并通過配置“RestrictDriverInstallationToAdministrators”注冊表值來將打印機(jī)驅(qū)動程序安裝權(quán)限限制給管理員,以防止普通用戶在打印服務(wù)器上安裝打印機(jī)驅(qū)動程序,。
關(guān)于如何安裝這些帶外安全更新的詳細(xì)步驟,,請參閱以下鏈接的支持文檔:
Windows 10,版本21H1 (KB5004945)
Windows 10,,版本20H1 (KB5004945)
Windows 10,,版本2004 (KB5004945)
Windows 10 1909版本(KB5004946)
Windows 10,版本1809和Windows Server 2019 (KB5004947)
Windows 10,,版本1803 (KB5004949)
Windows 10,,版本1607和Windows Server 2016 (KB5004948)
Windows 10,,版本1507 (KB5004950)
Windows Server 2012 (Monthly Rollup KB5004956 / Security only KB5004960)
Windows 8.1和Windows Server 2012 R2 (Monthly Rollup KB5004954 / Security only KB5004958)
Windows 7 SP1、Windows Server 2008 R2 SP1 (Monthly Rollup KB5004953 / Security only KB5004951)
Windows Server 2008 SP2 (Monthly Rollup KB5004955 / Security only KB5004959)
除了立即在所有受支持的 Windows 客戶端和服務(wù)器操作系統(tǒng)上安裝此更新外,,你還可以選擇配置 RestrictDriverInstallationToAdministrators 注冊表設(shè)置,,以防止非管理員在打印服務(wù)器上安裝已簽名的打印機(jī)驅(qū)動程序。有關(guān)詳細(xì)信息,,請參閱 KB5005010,。
根據(jù) Mimikatz 的創(chuàng)建者 Benjamin Delpy 的說法,當(dāng)啟用Point and Print策略時,,可以繞過補(bǔ)丁來實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,。
要繞過 PrintNightmare 補(bǔ)丁并實(shí)現(xiàn) RCE 和 LPE,必須啟用名為“Point and Print限制”的 Windows 策略,,并將“為新連接安裝驅(qū)動程序時”設(shè)置配置為“在提升提示時不顯示警告”,。
Point and Print限制政策
此策略位于計算機(jī)配置 > 管理模板 > 打印機(jī) > Point and Print限制下。
啟用后,,“NoWarningNoElevationOnInstall”值將在 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint 項(xiàng)下設(shè)置為 1。
Benjamin Delpy 仍建議管理員和用戶先暫時禁用 Print Spooler 服務(wù)以保護(hù)他們的 Windows 服務(wù)器和工作站,,直到新的補(bǔ)丁發(fā)布,。0patch 還為 PrintNightmare 發(fā)布了一個免費(fèi)的微補(bǔ)丁https://www.bleepingcomputer.com/news/security/actively-exploited-printnightmare-zero-day-gets-unofficial-patch/,迄今為止已經(jīng)能夠阻止利用該漏洞的所有嘗試,。
但是,,Benjamin Delpy警告不要安裝微軟 7 月 6 日的補(bǔ)丁,因?yàn)樗粌H不能防止漏洞,,而且會修改“l(fā)ocalspl.dll”文件,,因此 0Patch 的補(bǔ)丁不再有效。
建議 Windows 用戶和管理員執(zhí)行以下操作之一:
1.在微軟發(fā)布工作補(bǔ)丁之前,,不要安裝 7 月 6 日的補(bǔ)丁,,而是安裝 0Patch 的微補(bǔ)丁。
2.使用此處的說明禁用打印后臺處理程序,。
微軟表示,,如果調(diào)查表明他們發(fā)布的補(bǔ)丁存在問題,他們將采取適當(dāng)措施保護(hù)客戶,。