
PCAP-файлы и сигнатуры Suricata для обнаружения попыток эксплуатации OpenSSL CVE-2022-3602, включая вредоносный клиентский/серверный трафик и примеры легитимных punycode-сертификатов.
PCAP или этого не было
В связи с недавно раскрытой уязвимостью в OpenSSL v3.0 – v3.0.6 (CVE-2022-3602), мы изучили, как попытка эксплуатации выглядит «на проводе». Этот репозиторий содержит PCAP-файлы различных сценариев эксплуатации, а также правила обнаружения для Suricata.
Также включён PCAP-файл с обменом легитимным сертификатом, содержащим электронный адрес в punycode-кодировке в поле subject alternative name. Мы использовали этот PCAP для проверки того, что правила не вызывают ложных срабатываний на сертификаты с коротким subject alternative name, а не с очень длинным, который ожидается при попытке эксплуатации.
Для создания PCAP-файлов с трафиком, вызывающим ошибку OpenSSL CVE-2022-3602, мы использовали следующие ресурсы:
| PCAP | Описание |
|---|
| spookyssl-windowscrash.pcap | Создан с использованием PoC Windows Crash от DataDog |
| spookyssl-malicious_client.pcap | Создан с использованием PoC malicious_client от DataDog |
| spookyssl-malicious_server.pcap | Создан с использованием PoC malicious_server от DataDog |
| 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 в сочетании с размером значения punycode с помощью ключевого слова byte_test:
byte_test:2,>=,500,-6,relative;Мы также явно проверяем небольшие значения punycode; в этом случае сигнатура не должна срабатывать, используя:
content:!"|81|"; distance:-6; within:1;Сетевые сигнатуры не будут работать для сеансов, использующих TLSv1.3, поскольку сертификаты в этом случае зашифрованы.
Вы также можете увидеть пакет сброса (reset) в spookyssl-windowscrash.pcap из-за сбоя клиента.
