此安全更新解决了 Microsoft 服务器消息块 (SMB) 中一个公开披露的漏洞。 此漏洞可能允许在受影响的系统上远程执行代码。 成功利用此漏洞的攻击者可以安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。 那些帐户被配置为拥有较少系统用户权限的用户比具有管理用户权限的用户受到的影响要小。

对于 Microsoft Windows 2000、Windows XP、Windows Server 2003、Windows Vista 和 Windows Server 2008 的所有受支持版本,此安全更新的等级为“重要”。

在袁哥的blog上看到他对这个漏洞的介绍:  恐怕这个漏洞的历史不一定有12年。从下面资料看不出当时已经发现这个漏洞,只是说很容易中间人攻击。不知道当时提出来密码泄露没有,如果有这个漏洞的历 史才能算那么久。现在除了带双向认证的协议基本上都很容易中间人攻击。这个漏洞的问题主要不在中间人攻击,而在于密码泄露,中间人只是一个使用方法。

英文不行,就懒得去考证“另据小四考证,至少在1996年的时候MIT的人就发现了这个问题。Blackhat 1997上也有人讲”。有找到这两个资料的欢迎提供原文,可以认真考证考证。

看来真是老了,这个补丁出来根本就没有分析,看提到的攻击方法就想当然的觉得微软应该修补正确。现在有人提到泄露密码没有修补,看“一位网名为“HD”的 人说,微软周二发布的MS08-068补丁仅仅在攻击者连接返回到受害人的情况下阻止这种攻击。但是,在攻击者通过受害人访问的第三方主机转接这个连接的 时候,这个补丁就不起作用了”似乎真的没有修补。密码泄露真的不可能修补?恐怕不是吧!这个“密码泄露”恐怕也不是你说的“密码泄露”。

如果真如说的这样,就微软对这漏洞的理解,似乎看来我们前面的路虽然崎岖但还是终归可以前进的,离转行还有段距离。

Blackhat 1997 http://www.blackhat.com/presentations/bh-usa-97/dominique.ppt 好象只讲了中间人攻击。

☆ Windows NT身份验证机制的脆弱性

1997年2月6日,Dominique Brezinski <dominique.brezinski@CyberSafe.COM>对外
发布了一份关于Windows NT身份验证机制脆弱性的文档((参考资源[8])。

假设有主机B与A

(1) A向B发起连接请求

(2) B向A发送挑战(一组随机数据)

(3) A用源自明文口令的DESKEY对挑战进行标准DES加密得到响应,并发往B

(4) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对前面发往A的挑战进
行标准DES加密

(5) 如果(4)中计算结果与A送过来的响应匹配,A被允许访问B

现在假设一个攻击者C卷入其中

(1) C向B发起连接请求

(2) B向C发送挑战D(一组随机数据)

(3) C等待A向B发起连接请求

(4) 当A向B发起连接请求时,C伪造成B向A发送挑战D

(5) A用源自明文口令的DESKEY对挑战D进行标准DES加密得到响应E,并发往B

(6) C截获到响应E,将它做为针对(2)中挑战D的响应发往B,并声称自己是A

(7) B从SAM中获取A的LM Hash、NTLM Hash,计算出DESKEY,并对挑战D进行标准DES
加密

(8) 如果(7)中计算结果与C送过来的响应匹配,C被允许以A的身份访问B

下面我们详细分析一下这个过程。攻击者C卷入A与B的通信中,C向B建立NBT会话并发
送SMB_COM_NEGOTIATE(0×72)请求报文,指定使用”NT LM 0.12″ dialect。在用户级
共享(与之相对的是共享级共享)中”NT LM 0.12″是首选SMB dialect。B将在响应报文
的encryption key(其实应该叫Challenge)字段中返回8字节的挑战。C保存这8字节的
挑战并开始等待,如果B因为超时终止了这次连接,C必须重复前面的步骤。当A试图
连接B时,也会建立NBT会话并发送SMB_COM_NEGOTIATE(0×72)请求报文,就dialect进
行协商。一般最终协商结果都是使用”NT LM 0.12″ dialect。C注意到这个协商请求,
于是伪装成B向A发送响应报文,encryption key字段中设置成前面保存下来的挑战。
这个响应报文的源IP设置成B的IP地址,需要分析A送往B的SMB_COM_NEGOTIATE(0×72)
请求报文以设置响应报文的th_ack字段。这个伪造的响应报文必须抢在B的正常响应
报文之前到达A。如果C本来就扮演着A与B之间路由器一类的角色,这不成问题。来自
B的正常响应报文做为重复数据而被丢弃。此时A生成两组24字节响应,向B发送
SMB_COM_SESSION_SETUP_ANDX(0×73)请求报文。C注意到这个请求,获取了A生成的两
组24字节响应,然后C也构造一个SMB_COM_SESSION_SETUP_ANDX(0×73)请求报文,用
这两组24字节响应分别设置CaseInsensitivePassword、CaseSensitivePassword字段。
同时在AccountName字段设置A的用户名。C将这样一个伪造的0×73请求报文通过最初
建立的NBT会话发往B。至此C将获取一条到B的SMB会话,拥有A用户的权限。

如果C扮演着A与B之间路由器一类的角色,整个攻击过程将大大简化。

攻击工具:http://milw0rm.com/sploits/2008-smbrelay3.zip

相关文章

本文还暂无回复

添加回复

支持 Ctrl+Enter 快速提交