CVE-2019-1040漏洞信息简单整理及分析
CVE-2019-1040 结合RCE和Domain Admin的漏洞
综述
- Preempt的研究人员发现了如何在NTLM身份验证上绕过MIC(Message Integrity Code)保护措施并修改NTLM消息流中的任何字段(包括签名)。该种绕过方式允许攻击者将已经协商签名的身份验证尝试中继到另外一台服务器,同时完全删除签名要求。所有不执行签名的服务器都容易受到攻击。
- 当用户通过NTLM对目标进行身份验证时,他们可能容易受到中继攻击。为了保护服务器免受此类攻击,Microsoft引入了各种缓解措施,其中最重要的是会话签名。当用户针对服务器建立签名会话时,由于无法检索所需的会话密钥,攻击者无法劫持会话。在SMB中,通过在NTLM_NEGOTIATE消息中设置“NTLMSSP_NEGOTIATE_SIGN”标志来协商会话签名。客户端行为由多个组策略(“Microsoft网络客户端:数字签名通信”)确定,其默认配置是设置有问题的标志。如果攻击者试图中继这种NTLM身份验证,他们将需要确保不协商签名。一种方法是通过中继到NTLM消息不管理会话完整性的协议,例如LDAPS或HTTPS。但是,这些协议并非在每台计算机上都打开,而是在所有Windows计算机上默认启用的SMB,而在许多情况下,允许远程执行代码。因此,NTLM中继攻击的重点在于将SMB身份验证请求转发给其他SMB服务器。为了成功执行此类NTLM中继,攻击者需要修改NTLM_NEGOTIATE消息并取消设置“NTLMSSP_NEGOTIATE_SIGN”标志。但是,在新的NTLM版本中,可以防止这种修改 - MIC领域。而不是在所有Windows机器上默认启用的SMB,在许多情况下,允许远程执行代码。因此,NTLM中继攻击的圣杯在于将SMB身份验证请求转发给其他SMB服务器。为了成功执行此类NTLM中继,攻击者需要修改NTLM_NEGOTIATE消息并取消设置“NTLMSSP_NEGOTIATE_SIGN”标志。
攻击思路和途径
攻击思路:
主要是将SMB重放到LDAP,可以通过使Windows服务器(如Exchange)对我们进行身份验证,并将该身份验证通过LDAP中继到域控制器,则可以在ActiveDirective中以重放的受害者权限执行操作。在Exchange情境中,这具备足够高的权限来产生我们自己的DCSync权限,而这种权限是PrivExchange漏洞的基础。 另外一种场景是滥用Resource Based Constrained Kerberos的委派机制,该种机制可以导致在受害者主机授予攻击者权限,导致可以以管理员权限访问该服务器。 但是NTLM协议的工作方式,无法将SMB流量重放到LDAP,因为标志位的变动将会出发LDAP签名。 关键步骤是CVE-2019-1040使得攻击者可以在不改变原有身份验证的情况下修改NTLM身份验证数据包,删除用于阻止从SMB重放到LDAP的标志。
攻击途径:
1. 使用任意AD账户,通过SMB连接到受害者Exchange服务器,触发SpoolService的bug。攻击者服务器将通过SMB连接到受害者,SMB可以通过修改后的ntlmrelayx版本重放到LDAP。使用重放的LDAP身份验证,向攻击者帐户授予DCSync权限。攻击者现在可以使用DCSync转储AD中的所有密码哈希。 2. 使用任何AD帐户,通过SMB连接到受害服务器,并触发SpoolService 错误。攻击者服务器将通过SMB连接到您,SMB可以通过修改后的ntlmrelayx版本中继到LDAP。使用中继的LDAP身份验证,将受害者服务器的基于资源的约束委派权限授予攻击者控制下的计算机帐户。攻击者现在可以作为受害者服务器上的任何用户进行身份验证。
攻击细节:
MIC
NTLM身份验证由3种消息类型组成:NTLM_NEGOTIATE,NTLM_CHALLENGE,NTLM_AUTHENTICATE。为了确保恶意行为者不在传输过程中处理消息,在NTLM_AUTHENTICATE消息中添加了一个额外的MIC(消息完整性代码)字段。MIC是使用会话密钥应用于所有3个NTLM消息的串联的HMAC_MD5,该会话密钥仅对启动认证的帐户和目标服务器是已知的。因此,试图篡改其中一条消息的攻击者(例如,修改签名协商)将无法生成相应的MIC,这将导致攻击失败。
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
复制成功
