测试不基于 Internet 的 BEAST/CRIME 的工具?

信息安全 tls 自动化测试
2021-08-19 19:02:38

我们面临越来越大的压力来识别和修复任何易受BEAST (CBC) 和CRIME(压缩)攻击的 HTTPS 服务器配置。我们需要修复可通过 Internet 访问的服务器、只能通过 Internet 访问有限合作伙伴 IP 地址的服务器以及内部服务器。

可以使用Qualys 的 SSL Labs网络服务扫描互联网上可用的服务器。它清楚地表明了 BEAST 漏洞,并且可能今天不是坏信号的“压缩”设置与 CRIME 相关,并将在不久的将来开始触发警报。但是,这对通常无法通过 Internet 访问的站点没有帮助。

我可以找到有关如何手动测试事物的各种信息 - 例如,讨论 BEAST 的密码用于测试压缩的 openssl s_client 配方然而,在我晚年的时候,我越来越喜欢工具——比如 SSL Labs——它只是告诉我,而不是必须破译各种 openssl 密码字符串(“没有 CBC,除非它是 TLS 1.1+,在这种情况下 CBC 是好吧,别忘了星期二”)。

我也很担心,我无法在 SSL Labs 表示已启用压缩的 Web 服务器上使用各种 openssl + 手动编码的 HTTP 标头获得指示压缩的结果。我相信谁?我更倾向于信任工具而不是食谱,因为工具通常建立在食谱之上,然后在各种设置中进行测试并修复,而食谱通常适用于某人、某处、某时。

所以我正在寻找的是一个像sslscan这样的命令行工具,我可以在我的所有服务器上运行它,而不管它们在整个 Internet 上的可用性如何。(是的,我意识到 sslscan 会打印出密码,我可以解释这些密码以确定 BEAST 漏洞 - 但我想要一个专家(或只是知识渊博!)系统,它比我查看输出并拨打电话更不容易出错)。

1个回答

编辑(2012 年 9 月 23 日): 询问,您将收到TestSSLServer是我这个周末写的一个简单的命令行工具;它从给定的 SSL/TLS 服务器获取支持的密码套件、协议版本和对 TLS 级别 Deflate 的支持的列表。然后,它总结了加密强度以及对 BEAST 和 CRIME 攻击的脆弱性。它是用 Java 编写的,应该可以“在任何地方”工作(不过,我只从 Linux/ppc 客户端对其进行了测试)。

(请注意,BEAST 和 CRIME 针对的是客户端,而不是服务器。我们在这里讨论的是服务器可以采取哪些步骤来“保护”客户端,不允许它使用易受攻击的功能组合。)


原始回复:

对于压缩,有两个地方可以激活它;您链接到的博客文章谈论了错误的地方,CRIME 攻击与此无关

CRIME 使用 SSL/TLS 级别的压缩:握手期间协商的压缩,适用于 SSL/TLS 隧道内发送的每个字节。在 HTTPS 上下文中,此压缩对 HTTP 请求/响应正文和 HTTP标头(包括 cookie,这是犯罪的重点)都进行。在HTTP级别发生的压缩是使用HTTP标头(如“Accept-Encoding”)指定的压缩,它仅适用于请求/响应主体压缩不涵盖 cookie(位于标头中),因此可能是无犯罪的。

(这并不排除理论上存在类似 CRIME 的攻击,该攻击在主体上滥用 HTTP 级压缩,但它需要一个包含机密数据和攻击者可以选择的数据的请求或响应主体。)

要测试服务器的压缩支持,请使用:

openssl s_client -connect www.theservername.com:443

这将产生一些包含服务器证书的输出,并以如下所示的文本块结束:

