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如若轉載,請註明原文地址