駭客攻擊企業的手法不斷地翻新,本文將示範如何善用Windows 10和Windows Server 2016作業系統內的Credential Guard安全性機制,來阻擋傳遞雜湊及傳遞票證惡意攻擊,以防止儲存於主機記憶體內的使用者密碼外洩。
現在,Credential Guard安全性機制透過「虛擬式安全性」(Virtualization-Based Security,VBS)方式,將LSA中的密碼進行隔離並使用遠端程序呼叫的方式與新的運作元件溝通。隔離的LSA執行程序所儲存的資料,由虛擬式安全性機制所保護,無法由作業系統其他的部分進行存取。簡單來說,VBS提供安全核心與一般作業系統隔離的功能,所以不會暴露一般作業系統中的弱點與零時差漏洞,如圖4所示。
|
▲ 圖4 透過VBS虛擬式安全性運作機制隔離LSA的運作示意圖。(圖片來源:TechNet文件 - Protect derived domain credentials with Credential Guard) |
因此,基於安全性考量隔離的LSA執行程序,不會載入任何裝置驅動程式,只會載入安全性所需的作業系統「二進位檔案」(Binary File),並且這些二進位檔案都使用虛擬化安全性信任的憑證所簽署,這些簽章會先經過驗證程序並通過驗證後,才會保護運作環境中的檔案。
Credential Guard環境需求
在開始部署Credential Guard安全性機制之前,先來了解部署Credential Guard機制所需要的軟體、硬體及韌體等環境需求。舉例來說,在硬體的部分建議採用具備「信賴平台模組」(Trusted Platform Module,TPM)的安全性晶片。
但事實上若主機未配置或未支援TPM 2.0安全性晶片,仍然能夠啟用Credential Guard安全性機制,只是Credential Guard用來加密的安全性金鑰無法受到TPM安全性晶片保護,因此安全性防護力較弱仍有被攻擊成功的可能性。
基礎安全性保護環境需求
基礎安全性保護環境需求,可從硬體、韌體、軟體三方面來加以說明:
‧ 硬體:首先必須採用具備64位元的CPU處理器,並支援Intel VT-x/EPT或AMD-V/NPT等硬體輔助虛擬化功能,那麼Windows Hypervisor才能提供VBS虛擬化安全性機制。同時,建議配置TPM 2.0安全性晶片,以便為VBS加密金鑰提供保護及防範惡意存取BIOS等攻擊行為。
‧ 韌體:具備UEFI安全開機及韌體更新功能的UEFI 2.3.1.c或後續版本,透過UEFI安全開機以確保裝置只會使用已授權的程式碼開機,並配合韌體更新機制修補安全性弱點,以便充分防止主機遭受Bootkit和Rootkit攻擊行為。
‧ 軟體:Windows 10僅企業版、教育版支援,支援Windows Server 2016及Windows Enterprise IoT。
事實上,上述僅列出Credential Guard安全性機制的基礎環境需求而已,倘若企業和組織需要更高等級的安全性機制時,建議採用上述基礎環境需求並搭配下列進階安全性保護環境需求,即可大幅增強Credential Guard可提供的安全性等級。
進階安全性保護環境需求
若要滿足進階安全性保護環境需求,必須留意硬體與韌體:
‧ 硬體:採用支援Intel VT-D或AMD Vi IOMMU硬體輔助虛擬化功能,以便增強系統對於記憶體攻擊的抵擋及復原能力。
‧ 韌體:採用支援Secure Boot、Secure MOR、HSTI、WSMT等,確保只有經過驗證的平台BIOS系統管理員可以變更BIOS設定,並且防止進階記憶體攻擊、抵擋惡意程式碼、從系統韌體減少VBS的受攻擊面、封鎖其他針對SMM的安全性攻擊等等。
實戰Credential Guard
了解Credential Guard安全性機制的運作原理與環境需求後,接下來先展示倘若主機未啟用Credential Guard安全性機制,但是遭受傳遞雜湊及傳遞票證攻擊時將會發生什麼情況。然後,將實際演練如何啟用Credential Guard安全性機制,以及啟用後該如何確認Credential Guard安全性機制已經正確運作。
在啟用Credential Guard安全性機制的部分,可以採用GPO群組原則、修改登錄檔、Device Guard及Credential硬體準備工具等方式來進行啟用作業。
未啟用Credential Guard
先來嘗試模擬在未啟用Credential Guard安全性機制之前,當Windows 10和Windows Server 2016作業系統,遭受本文所描述的傳遞雜湊及傳遞票證攻擊時會發生什麼情況。
在本文測試環境中,採用由法國知名駭客Benjamin Delpy透過C語言所撰寫的Mimikatz工具,模擬傳遞雜湊和傳遞票證身分竊取攻擊行為。
值得注意的是,在Windows 10和Windows Server 2016作業系統運作環境中,請於下載及執行Mimikatz工具之前,將預設內建的Windows Defender防毒防駭工具關閉,如圖5所示,否則一旦下載Mimikatz工具,便會立即被Windows Defender移除。
|
▲ 圖5 關閉Windows預設內建的Windows Defender防毒防駭工具。 |
關閉內建的Windows Defender防毒防駭工具後,透過「以系統管理員身分執行」的方式開啟命令提示字元,然後執行Mimikatz工具。
首先鍵入「Privilege::Debug」指令,以便確認Mimikatz工具已正常啟動並能夠順利運作,接著鍵入「sekurlsa::msv」或「sekurlsa::logonpasswords」,便會列出在這台主機中LSA儲存於記憶體內所有登入過的使用者帳號或服務帳號的密碼資訊。
如圖6所示,順利執行Mimikatz工具後,可以看到目前的主機名稱為HV01,登入的管理者帳號Administrator以及管理者帳號的SID,在下方便直接看到管理者帳號的NTLM雜湊值,也就是本文一開始提到NT密碼雜湊採用未加密的MD4雜湊演算法。
|
▲ 圖6 透過Mimikatz工具查看主機記憶體內容中所有使用者帳號密碼資訊。 |