Kerberos認證與攻擊學習總結


0、背景



聆聽了n1nty大佬(90后黑客代表)的諄諄指導,學習了n1nty大佬的基本操作,決定總結一下,做一個簡要的讀書筆記,也把之前自己記錄的關於Windows的安全的一些博客能夠串聯起來。所以首先鳴謝:90后黑客代表n1nty大佬。

1、Kerberos的基本認證



1.1、NTLM的挑戰認證


不啰嗦,直接說要點,server接到client的請求認證后,會回復16字節隨機數據,也就是挑戰。client使用自己生成的賬號的NTLM的hash值對挑戰數據進行某種加密運算,發送到server,server對這一數據進行驗證,計算方法相同,比對一直即通過,否則不通過。這一段可以查閱之前博客Windows NTLM Hash和Hash傳遞、Key傳遞攻擊

1.2、Kerberos驗證


不啰嗦具體細節可以參考之前的博客Kerberos認證協議分析,這里有分三個步驟

1.2.1、第一步AS驗證


核心是:賬號口令的hash值加密時間戳(timestamp),記憶賬號身份信息給AS服務器(KDC的一部分,KDC是DC的一部分,DC是域控,對應的數據庫是AD),AS服務器解密時間戳,核對在五分鍾以內,且不是重放,則返回TGT和Session-Key。在Wireshark中,Session-KEY是外側的enc-part數據,Session-Key由password的hash值加密后,生成新的enc-part數據,存在TGT里面。

1.2.1.1、域內用戶枚舉攻擊:


一張圖解決問題,發送AS-REQ,根據AS-REP來判斷問題:

1.2.1.2、TGT Session Key離線爆破


一段話解決問題:session-key經過hash加密成為tgt的一部分,拿到tgt后可以嘗試離線暴力破解hash的明文,與NTLM的爆破原理一致,明文字典經過hash計算形成hash值,然后嘗試加密session-key與tgt的session-key對應,一致,則爆破成功。

1.2.1.3、PtK(Pass the Key)攻擊


在AS-REQ中時間戳經過NT hash或者賬號的AES128(AES256)的加密,形成加密數據,你可以通過如下方式獲取:

server端會依照解密,驗證時間戳。獲取Key之后可以傳遞這個Key,獲取TGT。

1.2.2、第二步TGS驗證

核心是:client給server發送使用使用krbtgt的口令hash加密的TGT和加密的session-key,server端使用krbtgt的口令hash值解密TGT獲取加密的session-key與外部加密的session-key進行比較,一致,就返回訪問服務使用的普通ticket和新的session-key,否則驗證失敗。

1.2.2.1、Golden Ticket

使用方法和原理請參見之前博客黃金票據(Golden Ticket)的原理與實踐,總結一句話:TGT的偽造很簡單,只需要sid,session-key加密所需要的key(NT-hash、AES256KEY、AES128KEY)即可,域名、username即可。session-key的原始值是隨機值,可以任意偽造,加密后兩個加密的session-key一致即可通過。

1.2.3、第三步AP驗證


原理與TGS相同,驗證普通ticket中的session-key與新的session-key是否一致。

1.2.3.1、Sliver Ticket


與Golden Ticket的原理一致,不同的是加密的是service ticket(普通ticket),使用的服務啟動賬號的口令hash值而不是krbtgt的賬號的口令的hash值,所以只能訪問該賬號啟動的服務,而不是全域服務。

2、委派


2.1.1 無限制委派


緩存各個賬戶的TGT進行代理驗證,危險。

2.2.2 受限制委派


涉及S4U2Self和S4U2Proxy協議,暫不贅述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM