Active Directory 域控制器上的 DPAPI 備份密鑰
Active Directory 資料庫包含一組稱為 DPAPI 備份密鑰的物件。 這些物件包括:
- BCKUPKEY_P秘密
- BCKUPKEY_PREFERRED秘密
- BCKUPKEY_guid1
- BCKUPKEY_guid2
這些對象是架構類別 「secret」 的一部分,而且存在於網域分割區內的 “CN=System,DC=contoso,DC=com” 容器中。
一般而言,網域使用者會使用衍生自其密碼的密鑰來加密 DPAPI 保護的數據。 不過,如果使用者忘記其密碼,或從另一部裝置進行系統管理重設或重設其密碼,則無法使用衍生自使用者新密碼的新密鑰來解密先前加密的數據。
發生這種情況時,仍可使用儲存在 Active Directory 域控制器上的備份金鑰來解密數據。 然後,他們可以使用使用者新的密碼衍生密鑰重新加密。 這表示任何擁有網域 DPAPI 備份金鑰的人員,即使使用者的密碼變更後,也能解密任何網域使用者的 DPAPI 加密數據。
Active Directory 域控制器上的 DPAPI 備份密鑰只會在初始建立網域期間隨機產生一次。
由於這些密鑰的敏感性本質,因此必須保護這些密鑰的存取權,並視為整個 Active Directory 網域中最機密的資訊片段之一。 根據預設,這些金鑰的存取限制為網域系統管理員。
目前沒有正式支援在域控制器上變更或輪替這些 DPAPI 備份密鑰的方式。 根據 MS-BKRP 檔案,第三方能夠開發可建立新 DPAPI 備份金鑰的應用程式或腳本,並將新密鑰設定為網域的慣用密鑰。 不過,Microsoft不支持這些第三方解決方案。
如果網域的 DPAPI 備份密鑰遭到入侵,建議建立新的網域,並將使用者移轉至該新網域。 如果惡意執行者能夠取得 DPAPI 備份密鑰的存取權,他們很可能已取得網域系統管理員層級的網域存取權,並具有其資源的完整存取權。 攻擊者也可以在網域中安裝具有其目前存取層級的其他後門系統,因此建議移轉至新的網域。
Active Directory 系統管理最佳做法是針對此案例的防禦。 將網域存取權授與使用者時,請提供使用者所需的最低存取層級。 保護 Active Directory 備份也很重要,因為您保護域控制器本身的警惕程度也一樣高。