ssl 应该使用什么过滤器来过滤TLS 1.3客户端hello?

f45qwnt8  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(139)

当前使用(tcp[tcp[12]/16*4]=22 and tcp[tcp[12]/16*4+5]=1),其中=22表示握手,=1表示TLS 1.2/1.3数据包的客户端hello。
由于上面的过滤器将流量分配给TLS 1.2和1.3,因此我并没有真正找到区分TLS 1.3或TLS 1.2客户端hello流量的方法/技术。

zysjyyx4

zysjyyx41#

TLS 1.3支持是在supported_versions TLS扩展中宣布的。在ClientHello中没有明确的偏移量,也就是说,需要正确解析ClientHello结构。这对于pcap过滤规则是不可行的。

wwodge7n

wwodge7n2#

正如Steffen提到的,TLS 1.3在Client Hello中的扩展中协商,并由服务器在Server Hello中的相同扩展中确认:

要在此扩展中筛选0x0304,您将使用此显示筛选器
tls.handshake.extensions.supported_version == 0x0304
这将捕获任何带有TLS 1.3十六进制代码0x0304的客户端Hello或服务器Hello。
但是要小心...仅仅因为客户端 * 建议 * TLS 1.3并不意味着服务器会接受...服务器很可能选择继续TLS 1.2握手。
在这种情况下,确定地找到每个实际TLS 1.3协商会话的最佳方法是将上述显示过滤器与另一个仅匹配服务器Hello的过滤器组合:
(tls.handshake.extensions.supported_version == 0x0304) && (tls.handshake.type == 2)
当然,这只会显示用于确认TLS 1.3会话的服务器Hello,而不会显示整个TLS 1.3会话(如TLS握手中的其他记录,或应用程序数据的交换等)。

相关问题