---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 4B4110C44117BA0382CA6C3903A8185E0C156B253073E66B2D44F04B83611633
    Session-ID-ctx: 
    Master-Key: C11D38EE064BE6549364D54BD60E216E367A52825E62FFCCBEFC4AC8DB97D07BD72B7355CB268B91E3AD176EB69446AA
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 4c f8 be c1 d1 0f cf 03-4a 99 89 8b 75 28 97 3c   L.......J...u(.<
    0010 - 3e cf 2a b8 0f f0 d1 b4-7d c7 83 16 03 2c f0 8a   >.*.....}....,..
    0020 - 1b a7 57 be dd 1b be a3-14 eb cf 34 42 99 e0 5a   ..W........4B..Z
    0030 - c5 96 43 da c7 d9 dd da-ed 4c e2 7c eb c1 8b a8   ..C......L.|....
    0040 - ce 73 c8 22 43 10 88 d6-d2 f2 df 91 9d 47 71 70   .s."C........Gqp
    0050 - 77 bb c0 55 cd 46 34 3b-44 26 36 a1 7f 37 64 cd   w..U.F4;D&6..7d.
    0060 - 72 64 66 89 cc f6 8b 23-17 9b 9a 91 23 6a f7 c2   rdf....#....#j..
    0070 - 8a e2 8c 10 85 8f b7 6c-60 d2 b6 72 b3 13 98 8b   .......l`..r....
    0080 - 75 da 68 cc 2a ca 4f fb-ec 4c f2 db 91 4a f7 2a   u.h.*.O..L...J.*
    0090 - 40 eb 92 44 c7 7a f7 84-ef 65 ea 2c 96 aa c5 ba   @..D.z...e.,....
    00a0 - c3 b5 76 6d 52 03 85 c9-27 53 a2 a4 70 54 06 37   ..vmR...'S..pT.7
    00b0 - 82 3e 09 93 21 6d f6 e7-eb cf c3 5e 26 19 e1 a2   .>..!m.....^&...

    Compression: 1 (zlib compression)
    Start Time: 1348073749
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

这是在支持 TLS 级别压缩的服务器上完成的。您在三个地方看到“ zlib compression”: 此服务器确实支持 Deflate 压缩。请注意,任何地方都没有 HTTP 标头的单一标志!只需键入openssl命令,然后查看输出。无需输入 HTTP 标头。

在不支持 TLS 级别压缩的服务器上,情况如下所示:

---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : ECDHE-RSA-RC4-SHA
    Session-ID: 59D609F13BEE9157D26318ADB12F4CF219EF7A1BC2C87AF84AD66773303F90A6
    Session-ID-ctx: 
    Master-Key: 1DD9E0C306A86A7EC823561EF0B1F47B63E70B43D57F3B3FBB3D389863F540E3B4CCE5DE454E6D19811C24001E95777A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - de c6 06 25 10 c9 22 38-c4 1f 82 d7 c7 b5 62 08   ...%.."8......b.
    0010 - 01 c0 e1 26 e2 64 8a 62-99 74 85 bb 60 bf a8 e0   ...&.d.b.t..`...
    0020 - 65 08 74 89 d5 62 45 e9-b4 f0 80 4e f7 bd ff d5   e.t..bE....N....
    0030 - 6a 12 3b 90 97 ca 7a f4-d1 1b e1 0d 89 d2 52 49   j.;...z.......RI
    0040 - 11 fe 92 82 94 70 ba 4b-5e 81 ff f2 12 62 f4 79   .....p.K^....b.y
    0050 - 11 eb 74 7a d6 ee 10 4e-b5 6d 50 8d 1c 1c 8e 57   ..tz...N.mP....W
    0060 - 19 46 67 91 89 2e 45 28-2e 49 94 8e c8 32 28 bf   .Fg...E(.I...2(.
    0070 - 7b 73 82 ab 63 c4 b7 8f-5c b3 1b 5c 74 59 3c 8d   {s..c...\..\tY<.
    0080 - ec 8a 6a 3a 28 c2 82 c1-d7 d5 4f ec 7e 79 e7 57   ..j:(.....O.~y.W
    0090 - 4a f9 45 e7                                       J.E.

    Start Time: 1348074257
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

" Compression: NONE" 表明第二台服务器确实拒绝使用 TLS 级别的压缩。

另请注意,第一个服务器选择DHE-RSA-AES256-SHA作为密码套件,即在 CBC 模式下使用分组密码 AES 的套件。然后,这第一台服务器可能容易受到 BEAST 和 CRIME 的攻击。选择的第二个服务器ECDHE-RSA-RC4-SHA是 BEAST-immune。

(第一台服务器是我的;因为我根本不使用 cookie,所以我对 cookie 窃取攻击并不紧张。第二台服务器是www.google.com。)

如果我有时间,我会写一个更容易给出这样结果的工具。无需进行完整的 SSL/TLS 握手,只需发送 ClientHello 并查看返回的 ServerHello。