NTLM中LDAP&RDP Relay漏洞分析

过去几个月,Preempt研究团队发现并报告了两个微软的NT LAN Manager(NTLM)漏洞。这些漏洞有同一个问题,即NTLM没有正确处理两种不同的协议。这些问题非常重要,因为即使开启了LDAP服务器签名和RDP限制管理模式,它们也能允许攻击者创建新的域名管理员账户。
两个漏洞的描述视频如下:
NTLM是微软安全协议的一个套件,可提供认证、完整性和机密性。NTLM relay被广大黑客熟知。如果你邀请一个渗透测试组来进行安全审计,他们可能会使用NTLM relay攻击攻陷你的网络。
下图是如何完成NTLM relay的简要示意图:

简言之,在NTLM中,当一个用户希望连接一个服务器时,服务器发起challenge,用户使用他们的密码哈希加密challenge。攻击者创建一个并行会话连接服务器,他希望成功创建NTLM认证。使用成功的NTLM认证,攻击者能立刻打开一个SMB会话,并使用恶意软件感染目标系统。
0x01 NTLM凭据relay可以使用两种方式阻止
1. SMB签名:是一种服务器与客户端协商以使用继承的会话密钥对所有传入的数据包进行数字签名的配置。这样的话,即使NTLM会话还是可能被relay,服务器也不会被利用,因为攻击者缺少会话密钥。除了SMB,DCE/RPC通信也是用这种技术保护。此刻,在Active Directory网络中应该注意到它,只有域名控制器默认开启SMB签名,其他的所有服务器或工作组默认不受保护。
2. 认证增强保护(EPA):是认证过程的一种机制,客户端申请使用继承的会话密钥对TLS会话的一个元素进行数字签名。EPA在其他协议中和HTTP一起使用。这种方式有几个值得注意的地方。首先,它需要协议支持TLS。其次,EPA不能统一配置。这意味着,每个服务器或应用程序管理员不得不手动开启它(默认是关闭的)来阻止凭据转发。
0x02 漏洞1:LDAP Relay(CVE-2017-8563)
我们报告的第一个漏洞是LDAP不受NTLM relay保护。
LDAP协议用于Active Directory中查询和更新所有的域名对象(用户、组、终端等)。在组策略中有个特殊的配置(域名控制器:LDAP服务器签名需要)。当这个组策略设置为“需要签名”,域名控制器拒绝没有使用继承的会话密钥数字签名的LDAP会话,或者通过TLS(LDAPS)加密整个会话。
这里的漏洞是,LDAP签名能阻止中间人攻击和凭据转发;LDAPS能阻止中间人攻击,但是不能阻止凭据转发。这使得具有SYSTEM权限的攻击者能使用任意的传入NTLM会话,并代表NTLM用户执行LDAP操作。为了实现这个方式,我们需要知道所有的Windows协议使用Windows认证API(SSPI),可以将认证会话降级到NTLM。
结果,每个连接到受感染的机器(SMB,WMI,SQL,HTTP)都将导致攻击者创建域管理员账户并完全控制被攻击的网络。
0x03 漏洞2:RDP relay
第二个问题是与RDP受限管理员有关。RDP受限管理允许用户不需要远程计算机的密码就能连接到远程计算机上。
RDP受限管理过去很受欢迎,因为它使得攻击者使用pass-the-hash连接到远程计算机。但是,过去没人公开对失陷的终端执行RDP。Preempt发现了RDP受限管理,其有时被误认为是Kerberosed RDP,能允许在认证协商中降级为NTLM。这意味着你可以使用NTLM执行的每次攻击,如凭据中转和破解密码。
因为RDP受限模式作为具有权限提升的技术支持人员远程访问计算机的方式,这使得他们的凭据处于风险状态。而且组合第一个LDAP relay问题,这意味着每次使用RDP受限管理的连接,攻击者能够创建一个恶意的域管理员。
0x04 微软响应中心回复
微软承认了两个问题。对于第一个CVE编号为CVE-2017-8563,补丁已经发布。对于第二个,微软宣称是已知问题并且建议安全配置网络。
时间点:
2017-04-02:Preempt联系MSRC报告漏洞
2017-04-06:MSRC承认报告
2017-05-09:MSRC确认LDAP问题,认为RDP可通过配置修复
2017-07-11:微软在7月补丁修复了CVE-2017-8563
0x05 如何自我保护
NTLM是非常危险的,可以用于凭据转发和密码破解。如果你可以,你应该避免在你的网络使用它,那么你将很安全。
为了安全,我建议按下面步骤采取措施(1-2是必须的,3-5强烈建议):
1. 在你所有的域名控制器上安装CVE-2017-8563的补丁。如果你有自动软件更新,可能已经更新过了,但是需要重启计算机才能生效。
2. 在组策略中开启“需要LDAP签名”。默认是关闭的,很像SMB签名,如果配置不当,将不受保护。
3. 根据指导,通过SSL/TLS进行LDAP认证
4. 监控你网络中的NTLM流量,确保检查任何异常
5. 不要给你的帮助人员域名管理员权限,因为他们登陆到多个工作组,他们的凭据不安全(如果需要,给他们两个账户,一个是远程协助,另一个具有域名管理员权限)。对于这个,我推荐你看下微软Pass-the-Hash指导。
6. 可以通过视频了解Preempt如何帮助企业级用户的。