Windows Server服務中的身份驗證漏洞的安全風險

語言: CN / TW / HK

Akamai研究人員Ben Barnea在Windows Server服務中發現了一個重要的漏洞,鑑於此漏洞影響較大,建議客戶儘快做好自查及防護。該漏洞被分配為CVE-2022-30216,風險評分為8.8。Windows Server服務在處理特製請求時存在漏洞,經過身份認證的遠端攻擊者可利用此漏洞在目標系統上執行程式碼。

該漏洞利用了Server服務實現的安全回撥過程中的一個單位元組緩衝區溢位漏洞(off-by-one)。單位元組緩衝區溢位,其中最常見的是邊界驗證不嚴,通常包括迴圈次數錯誤和字串操作不合適而造成的。

我們確認該漏洞存在於未修復的Windows 11和Windows Server 2022計算機中。

當該漏洞與針對Active Directory證書服務(AD CS)的新技術區域網管理器(NTLM)中繼攻擊結合使用時,具有域憑據的攻擊者就能夠在域控制器上遠端執行程式碼。

我們還相信,攻擊者可能會使用這種技術來修改伺服器的證書對映,從而執行伺服器欺騙。

該漏洞已向微軟披露,並在7月進行了修復。

Windows 10 Version 21H2 for x64-based Systems
Windows 10 Version 21H2 for ARM64-based Systems
Windows 10 Version 21H2 for 32-bit Systems
Windows 11 for ARM64-based Systems
Windows 11 for x64-based Systems
Windows Server, version 20H2 (Server Core Installation)
Windows 10 Version 20H2 for ARM64-based Systems
Windows 10 Version 20H2 for 32-bit Systems
Windows 10 Version 20H2 for x64-based Systems
Windows Server 2022 (Server Core installation)
Windows Server 2022
Windows 10 Version 21H1 for 32-bit Systems
Windows 10 Version 21H1 for ARM64-based Systems
Windows 10 Version 21H1 for x64-based Systems

漏洞介紹

最近幾個月,研究人員對微軟的遠端過程呼叫(MS-RPC)進行了深入的研究。簡而言之,RPC 用於高效的程序間通訊。它依賴於標準的客戶端伺服器模型,它是當今 Windows 中使用最廣泛的協議之一。

研究人員在MS-RPC設計中發現的一個更有趣的方面是安全回撥,它的作用是限制對RPC伺服器的訪問,本質上為不需要的(通常是遠端的)使用者提供安全性。許多 RPC 伺服器實現了安全回撥,每個伺服器都有自己的邏輯和注意事項。

Windows服務廣泛使用RPC使其功能對客戶端可用。這促使研究人員研究不同的服務及其安全回撥實現的底層邏輯。果然,他們找到一個安全漏洞,該漏洞可能允許攻擊者執行伺服器欺騙或觸發對受害者的身份驗證。

Server 服務(也稱為 LanmanServer)是負責管理 SMB 共享的 Windows 服務。共享是可以通過公共網路檔案系統伺服器在網路上訪問的資源,比如檔案、印表機和目錄樹。從本質上講,網路共享允許使用者利用網路上的其他裝置來執行各種日常任務。

Server服務允許遠端計算機通過命名管道(\\pipe\srvsvc)上的RPC建立、配置、查詢和刪除共享。為了介紹方便,我們將把該服務稱為srvsvc。

srvsvc中的漏洞會造成很大影響,因為該服務提供核心功能,且預設情況下會在每臺Windows計算機上執行。

SMB over QUIC

SMB over QUIC 由 TLS 1.3 使用埠 443 (HTTPS) 而不是埠 445 (SMB) 建立隧道,並且所有 SMB 流量都包含在隧道內,這意味著沒有任何流量暴露在網路中。由於這些功能,SMB over QUIC 是具有更高安全要求的移動使用者或組織的可靠選擇。

從 Windows 10 20H2 開始,微軟推出了一項新功能——SMB over QUIC。該功能允許通過新的傳輸層網路協議 QUIC 訪問 SMB 共享。QUIC 的目的是提供更可靠、更安全的連線,同時克服常見的網際網路問題,例如延遲和資料包丟失。

在QUIC網路互動中,作為一種附加的安全措施,客戶端通過檢查伺服器提供的證書來驗證伺服器的身份。通過在 QUIC 上新增 SMB,伺服器服務開始負責管理這些證書。

研究人員就是在這個功能中發現漏洞的,要理解它,我們首先需要探索RPC伺服器執行訪問控制的方法。

安全回撥

許多 Windows 服務(其中包括 srvsvc)實現了一個 RPC 伺服器,以允許程序間通訊併為不同的客戶端提供對其功能的訪問。Windows 中的 RPC 利用了各種安全機制,本文將專注一個叫做安全回撥的方法。

