6.16. ssl/tls关键字¶
Suricata提供了几个规则关键字来匹配tls/ssl握手的各种属性。匹配项是字符串包含匹配项。
6.16.1. tls.cert_subject¶
匹配TLS/SSL证书主题字段。
实例:
tls.cert_subject; content:"CN=*.googleusercontent.com"; isdataat:!1,relative;
tls.cert_subject; content:"google.com"; nocase; pcre:"/google\.com$/";
tls.cert_subject
是“粘性缓冲区”。
tls.cert_subject
可用作 fast_pattern
.
tls.cert_subject
替换以前的关键字名称: tls_cert_subject
.您可以继续使用以前的名称,但建议将规则转换为使用新名称。
6.16.2. tls.cert_issuer¶
匹配TLS/SSL证书颁发者字段。
实例:
tls.cert_issuer; content:"WoSign"; nocase; isdataat:!1,relative;
tls.cert_issuer; content:"StartCom"; nocase; pcre:"/StartCom$/";
tls.cert_issuer
是“粘性缓冲区”。
tls.cert_issuer
可用作 fast_pattern
.
tls.cert_issuer
替换以前的关键字名称: tls_cert_issuer
.您可以继续使用以前的名称,但建议将规则转换为使用新名称。
6.16.3. tls.cert_serial¶
匹配证书中的序列号。
例子::
alert tls any any -> any any (msg:"match cert serial"; \
tls.cert_serial; content:"5C:19:B7:B1:32:3B:1C:A1"; sid:200012;)
tls.cert_serial
是“粘性缓冲区”。
tls.cert_serial
可用作 fast_pattern
.
tls.cert_serial
替换以前的关键字名称: tls_cert_serial
.您可以继续使用以前的名称,但建议将规则转换为使用新名称。
6.16.4. tls.cert_fingerprint¶
匹配证书的sha-1指纹。
例子::
alert tls any any -> any any (msg:"match cert fingerprint"; \
tls.cert_fingerprint; \
content:"4a:a3:66:76:82:cb:6b:23:bb:c3:58:47:23:a4:63:a7:78:a4:a1:18"; \
sid:200023;)
tls.cert_fingerprint
是“粘性缓冲区”。
tls.cert_fingerprint
可用作 fast_pattern
.
tls.cert_fingerprint
替换以前的关键字名称: tls_cert_fingerprint
可以继续使用以前的名称,但建议将规则转换为使用新名称。
6.16.5. tls.sni¶
匹配tls/ssl服务器名称指示字段。
实例:
tls.sni; content:"oisf.net"; nocase; isdataat:!1,relative;
tls.sni; content:"oisf.net"; nocase; pcre:"/oisf.net$/";
tls.sni
是“粘性缓冲区”。
tls.sni
可用作 fast_pattern
.
tls.sni
替换以前的关键字名称: tls_sni
.您可以继续使用以前的名称,但建议将规则转换为使用新名称。
6.16.6. tls_cert_notbefore¶
在证书的notbefore字段上匹配。
例子::
alert tls any any -> any any (msg:"match cert NotBefore"; \
tls_cert_notbefore:1998-05-01<>2008-05-01; sid:200005;)
6.16.7. tls_cert_notafter¶
在证书的notafter字段上匹配。
例子::
alert tls any any -> any any (msg:"match cert NotAfter"; \
tls_cert_notafter:>2015; sid:200006;)
6.16.8. tls_cert_expired¶
如果证书过期,match返回true。它从证书评估有效日期。
用法:
tls_cert_expired;
6.16.9. tls_cert_valid¶
如果证书未过期,match返回true。它只评估有效日期。是的。 not 进行证书链验证。它与 tls_cert_expired
.
用法:
tls_cert_valid;
6.16.10. tls.certs¶
对TLS证书链中的每个证书执行“原始”匹配。
例子::
alert tls any any -> any any (msg:"match bytes in TLS cert"; tls.certs; \
content:"|06 09 2a 86|"; sid:200070;)
tls.certs
是“粘性缓冲区”。
tls.certs
可用作 fast_pattern
.
6.16.11. tls.version¶
匹配协商的TLS/SSL版本。
支持值:“1.0”、“1.1”、“1.2”、“1.3”
也可以使用十六进制字符串来匹配版本。
实例:
tls.version:1.2;
tls.version:0x7f12;
第一个示例与tlsv1.2匹配,而最后一个示例与tlsv1.3草稿16匹配。
6.16.12. ssl_version¶
匹配ssl/tls记录的版本。
支持值“sslv2”、“sslv3”、“tls1.0”、“tls1.1”、“tls1.2”、“tls1.3”
例子::
alert tls any any -> any any (msg:"match TLSv1.2"; \
ssl_version:tls1.2; sid:200030;)
也可以同时在多个版本上进行匹配。
例子::
alert tls any any -> any any (msg:"match SSLv2 and SSLv3"; \
ssl_version:sslv2,sslv3; sid:200031;)
6.16.13. tls.subject¶
匹配TLS/SSL证书主题字段。
例子:
tls.subject:"CN=*.googleusercontent.com"
区分大小写,不能使用'nocase'。
旧关键字。 tls.cert_subject
是替代品。
6.16.14. tls.issuerdn¶
匹配tls/ssl证书颁发者DN字段
例子:
tls.issuerdn:!"CN=Google-Internet-Authority"
区分大小写,不能使用'nocase'。
旧关键字。 tls.cert_issuer
是替代品。
6.16.15. tls.fingerprint¶
匹配TLS/SSL证书sha1指纹
例子:
tls.fingerprint:!"f3:40:21:48:70:2c:31:bc:b5:aa:22:ad:63:d6:bc:2e:b3:46:e2:5a"
区分大小写,不能使用'nocase'。
tls.fingerprint缓冲区为小写,因此必须使用小写字母进行匹配。
6.16.16. tls.store¶
在磁盘上存储TLS/SSL证书
6.16.17. ssl_state¶
这个 ssl_state
关键字与SSL连接的状态匹配。可能的状态是 client_hello
, server_hello
, client_keyx
, server_keyx
和 unknown
.可以用指定多个状态 |
(或)检查任何指定状态。
尚未提供否定支持,请参阅https://redmine.openinfosecefoundation.org/issues/1231