漏洞背景
2019年6月11日,微软发布6月份安全补丁更新。在该安全补丁更新中,对 CVE-2019-1040 漏洞进行了修复。该漏洞存在于Windwos
大部分版本中,当中间人攻击者能够成功绕过NTLM 消息完整性校验(MIC)时,Windows 存在可能可篡改的漏洞。成功利用此漏洞的攻击者可以获得降级
NTLM 安全功能的能力。要利用此漏洞,攻击者需要篡改NTLM 交换,然后修改NTLM
数据包的标志,而不会使签名无效。结合其他漏洞和机制,在某些场景下,攻击者可以在仅有一个普通账户域账户的情况下接管全域。
漏洞原理
该漏洞关键之处在于安全研究员能绕过NTLM消息完整性的校验,那么安全研究员是如何实现的呢?
由于Windwos 服务器允许无消息完整性校验的NTLM Authenticate 消息,因此该漏洞绕过消息完整性校验的思路是取消数据包中的 MIC
标志,操作如下:* 从NTLM Authenticate消息中删除MIC字段和Version字段,如图所示:
* 将 Negotiate Version 标志位设置为Not set,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n1KmQX1z-1691677444656)(https://image.3001.net/images/20230605/1685975711_647df29ff24502e610668.png!small)]
漏洞完整利用链
绕过NTLM的消息完整性校验只是第一步,之后能做什么呢?
漏洞完整利用链需要结合NTLM Relay。完整的攻击链如下:
1)使用域内任意有效账户,通过SMB连接到目标机器,使用Print Spooler 漏洞或者PetitPotam漏洞强制触发目标机器向指定的机器进行NTLM
认证;
2)中继服务器收到目标机器的NTLM 认证流量后,通过删除相应的字段绕过NTLM 的完整性校验并修改NTLM 数据包的标志位使得其从SMB协议中继到LDAP
不需要签名;
3)使用中继的LDAP流量,通过LDAP远程连接域控,执行高权限操作,赋予指定的账户高权限;
4)使用提升了权限的账户进行“后利用”,接管全域。
1、触发目标NTLM请求
攻击者需要向目标机器发起NTLM请求才能进行NTLM Relay利用,这里可以利用使用Print Spooler
漏洞或者PetitPotam漏洞强制触发目标机器向指定的机器进行NTLM 认证;详情见内网渗透(六十二)之 NTLM Realy
攻击
2、LDAP 签名绕过
由于通过Print Spooler 漏洞和PetitPotam漏洞触发的NTLM 认证都是基于SMB协议的,因此安全研究员需要将SMB
协议的身份验证流量通