Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析

简介: 本文讲的是Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析,在上个月,我们为方程式组织被泄漏的ESTEEMAUDIT漏洞撰写了一个简要的分析,并且直到我们发现这一漏洞攻击只适用于加入Windows域的计算机前,我们都在试图去重现这个问题,不过相对来说编写补丁还是相当简单的。
本文讲的是 Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析在上个月,我们为方程式组织被泄漏的ESTEEMAUDIT漏洞撰写了一个简要的分析,并且直到我们发现这一漏洞攻击只适用于加入Windows域的计算机前,我们都在试图去重现这个问题,不过相对来说编写补丁还是相当简单的。下图显示了当检测到并阻止ESTEEMAUDIT攻击时显示的源代码和“Exploit Attempt Blocked”对话框。

我们的补丁很简单:我们先去检查从远程智能卡收到的数据(由ESTEEMAUDIT模拟)是否大于80h,这是gpkcsp.dll中目标缓冲区的大小。如果接收到的数据较大,并且使用ESTEEMAUDIT,则我们首先警告我们本地运行的0patch代理(弹出警报),然后将接收到的数据的大小减小到80h,以防止缓冲区溢出。通过在原始代码中引入4个机器指令,可以有效地阻止攻击而不会中断那些合法功能。

 Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析

而在大约一个月后,微软公布了ESTEEMAUDIT和其它漏洞的官方更新,并且表示会向客户提供更多的支持。这是非常好的,因为官方的供应商更新是修复漏洞的首选方法,我们的目标是为那些还未修复的问题在修复前提供尽可能的服务,或者在安全更新时间差中为一些客户组织提供对关键漏洞的保护。

当然,我们对微软如何修复这个漏洞非常感兴趣,并将其修复方案与我们的进行了比较。输入IDA Pro和BinDiff,几分钟后,我们就可以并列的去比较两者了。Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析

在左边的固定代码和右边的易受攻击的代码上,微软的补丁在完全相同的位置也引入了同样的检查。我们修复方案的主要区别在于,尽管我们将接收到的数据切割为有效长度,但如果数据太长,则仍然会产生错误,并放弃连接。

这是非常有道理的,因为官方补丁就是应该提供故障排除信息,微软应该尽量用最小的代码关闭漏洞。

当然我们也发现了非常惊喜的地方——BinDiff展现了了另一个变化。

Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析

在代码中的其他地方,微软也添加了类似的检查——检查接收到的数据长度超过80h,如果是,则返回错误。

他们显然审计了他们的代码,并注意到在另一个DoSCardTransmit调用之后存在类似的错误,并修复它。请注意,这个第二个错误并没有被ESTEEMAUDIT利用,但是很有可能会由第一个bug 进而被发现。微软和其他类似的软件供应商经常在他们的代码中搜索那些类似已发现的漏洞(内部或外部),并主动修复它们。

毫无疑问,这个被发现的第二个问题也给我们带来了新的问题:还有其他类似的问题吗?

在gpkcsp.dll中有66次对DoSCardTransmt调用,我们来简要地看看他们。事实上,我们对接收到的缓冲区将被复制到其他缓冲区的情况很感兴趣。实际上还有一个这样的情况,除了微软修补的问题,如下图所示:

Windows远程桌面漏洞Esteemaudit(CVE-2017-9073)补丁简要分析

同样,最新的gpkcsp.dll还是位于左侧,但显然这里没有添加任何数据长度检查。该代码与易受攻击的代码存在相似的嫌疑,但它实际上取决于ds上的目标缓冲区的大小:[edx + ebx]。我们没有时间进一步了解这一点,但是我们希望微软去进行尝试并确认它是不可利用的。

最后顺便说一下,ESTEEMAUDIT漏洞被分配了代号CVE-2017-9073,但微软将其修复与CVE-2017-0176进行了相互的关联。这很容易会引起一些混乱,让人们想知道两个CVE是否是重复的。基于对Microsoft的修复的上述分析,似乎可以准确的说一点,CVE-2017-9073其实是CVE-2017-0176的一个子集,前者只是ESTEEMAUDIT漏洞,而后者还包括上文中所述的第二个类似的问题,微软也进行了修补。




原文发布时间为:2017年6月22日
本文作者:Change
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
12天前
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
36 3
|
28天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
1月前
|
弹性计算 安全 Windows
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
|
3月前
|
安全 数据安全/隐私保护 Windows
Windows 允许空密码远程桌面
Windows 允许空密码远程桌面
46 2
|
3月前
|
Oracle 关系型数据库 数据库
[windows]远程桌面失败提示CredSSP加密修正
[windows]远程桌面失败提示CredSSP加密修正
1042 6
|
3月前
|
监控 安全 虚拟化
降级攻击可“复活”数以千计的Windows漏洞
在本周举行的黑帽大会(Black Hat 2024)上,安全研究员Alon Leviev曝光了一个微软Windows操作系统的“超级漏洞”,该漏洞使得攻击者可以利用微软更新进程实施降级攻击,“复活”数以千计的微软Windows漏洞,即便是打满补丁的Windows11设备也将变得千疮百孔,脆弱不堪。
|
3月前
|
Windows
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
|
3月前
|
负载均衡 网络协议 安全
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
|
4月前
|
安全 Windows
Microsoft Windows远程桌面服务远程执行代码漏洞(CVE-2019-0708)
Microsoft Windows远程桌面服务远程执行代码漏洞(CVE-2019-0708)
87 2
|
4月前
|
弹性计算 缓存 网络安全
云服务器 ECS产品使用问题之远程桌面无法连接到Windows实例,该如何排查
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。