安全回撥的目標是限制對RPC介面的訪問。回撥是由RPC伺服器開發人員實現的,它允許每個開發人員應用自己的邏輯來允許訪問特定的使用者或阻止訪問特定的功能。在RPC中,由伺服器公開的函式使用opnums(操作號)表示,我們將在 srvsvc 的安全回撥中很快看到。

安全回撥的變化

要了解這個漏洞,我們首先需要檢視在SMB over QUIC功能新增之前srvsvc的安全回撥:

srvsvc安全回撥——Windows 10 19H2

如上所示,srvsvc的安全回撥邏輯如下:

如果遠端客戶端試圖訪問64-69範圍內的函式——拒絕訪問;

如果遠端客戶端(非叢集帳戶)試圖訪問一個58-63範圍內的函式——拒絕訪問;

因此,從本質上講,遠端客戶端被阻止訪問介面的這些特定功能。此範圍檢查提示受限制的函式是敏感的,應該只由預期的(本地)程序呼叫。

隨著SMB over QUIC的增加,Windows 10 20H2為srvsvc服務增加了四個新功能:

LocalrServerCertificateMappingGet
LocalrServerCertificateMappingSet
LocalrServerCertificateMappingEnum
LocalrServerCertificateMappingRemove

因為遠端訪問這些函式是不可取的,所以它們被新增到本地函式範圍中——srvsvc的安全回撥禁止遠端客戶端使用這些函式。

而且,如下所示,範圍確實被更改為包括這四個新函式的 opnum,將第一個本地範圍從 64-69 增加到 64-73,並將安全回撥的訪問控制擴充套件到這些函式。到目前為止,一切順利。

srvsvc安全回撥——Windows 10 20H2

在Windows 11和Windows Server 2022中,微軟增加了一個名為LocalrServerCertificateMappingModify的新函式:

但是,這一次,在這個新版本中,受限制函式的範圍並沒有改變,而是包含了新新增的函式:

srvsvc安全回撥——Wind ows 11/Server 2022

因此,在新增此函式時,它沒有被安全回撥所覆蓋,因此遠端RPC客戶端可以訪問它。

被利用的可能

通過呼叫此函式,攻擊者可以更改伺服器上的證書對映配置。證書對映是伺服器的 QUIC 證書和證書儲存中的證書之間的“符號連結”。我們相信攻擊者可能會使用這個函式來新增他們自己的證書對映,從而執行伺服器欺騙。請注意,此函式不會在 Windows 證書儲存中新增或修改證書,而是將 QUIC 伺服器使用的證書對映到 Windows 儲存中的證書。

在嘗試評估漏洞的影響時,我們注意到函式接收的結構包含證書的儲存位置:

通過提供UNC路徑作為storeLocation變數,攻擊者可以使LocalrServerCertificateMappingModify觸發受害者伺服器向他們控制的計算機發出RPC請求。觸發請求的函式流如下:

LocalrServerCertificateMappingModify → SsValidCertandUpdateCertinfo → CertOpenStore → _CertDllOpenSystemStoreProvW → EnumPhysicalStore → FormatSystemRegPath → RegConnectRegistryExW → BaseBindToMachine → Rpc_OpenPredefHandle → NdrClientCall3

在伺服器傳送到我們計算機的RPC請求期間,伺服器對攻擊者的伺服器執行身份驗證。攻擊者現在可以利用受害者的憑證來執行NTLM中繼攻擊。

利用該漏洞並執行 NTLM 中繼流,研究人員成功複製了 PetitPotam 攻擊場景,即濫用 AD CS 並接管域控制器。

觸發漏洞需要攻擊者能夠訪問域中的計算機。對於NTLM中繼場景,需要增加AD的CS角色,以及AD的一個容易被NTLM中繼的服務(證書頒發機構 Web 註冊、證書註冊 Web 服務)。

漏洞修復

微軟週二在7月的補丁中釋出了針對該漏洞的補丁。目前這個漏洞已經被修復了:

1.糾正安全回撥中的本地函式範圍,從而防止對LocalrServerCertificateMappingModify的遠端訪問;

2.在每個新增的本地函式中增加一個訪問檢查;

緩解和檢測

以下是緩解NTLM中繼的建議:

通常,濫用AD CS的NTLM中繼攻擊將涉及TGT請求。事件日誌(EventID 4768)將包括請求計算機的IP地址。如果從不是域控制器本身的計算機為域控制器請求TGT,則可以檢測到惡意TGT請求。

總結

當新增新功能時,注意它們帶來的潛在後果是很重要的。不僅在功能本身,而且在使用者訪問它的方式上。在我們的案例中,SMB over QUIC 被新增到 Windows 中,併為伺服器服務引入了新功能。但是,該漏洞不在於通過 QUIC 實現 SMB,而在於舊功能限制對相應 RPC 介面的訪問方式。

本文翻譯自:http://www.akamai.com/blog/security/authentication-coercion-windows-server-service如若轉載,請註明原文地址