ssl lab
https://blog.qualys.com/product-tech/2012/09/14/crime-information-leakage-attack-against-ssltls
http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art027
图3.利用:选择的边界攻击与记录拆分相结合
虽然攻击肯定是有独创性的,但它需要针对浏览器进行单独的利用,以执行记录拆分并将任意数据注入HTTPS流。在概念验证中,Duong和Rizzo利用了浏览器中运行的易受攻击的Java小程序,但是除了Java URLConnection API之外,还可以使用称为HTML5 WebSocket API或Silverlight WebClient API的JavaScript进行攻击。向会话中注入代码需要违反同源策略,这使得利用变得更加困难。
该攻击仅限于恢复短字符串,并且需要相对大量的请求,但是即使这样,在特定情况下,也可以将其用于读取会话cookie或登录凭据。在完全可行的攻击情形中,用户浏览到执行恶意脚本的站点。然后,用户无需关闭该站点即可登录到高价值站点(例如,在线银行应用程序),并使两个站点都保持打开状态约10分钟。攻击脚本在后台运行,试图强行激活活动会话cookie。如果攻击成功,则攻击者可以劫持银行会话并模拟用户,直到合法用户注销为止。
缓解尝试
该漏洞的消息促使软件供应商争先恐后地减轻服务器端和浏览器中的威胁。确保安全性的最安全方法是仅允许TLS 1.1或TLS 1.2,因为它们修复了底层TLS 1.0漏洞。不幸的是,几乎所有网站和主要浏览器仍然支持TLS 1.0作为SSL协议的最高版本。具体来说,适用于Mac OS X 10.7(或更早版本)的Google Chrome,Mozilla Firefox和Safari以及Microsoft Windows XP上的Internet Explorer都容易受到攻击。在Windows Server 2008 R2中,默认情况下禁用TLS 1.1,但可以通过更改Windows安全通道(SChannel)设置来启用。
在TLS 1.1被广泛采用之前,探索了几种无需升级协议即可缓解漏洞的方法:
- 切换到流密码:除分组密码外,TLS规范还要求至少支持一种流密码:RC4。该漏洞仅影响CBC模式下的块密码,因此,最初,建议的解决方法是切换到RC4密码。不幸的是,2013年研究人员证明RC4在理论上是不安全的,并且随着密码中更多漏洞的发现,IETF在2015年发布了RFC 7465,正式禁止在TLS实现中使用RC4。
- 更改分组密码模式:以攻击为目标的CBC模式,因此从理论上切换到另一分组密码模式可以解决问题。但是,TLS 1.0(与更高版本的TLS不同)仅支持CBC模式,因此无法解决此问题。
- 插入空数据包以消耗不安全的初始化向量:开发了一种快速修复程序,该方法使用了其他空数据包(具有零长度的有效载荷)。不完整的块会用随机数据填充到块大小,因此发送零长度数据块将生成完整的随机填充块。当插入消息之间时,此随机块将用作下一条消息的初始化向量,从而使加密再次安全。但是,此行为未在TLS 1.0规范中记录,并且此修复程序引起了与某些SSL堆栈(尤其是Internet Explorer 6.0)的兼容性问题。在OpenSSL中,该修补程序已实现,但默认情况下处于禁用状态。
- 使用1 / n-1数据包拆分:某些浏览器(包括Firefox和Safari)修补了其TLS 1.0实现,以拆分HTTPS数据包。这个想法类似于空包修复,但是没有零长度的有效载荷。在每条消息的开头,您将n字节数据块的第一个字节发送到单独的数据包中,并将该块的其余n-1字节放入第二个数据包中(因此将1 / n-1 split)。在与不安全的初始化向量组合之前,将用随机数据填充第一个数据包,从而将随机性恢复到加密过程。
BEAST的后果
截至2019年10月,绝大多数网站都支持TLS v1.2,再加上集成到现代浏览器中的缓解措施,意味着BEAST和类似攻击不再构成威胁。该TLS 1.0和1.1的主流浏览器即将弃用只会加强这一点。当然,这仅适用于现代Web浏览器和操作系统-易受攻击的遗留应用程序仍然存在于公司Intranet中的可能性很大,也许仍在Windows XP上运行,并且要求Internet Explorer 6.0带有一些过时的DirectX控件或古老的Java小程序。
BEAST攻击的故事为安全专业人员提供了宝贵的经验教训。关键要点在于,实现通常远远落后于最新的安全协议规范-当首次发布漏洞利用程序时,该漏洞已在TLS 1.1规范中修复了五年。此外,如果您等待足够长的时间,那么在实践中将利用被认为是不切实际或纯理论上的加密漏洞,因此,这是遵循推荐规范的良好实践。最后,理论上安全的加密方案可能会因甚至稍有不正确的实现而受到损害,因此,使用最新的漏洞扫描程序来测试您的应用程序是否支持过时的协议始终是一个好主意。 维护安全。
BEAST vs.CRIME攻击
几个月前,几乎所有安全新闻提要中都出现了一个关于CRIME攻击能够破坏SSL的新闻。在本文中,我想确定什么是CRIME攻击和BEAST攻击,以及如何防止这些攻击以创建安全的气氛。
首先,我们将研究BEAST攻击,然后我们将解释其后继者CRIME攻击。
野兽攻击
BEAST(针对SSL / TLS的浏览器攻击)是由研究人员Thai Duong和Juliano Rizzo开发的,可以在TLS v1.0上进行。TLSv 1.2不受BEAST攻击。BEAST攻击的CVE为CVE-2011-3389。
无论何时登录到任何https页面,在身份验证之后,您都可以看到已身份验证的页面;如果仔细查看URL,则可以看到会话ID。会话ID是保持页面状态的随机数或数字与字符串的组合;它由网站服务器分配给客户端浏览器。可以在cookie或Web浏览器的URL中找到会话ID。通常,所有会话ID都会被加密,以防止会话被劫持。
为了简单起见,我可以将BEAST攻击分为三个步骤。
第1步:攻击者发送了一个恶意JavaScript,使其在您的计算机上运行(可以通过CSRF,社会工程学,Drive-by下载发送,返回的页面可能包含JavaScript等)。该恶意脚本在受害者的计算机上运行机器,并可以捕获整个标头信息和从Web服务器(运行TLS 1.0)分配的加密cookie,然后可以将该信息发送到任何网站。
步骤2:SSL / TLS可以使用两种密码对数据进行加密:分组密码(例如AES和DES)和流密码(例如RC4).TLS v1.0优先使用块密码而不是流密码。这是我们存在漏洞的地方。如果我们有两个相同的纯文本消息,则在加密后,我们将拥有相同的密文,因此,纯文本中的模式会反映在密文中。这不好。为了防止这种情况,我们使用密码块链接(CBC模式链接)。在CBC中,如果要加密块A,首先需要与A-1进行XOR。如果它是第一个块,则无法与A-1数据进行XOR运算,因此这里取初始化向量。
步骤3:攻击者将加密的会话详细信息与脚本发送的未加密数据进行比较,以找到初始化向量。一旦获得此信息,我们便可以解密从Web服务器发送的将来的cookie。
您可以通过从SSL Labs进行扫描来检查您的网站是否容易受到BEAST攻击:https : //www.ssllabs.com/index.html。
BEAST攻击的解决方法
减轻
打开本地组策略编辑器。
- 在命令提示符下,输入“ gpedit.msc”。组策略对象编辑器出现。
- 展开计算机配置,管理模板和网络,然后单击SSL配置设置。
- 在“ SSL配置设置”下,双击“ SSL Cipher Suite订单”设置。
密码套件TLS_RSA_WITH_RC4_128_SHA和TLS_RSA_WITH_RC4_128_MD5必须放在第一行。
CRIME(压缩率信息泄漏大规模利用)
CRIME(使压缩比信息泄漏变得容易/压缩比信息泄漏大量利用)是由两名安全研究人员Juliano Rizzo和Thai Duong开发的一种新攻击。它通过蛮力从超文本传输协议安全(HTTPS)连接中解密会话cookie。所谓的CRIME攻击会诱使易受攻击的Web浏览器渗透cookie身份验证,该身份验证是在用户启动与网站的HTTPS会话时创建的。黑客可以使用获取的cookie来登录站点上受害者的帐户。通过诱骗浏览器向安全网站发送加密的压缩请求并利用在此过程中疏忽泄漏的信息来获取Cookie。每个请求中还会嵌入一些由恶意JavaScript代码调整过的额外数据以及cookie。测量压缩消息大小的差异,以逐个字符确定cookie的内容。这是可能的,因为TLS / SSL和SPDY使用称为DEFLATE的压缩算法,该算法可消除重复的字符串。
CRIME适用于TLS / SSL压缩和SPDY(由Google开发的特殊HTTP协议,在网络上很少使用)。SSL Pulse收集的最新统计数据表明,大约42%的服务器支持SSL压缩,而0.8%的服务器支持SPDY。SSL压缩,因为它是一项可选功能,默认情况下可能会或可能不会启用–无需显式配置。但是,SPDY将明确设计到您的Web应用程序中。
脆弱的系统
- TLS 1.0。
- SPDY协议(Google)。
- 使用TLS压缩的应用程序。
- 支持SPDY的Mozilla Firefox(旧版本)。
- 支持TLS和SPDY的Google Chrome(旧版本)。
CRIME攻击的机制
分析
要了解CRIME的弱点,我们需要了解SPDY和TLS / SSL(DEFLATE算法)中无损数据压缩的工作原理。无损数据压缩在数据主体中找到冗余,然后以较小的方式表示这些冗余。
考虑以下示例:
假设“ AAAAABCDEFGH”是通过HTTPS连接传输的源数据。压缩算法机制将冗余序列“ AAAAA”替换为“ 5A”,从而实现了25%的压缩率。
因此,我们得到AAAAABCDEFGH = 5ABCDEFGH。
加密的数据没有冗余,并且输出应均匀一致。加密的输出模式提供有关如何加密数据的信息以及有关输入数据的一些提示。因此,为了在TLS / SSL中有效执行压缩和加密,应首先压缩输入,然后再加密输入。让我们考虑两个使用压缩方案并加密输出的字符串。
[普通]
数据(源)压缩加密
****************************************************** ****************
ABCDEFGHIJKL = ABCDEFGHIJKL = Z @%fkT2r $#!B
AAAAABCDEFGH = 5ABCDEFGH = jhG * 4m#$ A
[/ plain]
我们发现第一个字符串“ ABCDEFGHIJKL”未压缩,因为它不包含任何冗余。第二个字符串“ AAAAABCDEFGH”由于包含冗余而被压缩,因此使加密输出变小。比较字符串输出时,我们发现压缩发生在加密之前,而且第二个字符串的加密输出比第一个字符串的加密输出短。因此,我们可以得出结论,与其他字符串相比,第二个字符串的加密输出具有更多的冗余性。
通过分析压缩算法来破解加密
攻击者可以通过了解底层压缩算法来解密源数据。
让我们考虑这个例子。
[普通]
数据(源)压缩加密
****************************************************** *
XYZABCDEFGHIJK = XYZABCDEFGHIJK = At9XeCNVxKt @ XZC
[/ plain]
显然,攻击者不知道源数据和压缩数据是什么,但是他可以看到加密数据。为了解密或查找未知数据,第一步,他将输入“ XYZ”与源数据一起添加。此时,他只知道自己的输入和加密的数据。
[普通]
数据(源)压缩加密
****************************************************** **
XYZ [未知数据] = [完全未知] = At9XeCNVxKt @ XZC
[/ plain]
与安全机制关联的“加密前压缩”可帮助攻击者找到未知数据,这完全取决于攻击者提供的值以及未知源数据。攻击者在这里尝试使用三个不同的输入字符串以及源数据。
[普通]
数据(源)压缩加密
****************************************************** *****
ZZZ [未知数据] = [完全未知] = QvnQSHvQWB3 * QR
YYY [未知数据] = [完全未知] = f * fB& M7sya * u7F
AAA [未知数据] = [完全未知] = rAW ^ 26uffH%8
[/ plain]
当攻击者将字符串“ AAA”与源数据一起输入时,数据的冗余度增加,因此可以更好地压缩数据,从而使加密的数据长度更短。反过来,这有助于攻击者确认源数据中字符串“ A”的存在。攻击者可以使用不同的值重复此技术,并完全推断出未知源数据。
违规者在源数据中添加一些内容,即HTTP cookie(带有会话信息)。此数据已压缩和加密。然后,攻击者通过更改控制输入来分析加密的数据,从而深入了解已压缩数据的冗余性,并最终了解HTTP cookie的内容。
减轻
- 可以通过禁用HTTPS请求的压缩机制来缓解CRIME攻击。
- 因此,应该禁用Web浏览器/网站的TLS / SSL自动压缩。
- 服务器端使用的压缩方法直接取决于客户端的压缩机制,因此,如果在客户端禁用了数据压缩机制,则将自动处理服务器端的数据而不进行压缩,从而防止了CRIME攻击。
- 启用压缩技术后,请使用密码链块(CBC)密码,其中包含多达255个字节的随机填充。该技术将增加罪犯推断敏感数据所需的审判次数。
- 在客户端对称为CSRF(跨站点请求伪造)的跨站点请求实施限制有助于克服CRIME攻击。
- Web服务器上的TLS压缩应该是。
- 建议升级使用TLS压缩的Web浏览器,例如Mozilla和Chrome(IE浏览器不容易受到CRIME攻击)。
参考文献
- http://www.educatedguesswork.org/2011/09/security_impact_of_the_rizzodu.html
- https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.0.pdf
- https://www.phonefactor.com/resources/CipherSuiteMitigationForBeast.pdf
- http://threatpost.com/zh_CN/blogs/new-attack-uses-ssltls-information-leak-hijack-https-sessions-090512
- https://community.qualys.com/blogs/securitylabs/2012/09/14/crime-information-leakage-attack-against-ssltls
- https://isecpartners.com/blog/2012/september/details-on-the-crime-attack.aspx
- http://thehackernews.com/2012/09/crime-new-ssltls-attack-for-hijacking.html
- http://www.theregister.co.uk/2012/09/14/crime_tls_attack/
- http://www.pcworld.com/article/261988/security_researchers_to_present_new_crime_attack_against_ssltls.html