• 本文作者: 漏洞应急响应中心
  • |
  • 2016年3月3日
  • |
  • 漏洞分析
  • |

基于 CVE-2016-0703 分析 DrownAttack对OpenSSL的危害

1.什么是Drown Attack

Drown 是一次跨协议的攻击,通过利用SSLv2漏洞攻击TLS,实际上就是中间人攻击的进一步利用。中间人攻击简单举例:比如劫持用户的流量HTTP。但是有些服务器与客户端通信是加密的,比如TLSSSL。这里Drown attack利用SSLv2的漏洞,这里需要不同服务使用RSA key exchange技术,这个情况不同服务的private key会一样 ,此时就可以利用这个漏洞去解密TLS或者SSLv3的连接,然后进行一些中间人攻击,比如管理员的session的被劫持到了,危害可想而知。

drownattack1

 

2. 如何准确测试Drown Attack

作者在https://github.com/nimia/public_drown_scanner发布了DROWN Scanner,但是并不能准确的测试Drown Attack漏洞,因为利用此漏洞前提是存在sslv2漏洞,同时sslv2这个服务的private key和其他服务一样,这样就可以通过发送一个探针到sslv2服务器获取到服务器异常响应来帮助攻击。Drown Attack 会影响到OpenSSL versions 1.0.2, 1.0.1l, 1.0.0q, 0.9.8ze 和之前所有版本,需要用户升级到OpenSSL 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf

 

3.如何利用sslv2漏洞获取破解TSL的方法

SSLv2 漏洞基于利用Bleichenbacher RSA 的填充提示攻击获取到private key,这是依据解密时,发现填充不符合规格,解密类库遍会抛出一个异常,这样的话就得到一种提示,所以攻击者便可以利用这种提示不停地发送密文,不停地修正,最终破解TSL的连接。

 

4.攻破TLS成本

从技术角度来说,DROWN是一个新的形式的跨协议填充提示攻击,它能使攻击者通过精心构造特别的连接发送到SSLv2服务器获取相同私钥后破解TLS连接。

攻击者开始是通过观察大约好几百次的客户端与服务器的连接,最终会解密他们中的一个。搜集这些连接需要很长的时间来监听流量或者dns劫持这些连接请求。这些连接可以是任何版本的SSL或者TLS,前提是他们使用的RSA key交换方法,也就是使用相同的密钥。然后,攻击者就可以重复性的连接SSLv2服务器经过精心设计的握手包的不断修改来破解TSL的连接。

每次服务器响应探针都被用来判断被修改的密文是否是正确的格式,最终解密成明文的。因为攻击者并不知道服务器的密钥,所以他就不知道明文是什么,但是服务器的响应最终会导致给攻击者足够的信息来破解密钥。有两种格式会导致泄露私钥。第一,发送一个探针含只有40bit大小的密文,他是用RSA算法加密过的,然后攻击者可以通过对比服务器的响应中判断是否是正确的格式,大概需要2^40次尝试计算,这是一个相对较大的计算量,但是可以用GPU来运算。整体来说,大概4万个探针连接,2^50次计算来可以成功解密900TLS连接中的一个,用亚马逊云服务器来跑所有的攻击需要440刀。

另一种是在OpenSSl中的bug,这种消耗特别低,因为攻击者可以通过精心设计的探针消息很快的知道这个格式是否正确,从而不需要大量的计算。在这种情况下,攻击者总共需要发送17千个探针连接就可以在260TLS请求中获取到一次正确的连接,用一台快点的电脑只需要不到一分钟的时间。

以此可以看出,Drown Attack的危害还是很大的,当然这是相对来说,这是需要在满足一些条件下才能实现的,但是对于应用商来说还是需要尽快打好补丁,升级OpenSSl,关闭SSLv2,不使用RSA key交换方法,杜绝一切被攻破的可能。

 

5.攻击者攻破TLS后会获取到什么

因为TLS是加密了用户和服务器端的通信,所以,攻破TLS后,所有的通信变成了明文形式。比如:用户名,密码,信用卡号,邮箱,短信,和一些敏感的文件都会被直接看到。同时,攻击者还可以利用类似dns劫持这种攻击,伪装成一个安全的website,利用JavaScript等控制用户行为等。

6.一些疑惑解答

–DROWN代表什么?代表解密“那些过时的有弱点的RSA加密技术”

–DROWN 攻击者能盗取服务器密钥吗?不能,只能解密一次连接。

– 攻击者需要服务器新的证书吗?不需要,因为攻击者没有获取私钥,所以也没必要获取新的证书。

–能监控到这种攻击吗?有可能,比如查看IDS或者服务器日志,看看有没有大量的SSLv2连接。

–在我关闭了SSlv2后,还需要采取其他防范吗?需要,因为如果使用了RSA key Exchange 方法后,会使其他SSLv2服务器的密钥一样,所以需要检查所有的密钥是否一样。

–有多少流行的网站会被影响到?这些是在201631日曝光Alexa Top 10,000网站中发现存在DROWN攻击漏洞的网站。

drownattack2

https://drownattack.com/top-sites.html

 

7.引用

Drown Attack官网:https://drownattack.com

Written by 漏洞应急响应中心