4

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

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

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

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

在此处输入图像描述

4

1 回答 1

1

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

当前为 2020-10-05(Wireshark 可能会在某个时候添加此内容)

线鲨

在 Wireshark 中,您可以通过右键单击流中的数据包然后添加&& tls以仅查看流中的 TLSv1.3 数据包(tcp 数据包将显示在流中)来跟踪此 TLSv1.3 流。总之,这应该是类似的东西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"

在这里,我们

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

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

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

于 2020-09-30T08:21:48.030 回答