基于AD Event日志实时检测DSRM后门
01、简介
每个域控制器都有一个目录还原模式(DSRM)帐户,它的密码是在安装域控时设置的,实际上它对应的就是sam文件里的本地管理员“administrator”,基本很少会被重置,因此有着极强的隐蔽性。攻击者通过获取域控的DSRM密码,就可以使用帐户通过网络登录到域控服务器,从而达到权限维持的目的。
域内权限维持的方式有很多,每增加一条安全检测规则,就多一层安全保障。针对DSRM后门,基于AD Event日志能够帮助我们提供什么维度的检测,我们通过一个后门利用实例来看一下。
02、利用方式
(1)获取域内用户Hash
使用mimikatz查看域内用户test的NTLM Hash。
mimikatz # privilege::debug
mimikatz # 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::debug
mimikatz # token::elevate
mimikatz # 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::debug
mimikatz # 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
安全告警效果如下图:

本文由Bypass整理发布,转载请保留出处。
欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。
分类:
10-安全运营笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