
PCAP 및 OpenSSL CVE-2022-3602 악용 시도 탐지를 위한 Suricata 시그니처로, 악성 클라이언트/서버 트래픽과 정상적인 퓨니코드 인증서 예시를 포함합니다.
PCAP이 없으면 일어난 일이 아니다
최근 공개된 OpenSSL v3.0 ~ v3.0.6의 취약점(CVE-2022-3602) 이후, 우리는 악용 시도가 '네트워크 상'에서 어떻게 나타나는지 조사했습니다. 이 저장소에는 다양한 악용 시나리오의 PCAP과 Suricata용 탐지 규칙이 포함되어 있습니다.
또한 subject alternative name에 punycode로 인코딩된 이메일 주소가 포함된 합법적인 인증서의 교환을 담은 PCAP도 포함되어 있습니다. 우리는 이 pcap을 사용하여 규칙이 악용 시도에서 예상되는 매우 긴 subject alternative name 대신 짧은 subject alternative name만 가진 인증서에 대해 오탐을 발생시키지 않는지 테스트했습니다.
우리는 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 인증서 (악성 아님) |
OpenSSL CVE-2022-3602 버그를 탐지하기 위해 다음과 같은 Suricata 시그니처가 작성되었습니다:
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에서 클라이언트 충돌로 인한 리셋 패킷을 확인할 수도 있습니다.
