本环境是蛇矛实验室基于"火天网演攻防演训靶场"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现工作。
背景
在公司网络或者业务网络中,便于管理和共享,越来越多的用户选择使用域来代替工作组,在功能便捷的同时,也衍生出越来越多的关于域安全的相关问题。
由于真实的域环境通常分布在多个物理地域,涉及到大量的服务器、终端,网络设备的配置,构建真实的域环境做实验难度较大,利用火天网境的NFV支持、路由协议支持和强大的虚拟化仿真能力,我们可以轻松的构建出大规模基于广域网的域环境进行攻防的效能评估以及安全问题的复现验证。
NTLM中继
攻击者充当客户端的服务器,并充当服务器的客户端。他从客户端消息中提取NTLM身份验证Blob,并将其放入服务器的修改后的消息中,反之亦然。最后,他可以根据需要使用经过身份验证的会话。
为了使这种攻击奏效,必须处于中间人的位置。攻击者可以使用传统的欺骗技术(ARP,DNS,LLMNR和Netbios等)来实现,也可以通过漏洞或滥用功能(打印机漏洞,Juicy Potato等)触发与攻击者计算机的连接来实现。
NTLM中继已在多种攻击中使用和重用过:
打印机漏洞:一种从Windows Server触发SMB连接的好方法(与无约束的委托结合起来特别方便);
PrivExchange:如何从任何用户的交换邮箱升级到域管理员;
断开MIC:如何绕过完全保护继电器;
这些攻击中继了以下协议:
SMB→SMB(打印机漏洞)
HTTP→LDAP(PrivExchange)
SMB→LDAPS(删除MIC)
SMB中继
原理:
对于SMB协议,客户端在连接服务端时,默认先使用本机的用户名和密码hash尝试登录,所以可以模拟SMB服务器从而截获其它PC的net-ntlm hash。而作为中继的机器必须要有域管理员权限或本地管理员权限,且被中继的机器要关闭smb签名认证,本文按利用子域控做中继
除了中继smb协议,还可以中继LDAP,从域内内收集更多的信息,包括用户、他们的组成员、域计算机和域策略;中继IMAP,Exchange 服务器上的 IMAP 支持 NTLM 身份验证,若Exchange启用 NTLM 身份验证,可以登录用户的邮箱。这些可以用来进一步的扩大危害。
中继即让客户端连接到攻击者模拟的SMB,其实最关键的是先拿到net-ntlm hash,若是域管的hash,就可以拿到域内的任意主机权限。NTLM 身份验证被封装在其他协议中,但是无论覆盖的协议是什么,消息都是相同的,比如SMB、HTTP(S)、LDAP、IMAP、SMTP、POP3 和 MSSQL,就是说NTLM 支持多种协议。HTTP 进行身份验证的客户端会在“ Authorization”标头中发送 NTLM 身份验证消息。
本文我们将讨论2种攻击。
1.获取NTLMv2哈希值,并使用破解工具破解。
2.使用Responder和Multirelay.py脚本,脚本负责执行NTMLMv2哈希值中继到“已禁用SMB签名”的机器上。如果中继成功,就可以访问目标机器。
方法1
环境
关闭SMB签名认证的子域控(服务端):http://DC2.sh.rangenet.cn(192.168.10.3)
子域控下的主机(客户端):DC3. http://sh.rangenet.cn(192.168.10.4)
攻击机kail(88.88.88.100)
下载链接:https://github.com/lgandx/Responder
域控需配置
运行 gpedit.msc
依次点击计算机配置>Windows设置>安全设置>本地策略>安全选项
Responder开启WPAD(自动发现协议,利用DNS 查找一个名为 WPAD 的主机名,如果不能通过上面描述的 LLMNR)后,当目标浏览网站时强制使用NTLM hash认证,而且主机重启时也能抓到NTLM hash。
加-F参数即可开启WPAD抓取 hash,此时用户浏览网站Net-NTLM hash就被获取。
python Responder.py -I eth0 -v -F
访问攻击机,输入子域的域管理员账号密码
Kail成功获取net-NTLM hash
如果网络中的任何用户试图访问共享哪个机器没有IP或用户类型共享名称不正确,该机器将触发LLMNR请求到网络,Responder将通过说我是哪台机器来回答该请求,请提供给我NTLMv2哈希并访问资源
这里,用户“administrator”(机器IP 192.168.10.4)正在尝试访问88.88.88.100的共享分区。
当机器触发LLMNR请求时,Responder响应该请求并捕获用户“administrator”的NTLMv2哈希值
在获得明文密码后,我们可以登录到Windows域上的其他计算机,来确定我们是否可以在其他计算机访问任何敏感信息。
DCSYNC中继
原理:
在域环境中,不同域控制器(DC)之间,每 15 分钟都会有一次域数据的同步。当一个域控制器(DC 1)想从其他域控制器(DC 2)获取数据时,DC 1 会向 DC 2 发起一个 GetNCChanges 请求,该请求的数据包括需要同步的数据。如果需要同步的数据比较多,则会重复上述过程。DCSync 就是利用的这个原理,通过 Directory Replication Service(DRS) 服务的 GetNCChanges 接口向域控发起数据同步请求。
DCSync 是域渗透中经常会用到的技术,其被整合在了 Mimikatz 中。在 DCSync 功能出现之前,要想获得域用户的哈希,需要登录域控制器,在域控制器上执行代码才能获得域用户的哈希。
2015 年 8 月,Benjamin Delpy(神器 Mimikatz 的作者)和 Vincent Le Toux 发布了新版本的 Mimikatz,新增加了 DCSync 功能。该功能可以模仿一个域控制器,从真实的域控制器中请求数据,例如用户的哈希。该功能最大的特点就是不用登陆域控制器,即可远程通过域数据同步复制的方式获得域控制器上的的数据。
注意:DCSync 攻击的对象如果是只读域控制器 (RODC),则会失效,因为 RODC 是不能参与复制同步数据到其他 DC 的。
在默认情况下,只有 Administrators、Domain Controllers 和 Enterprise Domain Admins 组内的用户有权限使用 DCSync,但我们可以对域内普通用户添加 ACL (Access Control List) 实现普通用户也能调用 DCSync 功能。
利用条件:
获得以下任一用户的权限:
Administrators组内的用户
Domain Admins组内的用户
Enterprise Admins组内的用户
域控制器的计算机帐户
利用 DCSync 导出域内哈希
当我们获取相应的权限后,可以利用 DCSync 功能导出域内用户的哈希值。其原理就是利用 DRS (Directory Replication Service)协议通过 IDL_DRSGetNCChanges 从域控制器复制用户哈希凭据。获得了域内用户的哈希后可以进一步利用。
子域下的主机 192.168.10.4
通过 Mimikatz
导出域内所有用户hash
mimikatz.exe privilege::debug "lsadump::dcsync /domain:http://sh.rangenet.cn/all /csv" exit
导出指定用户Hash
mimikatz.exe privilege::debug "lsadump::dcsync /domain:http://sh.rangenet.cn/user:administrator /csv" exit
利用DCSync权限维持
利用DCSync对普通用户添加ACE,用于修改ACL(Access Conotrol list),让普通用户也有获取到域管理员密码hash的权限
登录http://DC2.sh.rangenet.cn的普通用户sh
没有权限查看域管理员密码hash
添加ACE
powershell Add-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity test1 -Rights DCSync -Verbose
使用域管理员账号密码打开powershell
使用sh成功获取域管理员密码hash
直接打开mimikatz,不要点击管理员身份打开
删除ACE
powershell Remove-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity test1 -Rights DCSync -Verbose
使用域管理员账号密码打开powershell
至此,sh域内普通用户,以获得获取域管理员Adiministrator的密码hash的权限
丈八网安蛇矛实验室成立于2020年,致力于安全研究、攻防解决方案以及靶场仿真复现等相关方向。团队核心成员均由从事安全行业10余年经验的安全专家组成,团队目前成员涉及红蓝对抗、渗透测试、逆向破解、病毒分析、工控安全以及免杀等相关领域。