圖片來源:https://learn.microsoft.com/en-us/windows/security/identity-protection/credential-guard/how-it-works
先前提到 VBS (Virtualization-based Security) ,今天就要提到延伸的一個安全機制,這機制就是 Credential Guard (現在全名叫做 Microsoft Defender Credential Guard,又 rename 了,可能這字數有請算命先生算過比較好吧?)
他的安全機制就如我們先前所講,他將使用者平常使用的 Process 和重要 Credential 存放在獨立的 VM 中,普通使用者使用的作業系統只能透過 lsass.exe 與安全系統中的 lsaiso.exe 做互動,所有驗證都是透過這樣的互動流程。
以往透過 Memory 做 LSASS credential dumping 這種攻擊,現在因為駭客要獲得的那些重要登入資訊都存放在 LSAISO.exe 裡面所以駭客無法竊取到裡面的 Hash ,以前可以透過這樣的方式竊取到 NTLM Hash or Kerberos Ticket 做 PassTheHash or PassTheTicket。
但這樣的模式下就無法做到這件事了。
Credential Guard 如果是企業使用時需要注意一些點:
以下連線會受影響:MS-CHAP(僅阻止 SSO, 通常 wifi, vpn 會用到此連線方式) , WDigest(僅阻止 SSO),NTLM v1(僅阻止 SSO)
Kerberos 不支援 unconstrained delegation or DES encryption 這兩種較不安全的使用方式,會直接不支援。
某些第三方安全支援提供者(SSP 和 AP)可能與 Credential Guard 不相容,因為它不允許第三方 SSP 向 LSA 請求密碼雜湊值。
透過這樣的方式傳統的 PtH 已經無法攻擊成功了,但是還是有一些攻擊可能性的,像是 Credential Guard 只保護 Hash & Kerberos (TGT) ,如果是 Service Ticket 是沒有保護的,仍然可以竊取到,但對於駭客還說只是一種可例用,沒有以前那麼好用了。
如果說還有什麼攻擊方式,我強烈推薦閱讀 Oliver Lyar 所寫的部落格,我稍微整理了他所提到的攻擊方式:
1. PtCv1 攻擊方式
透過 LSAIso 方法 NtlmIumCalculateNtResponse,可根據伺服器發出的隨機挑戰,計算出 NTLMv1 Response。
利用從記憶體 Dump 中提取的 “Context Handle”、“Proxy Info” 和 “Encrypted blob”,能產生 NTLMv1 Response 這樣就能離線破解出 Hash。
2. PtCv2 攻擊方式
若 NTLMv1 不可用,則可使用 LSAIso 方法 NtlmIumLm20GetNtlm3ChallengeResponse 計算 NTLMv2 回應。
雖然無法直接取得 NTLM Hash,但你可以透過計算出來的 NTLMv2 Hash,去申請 ADCS 憑證並進行 U2U (User-to-User) 攻擊獲得 Hash。