摘要
某些信賴平台模組 (TPM) 晶片組存在安全性弱點。 弱點削弱了金鑰強度。 ADV170012。
若要深入了解弱點,請前往其他相關資訊
概觀
以下章節將幫助您識別並修補受 Microsoft 資訊安全諮詢 ADV170012 中描述的弱點影響的 Active Directory (AD) 網域和網域控制站中的問題。
該安全防護過程重點強調以下 Active Directory 公共金鑰方案:
-
加入網域的電腦認證金鑰
如需有關撤銷及發佈新 KDC 憑證的資訊,請參閱 Active Directory 憑證基於服務方案的安全防護計劃。
確定加入網域電腦認證金鑰風險的工作流程
您有 Windows Server 2016(或更高版本)網域控制站嗎?
為 Windows Server 2016 網域控制站 引入了認證金鑰。 使用認證金鑰進行身份驗證時,網域控制站新增了著名的 SID KEY_TRUST_IDENTITY (S-1-18-4)。 早期的網域控制站不支援認證金鑰,因此 AD 不支援認證金鑰物件,並且下層網域控制站無法透過使用認證金鑰驗證主體。
以前,altSecurityIdentities(通常稱為 altSecID)屬性可以用於提供類似的行為。 佈建 altSsecID 本身不受 Windows 支援。 因此,您需要提供此行為的第三方解決方案。 如果佈建的金鑰易受攻擊,則相應的 altSsecID 必須在 AD 中進行更新。
是否有任何網域 Windows Server 2016(或更高版本) DFL?
Windows Server 2016 網域控制站支援公開金鑰加密用於 Kerberos (PKINIT) Freshness 延伸模組 [RFC 8070] 中的初始驗證,儘管不是預設情況。 在 Windows Server 2016 DFL 或之後網域中的網域控制站上啟用了支援 PKInit Freshness 延伸模組時,成功使用延伸模組時,網域控制站會新增著名的 SID FRESH_PUBLIC_KEY_IDENTITY (S-1-18-3)。 如需更多資訊,請參閱 RFC 8070 PKInit Freshness 延伸模組的 Kerberos 用戶端和 KDC 支援。
修補電腦
維修具有 2017 年 10 月安全性更新的 Windows 10 電腦將會刪除現有的 TPM 認證金鑰。 Windows 將僅佈建 Credential Guard 保護的金鑰,以確保加入網域的裝置金鑰的 Pass-the-Ticket 保護。 由於很多客戶在其電腦加入網域後良好地新增了 Credential Guard,此變更能確保啟用了 Credential Guard 的裝置能夠確保任何使用認證金鑰發佈的 TGT 能夠受 Credential Guard 保護。
臨時網域保護
在 Microsoft 發佈網域控制站維修修正並且您已推出它之前,攻擊者可以使用 AD 中的不良認證金鑰作為加入網域的裝置進行驗證。 嚴重性級別取決於目標裝置。 例如,相比于一些其他類型的電腦帳戶,您可能決定優先保護您的網域控制站電腦帳戶。
您可以透過在 Active Directory 中的電腦物件上設定不可用的認證金鑰來保護電腦帳戶免受該弱點的攻擊。 這會導致電腦透過使用認證金鑰進行驗證失敗。 然後,電腦會使用密碼驗證而不是認證金鑰。
注意:請確保未設定群組原則透過使用憑證強制進行裝置驗證。 如需更多資訊,請參閱加入網域裝置的公開金鑰驗證中的「將裝置設定為僅使用公開金鑰」。
首先, 下載 Active Directory 電腦認證金鑰的 Windows PowerShell 模組。
然後,使用以下範例禁用 Active Directory 中您的電腦帳戶上的電腦認證金鑰
範例: 禁用單個電腦帳戶上的認證金鑰
在該範例中,我們在 Active Directory 中的單個電腦物件上設定不可用的認證金鑰:
Import-Module .\ADComputerKeys.psm1;
Set-DRComputerKey -SamAccountName "MyComputer$" -Domain "contoso.com" -ReplaceWithUnusableKey;
範例: 禁用多個電腦帳戶上的認證金鑰
在該範例中,我們在 Active Directory 中的多個電腦物件上設定不可用的認證金鑰: 爲了執行該動作,我們將該模組與 ActiveDirectory PowerShell 模組相結合。
例如,把虛構運輸部門組織單位中的所有電腦作為目標。
Import-Module .\ADComputerKeys.psm1;
Import-Module ActiveDirectory;
$computers = Get-ADComputer -SearchBase "OU=Shipping Department,DC=contoso,DC=com" -LDAPFilter "(CN=*)" -Server "contoso.com";
foreach($comp in $computers)
{
Set-DRComputerKey -SamAccountName $comp.SamAccountName -Domain "contoso.com" -ReplaceWithUnusableKey;
}
刪除臨時網域保護
對 DC 進行維修後,您可以從 Active Directory 中的所有電腦物件中刪除不可用的金鑰。 執行此動作將允許電腦帳戶生成新的認證金鑰,可以使用它們代替密碼驗證。
首先, 下載 Active Directory 電腦認證金鑰的 Windows PowerShell 模組。
下一步,按照該範例以從電腦物件中刪除認證金鑰:
範例: 從多個電腦帳戶中刪除認證金鑰
在該範例中,我們從 Active Directory 中的多個電腦物件中刪除認證金鑰: 爲了執行該動作,我們將該模組與 ActiveDirectory PowerShell 模組相結合。
例如,把虛構運輸部門組織單位中的所有電腦作為目標。
Import-Module .\ADComputerKeys.psm1;
Import-Module ActiveDirectory;
$computers = Get-ADComputer -SearchBase "OU=Shipping Department,DC=contoso,DC=com" -LDAPFilter "(CN=*)" -Server "contoso.com";
foreach($comp in $computers)
{
Set-DRComputerKey -SamAccountName $comp.SamAccountName -Domain "contoso.com" -RemoveKey
}