没有 PCAP 就等于没发生过
在最近披露的 OpenSSL v3.0 至 v3.0.6 漏洞(CVE-2022-3602)之后,我们研究了利用尝试在“网络上”是如何呈现的。本仓库包含各种利用场景的 PCAP 文件,以及 Suricata 的检测规则。
此外还包含一个 PCAP,其中包含一个合法证书的交换过程,该证书的主题备用名称中包含一个 punycode 编码的电子邮件地址。我们使用此 PCAP 来测试规则是否不会对仅包含较短主题备用名称的证书产生误报,而不是我们在利用尝试中预期的那种非常长的名称。
我们使用了以下资源来创建包含触发 OpenSSL CVE-2022-3602 漏洞的流量的 PCAP 文件:
| PCAP | 描述 |
|---|---|
| spookyssl-windowscrash.pcap | 使用 DataDog 的 Windows Crash PoC 创建 |
| spookyssl-malicious_client.pcap | 使用 DataDog 的 malicious_client PoC 创建 |
| spookyssl-malicious_server.pcap | 使用 DataDog 的 malicious_server PoC 创建 |
| not-spookyssl-certificate.pcap | 合法的 punycode 证书(非恶意) |
以下 Suricata 签名旨在检测 OpenSSL CVE-2022-3602 漏洞:
alert tls any any -> any any (msg:"FOX-SRT - Exploit - Possible SpookySSL Certificate Observed (CVE-2022-3602)"; \
flow:established; \
content:"|2b 06 01 05 05 07 08 09|"; fast_pattern; \
content:"|06 03 55 1d 1e|"; content:"xn--"; \
content:!"|81|"; distance:-6; within:1; byte_test:2,>=,500,-6,relative; \
classtype:attempted-user; threshold:type limit,track by_src,count 1,seconds 3600; \
reference:url,www.openssl.org/news/secadv/20221101.txt; \
reference:url,https://github.com/fox-it/spookyssl-pcaps; \
metadata:ids suricata; \
metadata:created_at 2022-11-02; sid:21004268; rev:3;)
内容匹配的分解说明:
|2b 06 01 05 05 07 08 09| -- 检测 type-id: 1.3.6.1.5.5.7.8.9 (id-pkix.8.9)(id-on-SmtpUTF8Mailbox)|06 03 55 1d 1e| -- 检测 Extension Id: 2.5.29.30 (id-ce-nameConstraints)(nameConstraints 扩展)"xn--" -- 检测 punycode,并结合 byte_test 关键字检查 punycode 值的大小:
byte_test:2,>=,500,-6,relative;我们还显式检查较小的 punycode 值,在这种情况下签名不应触发,使用:
content:!"|81|"; distance:-6; within:1;网络签名不适用于使用 TLSv1.3 的会话,因为证书在该协议下是加密的。
您还可以在 spookyssl-windowscrash.pcap 中看到由于客户端崩溃而产生的重置数据包。
