
PCAPs und Suricata-Signaturen zur Erkennung von Exploit-Versuchen gegen OpenSSL CVE-2022-3602, einschließlich bösartigem Client-/Server-Verkehr und legitimen Punycode-Zertifikatsbeispielen.
PCAPs oder es ist nicht passiert
Im Zuge der kürzlich offengelegten Schwachstelle in OpenSSL v3.0 bis v3.0.6 (CVE-2022-3602) haben wir untersucht, wie ein Exploit-Versuch „auf der Leitung" aussieht. Dieses Repository enthält PCAPs verschiedener Exploit-Szenarien sowie Erkennungsregeln für Suricata.
Ebenfalls enthalten ist eine PCAP mit dem Austausch eines legitimen Zertifikats mit einer punycode-kodierten E-Mail-Adresse im Subject Alternative Name. Wir haben diese PCAP verwendet, um zu testen, ob Regeln keine Fehlalarme bei Zertifikaten auslösen, die nur einen kurzen Subject Alternative Name haben, anstatt eines sehr langen, den wir bei einem Exploit-Versuch erwarten würden.
Wir haben die folgenden Ressourcen verwendet, um PCAP-Dateien mit Verkehr zu erstellen, der den OpenSSL-CVE-2022-3602-Bug auslöst:
| PCAP | Beschreibung |
|---|
| spookyssl-windowscrash.pcap | Erstellt mit dem Windows-Crash-PoC von DataDog |
| spookyssl-malicious_client.pcap | Erstellt mit dem malicious_client-PoC von DataDog |
| spookyssl-malicious_server.pcap | Erstellt mit dem malicious_server-PoC von DataDog |
| not-spookyssl-certificate.pcap | Legitimes Punycode-Zertifikat (nicht bösartig) |
Die folgende Suricata-Signatur wurde geschrieben, um den OpenSSL-CVE-2022-3602-Bug zu erkennen:
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;)
Zur Aufschlüsselung der Content-Matches:
|2b 06 01 05 05 07 08 09| -- Erkennt die type-id: 1.3.6.1.5.5.7.8.9 (id-pkix.8.9) (id-on-SmtpUTF8Mailbox)|06 03 55 1d 1e| -- Erkennt Extension Id: 2.5.29.30 (id-ce-nameConstraints) (nameConstraints-Erweiterung)"xn--" -- Erkennt Punycode, in Kombination mit der Größe des Punycode-Werts mithilfe eines byte_test-Schlüsselworts:
byte_test:2,>=,500,-6,relative;Wir prüfen außerdem explizit auf kleine Punycode-Werte; in diesem Fall sollte die Signatur nicht auslösen, mithilfe von:
content:!"|81|"; distance:-6; within:1;Die Netzwerksignaturen funktionieren nicht für Sitzungen mit TLSv1.3, da die Zertifikate dort verschlüsselt sind.
Sie können auch ein Reset-Paket in der spookyssl-windowscrash.pcap sehen, da der Client abstürzt.
