作者:n1nty @ 360 A-TEAM
公眾號:https://mp.weixin.qq.com/s/hACLQ4UgdFXDdlB4CKKhXg
近期,因各種相關的漏洞與攻擊方案,大家又開始關注了 Credential Relay 這種攻擊手法。 在我有限的認知內,我沒看到過有人詳細地講解過微軟為這種攻擊手法而推出的防禦機制,所以我整理了一下以前看過的資料,希望這是第一篇(當然講的比較淺且這其中還有不少我沒解決的問題甚至錯誤,歡迎交流)。
為什麼寫的是 “Credential Relay” 而不是 “NTLM-Relay”,因為 NTLM 只是Windows 下身份認證的其中一種方法。
Credential Relay
大體可以分為兩類:
-
Credential Forwarding
這裡用一張圖來解釋一下 Signing 機制防止 Credential Relay 的方法:
EPA 機制主要引入了以下兩個方案用於防止 Credential Relay
- Channel Binding
- Service Binding
在網絡中傳輸的身份認證數據有的時候也被稱為 authentication token。比如 NTLM 的三條消息以及 Kerberos 發送的 AS-REQ/AS-REQ 之類的都可以被稱為 authentication token。
Channel binding 與 Service binding 這兩個方案就是在原有的 authentication token 中加入一些其他的額外信息,這些額外的信息使得 Server 端可以免受 Credential Relay 的攻擊。
Channel Binding
Channel Binding 方案會在原有 Windows SSPI 生成的 authentication token 中加入一段額外信息,這段額外的信息被稱為 Channel Binding Token(CBT)。
Channel Binding 方案只能用於保護那些只接受 TLS 連接的 Server 端。即,它可以使 Server 端有能力知道其接收到的憑據到底是不是發給自己的(也就是有能力知道收到的憑據是不是被 Relay 過來的)。如果發現憑據不是發給自己的(也就是憑據是被 Relay 過來的),則拒收,則 Attacker 嘗試與 Server 進行身份認證的請求將會失敗。
用一張圖演示一下 Channel Binding 防禦 Credential Relay 的原理:
除了上述的一些相對通用的 Credential Relay 防禦方案以外,微軟還為一些與 Relay 相關的 CVE 單獨做了一些修補,我花了不少時間在網上進行搜索最後得出一個結論:
目前沒人明確知道這些針對 CVE 的修補方案是怎麼做的。
转载请注明:IAMCOOL » 紅隊與理論:Credential Relay 與 EPA