保護 SMB 流量免受攔截
本文將協助您了解攻擊者可能針對 SMB 通訊協定,使用攔截技術的一些方法以及如何緩解攻擊。 這些概念將支援您為 SMB 通訊協定開發自己的深度防禦策略。
什麼是攔截攻擊?
對手中間人 (AITM) 攻擊旨在修改用戶端和伺服器之間的網路通訊,從而允許威脅行為者攔截流量。 攔截後,惡意行為者可能有能力欺騙、篡改、揭露或拒絕存取您的組織資料或帳戶憑證。
許多組織依靠 SMB 在使用者之間共用檔案並支援其他應用程式或技術 (例如 Active Directory Domain Services)。 如此廣泛的採用,SMB 既是攻擊者的熱門目標,也有可能對整個企業產生影響。
例如,AITM 攻擊可能用於工業或國家級間諜活動、勒索或尋找文件中儲存的敏感安全資料。 它還可以用作更廣泛攻擊的一部分,使攻擊者能夠在網路內橫向移動或瞄準多個端點。
攻擊不斷發展,攻擊者經常結合使用現有技術和新技術。 保護您的系統免受 SMB 攔截時,有兩個主要目標:
- 減少可用的攻擊方法。
- 保護您向使用者呈現的路徑。
由於許多組織內技術和客戶的多樣性,全面的防禦將結合多種方法並遵循 Zero Trust 原則。 請參閱什麼是 Zero Trust?一文以了解更多 Zero Trust 的資訊。
現在您將了解一些典型的良好實際設定,以降低 SMB 攔截的風險。
減少可用的攻擊方法
為了保護您的系統免受 SMB 攔截攻擊,第一步應該是減少攻擊面。 攻擊面是您的系統容易受到網路威脅和損害的地方。
在以下部分中,我們將討論減少攻擊面應採取的一些基本步驟。
安裝更新
在組織允許的情況下,定期在您的 Windows Server 和用戶端系統上安裝所有可用的安全性更新,盡可能接近最新的發布版本。 安裝最新的安全性更新是保護您的系統免受當前已知安全漏洞影響最快、最簡單的方法,這些漏洞不僅影響 SMB,也影響所有 Microsoft 產品和服務。
您可以根據組織要求使用幾種不同的方法安裝安全性更新。 典型的方法有:
- Azure 更新管理
- Windows Update
- Windows Server Update Services (WSUS)
- Endpoint Configuration Manager 中的軟體更新
請考慮訂閱Microsoft Security Response Center (MSRC) Security Update Guide 中的通知。. Security Update Guide Notification System在發佈軟體更新以解決新的和現有的 Common Vulnerabilities and Exposures (CVEs) 時通知您。
移除 SMB 1.0
您應該從所有不需要的 Windows Servers 和用戶端中移除或停用 SMB 1.0 功能。 對於確實需要 SMB 1.0 的系統,您應該盡快遷移到 SMB 2.0 或更高版本。 從 Windows 10 Fall Creators Update 和 Windows Server 2019 開始,不再預設安裝 SMB 1.0。
提示
全新安裝或就地升級後,Windows 10 Home 和 Windows 10 Pro 預設仍包含 SMB 1.0 用戶端。 此行為在 Windows 11 中已經不同,您可以在下列文章中閱讀更多資訊。SMB1 現在在 Windows 11 Home Insiders 版本中預設為停用.
移除 SMB 1.0 可消除多個眾所周知的安全漏洞,從而保護您的系統。 SMB 1.0 缺乏 SMB 2.0 及更高版本中有助於防止攔截的安全功能。 例如,為了防止連線受損,SMB 3.0 或更高版本使用預先驗證完整性、加密和簽章。 請參閱 SMB 安全性強化一文以了解更多資訊。
在移除 SMB 1.0 功能之前,請確保電腦上沒有任何應用程式和進程需要它。 有關如何偵測和停用 SMB 1.0 的詳細資訊,請參閱文章如何在 Windows 中偵測、啟用和停用 SMBv1、SMBv2 和 SMBv3.
您也可以使用 Windows Admin Center 檔案和檔案共用工具來快速啟用 SMB1 用戶端連線稽核並解除安裝 SMB 1。
停用訪客身份驗證和回退
在 SMB 1.0 中,當使用者的憑證失敗時,SMB 用戶端將嘗試訪客存取。 從 Windows 10 的 1709 版本和 Windows Server 2019 開始,SMB2 和 SMB3 用戶端不再預設允許訪客帳戶存取或回退到訪客帳戶。 您應該使用 SMB 2.0 或更高版本,並在預設情況下,當任何系統未停用訪客存取功能時,停用 SMB 訪客存取。
提示
Windows 11 Home 和 Pro 版未改變先前的預設行為; 他們預設允許訪客身份驗證。
停用訪客存取後,可防止惡意行為者建立伺服器並誘騙使用者使用訪客存取來進行存取。 例如,當使用者存取欺騙共用時,他們的憑證將失敗,SMB 1.0 將回退到使用訪客存取。 停用訪客存取可阻止 SMB 工作階段的連接,從而防止使用者存取共用和任何惡意檔案。
若要防止當 Windows SMB 用戶端未預設停用訪客存取的情況下 (包括 Windows Server) 使用訪客回退:
- 開啟 [群組原則管理主控台]。
- 在控制台樹中,選擇Computer Configuration > Administrative Templates > Network > Lanman Workstation.
- 對於該設置,滑鼠右鍵點擊啟用不安全的訪客登入並選擇 Edit.
- 選取已啟用,然後選取確定。
若要深入了解訪客存取權預設行為,請閱讀文章Windows 中預設為禁用 SMB2 和 SMB3 的訪客存取權。
停用 WebDAV 通訊協定
Windows 用戶端可能不需要執行 WebClient
服務。 本服務提供 Web 分散式編寫和版本控制 (WebDAV) 通訊協定。 如果您的用戶端未使用 WebDAV 透過 HTTP 或 HTTPS 存取 SMB 共用,您可以停用該服務。
當您的使用者使用 WebDAV 存取檔案時,無法強制透過 HTTPS 建立 TLS 型連線。 例如,您的伺服器可能設定為需要 SMB 簽章或加密,但如果啟用了 WebDAV,則 Web 用戶端可以連線到 HTTP/80。 無論您如何設定 SMB,產生的任何連線都不會加密。
當您準備實作時,可以使用「群組原則喜好設定」在大量電腦上停用該服務。 有關設定「群組原則喜好設定」的詳細資訊息,請參閱設定服務項目。
限制 SMB 輸出目的地
至少封鎖傳送到網路外部裝置的 SMB 輸出流量。 封鎖 SMB 輸出可防止資料傳送到外部端點。 惡意行為者經常嘗試欺騙、篡改或網路釣魚攻擊,試圖偽裝成電子郵件或其他檔案中的友善連結或捷徑將使用者傳送到惡意端點。 欲了解有關封鎖 SMB 輸出存取的更多資訊,請閱讀 Windows Server 中的安全性 SMB 流量一文。
透過將微邊界和微分段引入您的架構中,進一步貫徹這項原則。 封鎖到外部網路的 SMB 輸出流量有助於防止資料直接滲漏到網際網路,但是現代攻擊使用先進技術透過攻擊其他系統來間接獲取存取權,然後在網路內橫向移動。 除非明確需要,微邊界和微分段旨在減少能夠直接連線到 SMB 共用的系統和使用者數量。 深入了解網路分段,其為零信任指南的一部分。
保護通訊協定
您的第二個目標是保護使用者及其資料之間的路徑,稱為傳輸中資料保護。 傳輸中的資料保護通常涉及使用加密、介面強化和移除不安全通訊協定來提高對攻擊的抵抗力。
在以下部分中,我們將討論保護 SMB 通訊協定應採取的一些基本步驟。
使用 SMB 3.1.1
Windows 總是使用最高可用的通訊協定,確保您的裝置和電腦支援 SMB 3.1.1。
SMB 3.1.1 從 Windows 10 和 Windows Server 2016 開始提供。 SMB 3.1.1 包含一項新的強制安全功能,稱為預先驗證完整性. 預先驗證完整性對 SMB 連線的早期階段進行簽署或加密,以防止透過加密雜湊來篡改 Negotiate and Session Setup 訊息。
加密雜湊意味著用戶端和伺服器可以相互信任連接和工作階段屬性。 預先驗證完整性取代了 SMB 3.0 中引入的Secure Dialect Negotiation。 您無法關閉預先驗證完整性,但如果用戶端使用較舊的方言,則不會使用它。
您可以透過強制至少使用 SMB 3.1.1 來進一步強化安全狀況。 若要將最小 SMB 方言設定為 3.1.1,請從提升的 PowerShell 提示字元執行以下命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MinSMB2Dialect" -Value 0x000000311
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "MaxSMB2Dialect" -Value 0x000000311
若要深入了解如何設定 Windows Server 和 Windows 中使用的最小和最大 SMB 方言,請參閱在 Windows 中管理 SMB 方言。
使用 UNC 強化來要求簽章、加密和相互驗證
透過至少要求相互身份驗證 (Kerberos) 和完整性 (SMB 簽章) 來為所有 SMB 共用啟用 UNC 強化。 您還應該考慮評估隱私 (SMB 加密) 而不是 SMB 簽章。 無需同時設定 SMB 簽章和加密,因為加密隱含簽章所使用的簽名。
警告
SMB 加密是透過 Windows 8 和 Windows Server 2012 中的 SMB 3 引入的。 您不應該要求加密,除非您所有的電腦都支援 SMB 3.0 或更高版本,或是具有 SMB 3 和加密支援的第三方。 如果在不支援 SMB 加密的伺服器託管的用戶端或 UNC 路徑上設定 SMB 加密,SMB 用戶端將無法存取指定的路徑。 此外,如果您將伺服器設定為 SMB 加密,但是存取該伺服器的是不支援它的用戶端,這些用戶端也是無法存取該路徑。
UNC 強化能夠檢查 UNC 路徑的強制安全性設置,如果伺服器無法滿足這些要求,則拒絕連線。 從 Windows Server 2016 和 Windows 10 開始, UNC 強化在網域控制站上的 SYSVOL 和 NETLOGON 共用預設為啟用。 它是防止欺騙和篡改的高效工具,因為用戶端可以驗證伺服器的身份並驗證 SMB 有效負載的完整性。
設定 UNC 強化時,您可以指定各種 UNC 路徑模式。 例如:
\\<Server>\<Share>
- 設定條目適用於指定伺服器上具有指定名稱的共用。\\*\<Share>
- 設定條目適用於任何伺服器上具有指定名稱的共用。\\<Server>\*
- 設定條目適用於指定伺服器上的任何共用。
當您準備好實施時,可以使用「群組原則」將 UNC 強化功能套用到大量電腦。 有關透過群組原則設定 UNC 強化的詳細資訊,請參閱安全性公告MS15-011。
透過強制簽章或加密對應所需磁碟機
除了 UNC 強化之外,您還可以在對應網路磁碟機時使用簽章或加密。
從 Windows 1709 版及更高版本開始,您可以使用 Windows PowerShell 或 Command Prompt 要求建立加密或簽章的對應磁碟機。 您可以使用NET USE
指令或 PowerShell New-SmbMapping
指令透過指定 RequireIntegrity (簽章) 或 RequirePrivacy (加密) 參數來對應磁碟機。
這些命令可由管理員使用或包含在腳本中,以自動對應需要加密或完整性檢查的磁碟機。
這些參數不會更改簽章或加密的工作方式或方言要求。 如果您嘗試對應磁碟機而伺服器拒絕滿足您的簽章或加密要求,則磁碟機對應將失敗而不是進行不安全的連線。
在 New-SmbMapping
New-SmbMapping 參考文章中了解指令的語法和參數。
超越 SMB
停止使用 NTLM 並提高 Kerberos 安全性。 您可以先啟用 NTLM 使用情況稽核,然後查看日誌以尋找 NTLM 的使用位置。
移除 NTLM 有助於保護您免受常見攻擊,例如傳遞雜湊、暴力破解或彩虹雜湊表,因為它使用較舊的 MD4/MD5 加密雜湊函數。 與 Kerberos 等最新通訊協定不同,NTLM 也無法驗證伺服器身份,因此也容易受到 NTLM 中繼攻擊。 許多常見的攻擊都可以透過 Kerberos 輕鬆緩解。
若要了解如何稽核 NTLM 作為開始過渡到 Kerberos 的一部分,請參閱評估 NTLM 使用量一文。 如需了解如何使用 Azure Sentinel 偵測不安全通訊協定,您也可以閱讀 Azure Sentinel Insecure Protocols Workbook Implementation Guide 部落格文章。
在移除 NTLM 的同時,您應該考慮為離線攻擊和票證傳遞攻擊添加更多層的保護。 強化 Kerberos 安全性時,請使用以下各項作為指引文件。
- 部署 Windows Hello for Business 或智慧卡 - Windows Hello for Business 的雙重要素驗證新增了全新的保護層。 了解 Windows Hello for Business。
- 強制使用長密碼和短句 - 我們鼓勵使用較長的密碼長度,例如 15 個字元或更多,以降低您對暴力攻擊的抵抗力。 您還應該避免使用常用單字或短語,以使您的密碼更加強大。
- 部署 Microsoft Entra Password Protection for Active Directory Domain Services - Use Microsoft Entra ID Password Protect 來阻止組織特定的已知弱密碼和術語。 要了解詳細資訊,請查看Enforce on-premises Microsoft Entra Password Protection for Active Directory Domain Services。
- 使用群組 Managed Service Accounts (gMSA) - 支援 gMSA 的服務具有 127 個隨機字元結構,使得暴力破解和字典攻擊破解密碼極為耗時。 了解什麼是 gMSA,請閱讀 Group Managed Service Accounts Overview。
- Kerberos Armoring,稱為 Flexible Authentication Secure Tunneling (FAST) - FAST 可防止 Kerberoasting,因為使用者的預先身分驗證資料受到保護,不再受到離線暴力或字典攻擊。 它還可以防止來自欺騙性 KDC 的降級攻擊,要了解更多資訊,請參閱Kerberos Armoring。
- 使用 Windows Defender Credential Guard - Credential Guard 透過防止票證授予和快取的服務票證被盜,使票證的本地洩漏更加困難。 請參閱Windows Defender Credential Guard 的工作原理一文以了解更多資訊。
- 考量使用 SCRIL: Smart Card Required for Interactive Logon - 部署 SCRIL 時,AD 會將使用者的密碼變更為隨機的 128 位元密碼,使用者無法再使用該密碼進行互動式登入。 SCRIL 通常僅適用於具有特定安全要求的環境。 了解有關無密碼策略的更多資訊,請參閱設定使用者帳戶以禁止密碼身份驗證。
下一步
現在您已經了解了一些防止 SMB 攔截的安全控制和緩解措施,您將了解沒有單一的步驟可以防止所有攔截攻擊。 目標是透過分層防禦建立跨多種技術的深思熟慮、整體且優先的風險緩解組合。
您可以在下面的文章中繼續相關概念的更多資訊。