在 Wireshark 中过滤 TLS 1.3 流量

fx2*_*x23 9 wireshark tls1.3

有没有一种简单的方法可以在 Wireshark 中过滤 TLS 1.3 数据包?

tls.record.version不起作用,因为它通常包含值0x0303(TLS 1.2)。

我假设 Wireshark 通过查看 ServerHello 消息中的 SupportedVersions 扩展来识别 TLS 1.3,如果版本是0x0304(TLS 1.3),它可能会将该协议应用于整个 TLS 流。

TLSv1.3显示在“协议”列中,但我不确定应用哪个显示过滤器来过滤这些数据包。

在此输入图像描述

Ros*_*obs 3

鉴于 TLSv1.3 出于兼容性原因尝试伪装成 TLSv1.2,因此没有针对 TLSv1.3 的简单过滤器。

当前截至 2020 年 10 月 5 日(Wireshark 可能会在某个时候添加此内容)

Wireshark

在 Wireshark 中,您可以通过右键单击流中的数据包然后添加来跟踪此 TLSv1.3 流,以&& tls仅查看流中的 TLSv1.3 数据包(tcp 数据包将显示在流中)。总的来说,这应该是类似的tcp stream eq 0 && tls

正在关注流

沙克

您可以使用以下 bash 脚本轻松找到此显示过滤器:

#!/bin/bash
filename=YOUR_PCAP.pcap
tcp_streams="$(tshark -r $filename -T fields -e tcp.stream \
  -Y 'tls.handshake.extensions.supported_version == 0x0304' | sort | uniq)"

display_filter="tls && ("
first_stream="true"
for s in $tcp_streams; do
  if [ $first_stream == "true" ]; then
    first_stream="false"
  else
    display_filter+=" || "
  fi
  display_filter+="tcp.stream eq $s"
done

display_filter+=")"
printf "Display filter for TLSv1.3:\n$display_filter\n"
Run Code Online (Sandbox Code Playgroud)

在这里,我们

  • 获取 TLSv1.3 流编号的排序列表
  • 迭代这些流,以便显示过滤器看起来像
    tls && ($stream1 || $stream 2 || ...)

使用 Lua 创建您自己的显示过滤器

根据Wireshark 论坛上提出的相同问题,有一个lua 脚本可以执行与此 bash 脚本相同的跑腿工作。这是 Wireshark 文档的一部分,作为示例代码提供,您可以根据需要进行修改。