MS07-063 - 不安全签名案例解析

本文详细分析了MS07-063安全更新中SMBv2消息签名算法的安全漏洞,探讨了签名机制的工作原理、漏洞影响范围,以及如何通过版本号识别未修复系统,并提供了网络抓包示例说明签名数据包的特征。

MS07-063 - 不安全签名案例

MS07-063 解决的是 SMBv2 消息签名算法中的一个弱点。SMB 签名是一项默认在域控制器上启用的功能,用于防止中间人攻击。可以想象,如果攻击者能在本地子网上篡改域控制器与加入域的客户端之间的 SMB 网络流量,他们就能造成各种混乱。

Windows 2000 和 2003 域控制器使用 SMBv1,它采用安全的签名算法。当 Vista 和 Windows Server 2008 通信时,它们会尝试使用 SMBv2。SMBv2 消息签名最初实现不安全,后来通过此安全更新进行了修复。

除非您使用 SMBv2 的 SMB 消息签名,否则这个漏洞目前可能不会影响您,但请务必应用此更新,为迁移到 Windows Server 2008 或与 Vista 客户端进行客户端到客户端 SMB 签名做好准备。Vista SP1 和 Windows Server 2008 Release Candidate 1(以及最终发布版本)将包含此修复。MS07-063 将 Vista RTM(“发布给制造商”版本,未安装任何服务包)改为使用 Vista SP1 和 WS2008 RC1 内部版本已经使用的相同安全算法。

您可以通过监听网络流量来发现未打补丁的 Vista 机器之间的任何 SMBv2 对话。MS07-063 将 SMBv2 版本号从 2.001 改为 2.002。我们 SWI 防御团队的 Kevin 在我们的安全调查中记录了这一点,因此我想粘贴他制作的一些捕获截图,以显示补丁前和补丁后的版本号。如果您在网络上嗅探并看到 SMB 2.001,那就是未打补丁的 Vista 机器。实际上,对话的两端都必须未打补丁,因为打了补丁的 Vista、Vista SP1 或 WS08 RC1 会选择降级到 SMBv1,而不是使用 SMBv2 v2.001 进行通信。

以下是 Vista 打补丁前的协商协议请求:

以下是打补丁后的情况:

再次提醒,此漏洞仅与签名流量相关。Kevin 还构建了一个网络捕获来显示签名字段。如果字段全是 NULL,则数据包未签名;如果包含数据,则数据包已签名。以下是一个签名数据包的示例:

更新:博客读者 Blake 通过电子邮件建议我们附上一个完整的网络捕获,显示签名的 SMBv2 流量。SWI 防御团队的 Kevin 已经准备了一个 SMB2(版本 2.001 - 打补丁前)的捕获,我们在此附上。您可能会注意到捕获中包含一些关于他的测试设置的信息(机器名 = “VM-Vista-RTM”,登录名 = “Kevin”)。我们认为这些数据没有隐私问题,因此未从捕获中删除。

更新:博客读者 Ronnie 正确指出,上面的截图来自 Wireshark,而不是 NetMon。对此表示抱歉。

smbv2_001.pcap

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计