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_helloserver_helloclient_keyxserver_keyxunknown .可以用指定多个状态 | (或)检查任何指定状态。

尚未提供否定支持,请参阅https://redmine.openinfosecefoundation.org/issues/1231