使用tcpdump过滤SSL数据包

4

我需要使用tcpdump过滤掉所有的SSL数据包。我知道只有第一个数据包可以被识别为SSL数据包。是否可能匹配第一个数据包,然后过滤掉其余的SSL数据流?


那么你是想仅匹配第一个数据包,还是基于第一个数据包来捕获所有其他的数据包? - Corbin
不,我想过滤掉所有的SSL数据包。 - Pass
1
你不能使用 HTTPS 端口吗? - Some programmer dude
Wireshark有一个出色的“跟踪流”按钮,当您单击流中的数据包之一时,它将轻松显示一个流,但我认为它会在离线状态下进行所有这些处理。 - sarnold
是的,这是一个很棒的Wireshark功能,但我需要从tcpdump中实现它。换句话说,我需要以编程方式获取此信息。 - Pass
2个回答

2
你也可以在tcpdump中过滤tcp流,这个网站解释了如何使用tcpdump,希望能对你有所帮助:tcpdump.org/tcpdump_man.html。你需要稍微调整一下,但它应该能正常工作。此外,还有一个专门的SSL_DUMP实用程序

0

可以的。您可以按照以下命令过滤SSL流量的第一个数据包:

方法1

[root@arif]# tcpdump -i eth0 src host 192.168.0.2 and dst host 40.113.200.201 and dst port 443 -c 1

在这里,

  • -i:用于指定接口
  • src host:是您本地主机的IP地址
  • dst host:是您目标主机的IP地址
  • dst port:是SSL服务提供的目标端口。您可以根据自己的配置更改默认(443)端口。
  • -c:用于在接收到指定数量的数据包后退出tcpdump

-c标志是过滤的主要组成部分,因为该标志告诉tcpdump在特定数据包计数后退出。在这里,我使用了1来捕获第一个数据包后退出tcpdump

方法2

上述解决方案仅在每次启动tcpdump时才起作用。如果您想过滤每个SSL流的第一个数据包,则请按照以下命令操作:

[root@arif]# tcpdump -li eth0 src host 192.168.0.2 and dst host 40.113.200.201 and port 443 and tcp[13] == 2

其中,

  • l : "使标准输出行缓冲。如果您想在捕获数据时查看数据,则此选项非常有用。" 这将帮助您使用 grep/tee/awk 命令来处理输出。

  • src host dst host : 如果您不想指定源和目的地 IP,则可以忽略这些过滤器。

  • tcp[13] == 2TCP 报头的第 13 个八位字节中用于设置标志。要设置 SYN 位,使用二进制组合 0 0 0 0 0 0 1 0(请参阅下面的图表),其十进制值为 2。因此,这将帮助您仅过滤出 SSL 流的第一个数据包,即 SYN 数据包。

 |C|E|U|A|P|R|S|F|
 |---------------|
 |0 0 0 0 0 0 1 0|
 |---------------|

所以上述配置应该适用于大多数情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接