【问题标题】:Capture only ssl handshake with tcpdump [closed]使用 tcpdump 仅捕获 ssl 握手 [关闭]
【发布时间】:2021-04-24 13:25:19
【问题描述】:

我有一个服务器,许多客户端使用 SSL 连接到该服务器。最近我在服务器日志中观察到 SSL 握手错误(例如 SSL MAC 错误)。错误本身并不重要,但我想看看为什么一些客户端能够连接而其他客户端失败,并且还需要确定哪些客户端失败。

为了调试此问题,我想捕获服务器上发生的所有 SSL 握手,因为我不知道有问题的客户端何时连接,所以我不想捕获所有流量,直到发生这种情况。我只想捕获所有 SSL 握手,然后用 Wireshark 分析它们。假设我只能访问 tcpdump 而没有其他捕获工具。

【问题讨论】:

  • 你可以在 tcpdump 中提及 SSL 端口进行捕获不是吗?
  • @Prabhu 是的,但它会捕获该端口的所有数据。我只想捕获数据,直到每个请求的 SSL/TLS 握手完成。

标签: ssl networking tcp tcpdump


【解决方案1】:

如果你也想抢SQL Server encryption那么你也需要看+8。

tcp[((tcp[12] & 0xf0) >> 2)] = 0x16  or (tcp port 1433 and tcp[((tcp[12] & 0xf0) >> 2) + 8] = 0x16)

【讨论】:

    【解决方案2】:

    我认为公认的答案是过早的优化和脆弱的解决方案。

    SSL 握手会在连接建立后立即进行。

    简单的方法:在客户端连接到远程主机之前开始捕获,并捕获第一个完整的N个数据包。

    例如,对于 300 个数据包:

    /usr/sbin/tcpdump -i eth0 -p -s 65535 -c 300 "tcp and host 1.2.3.4 and port 443"

    这样,wireshark 拥有 SSL 握手的完整有效负载,可以对其进行解码并向您显示所有位。

    【讨论】:

      【解决方案3】:

      我不知道你到底在调用什么握手,但我建议这个命令可能会捕获超过 95% 的你想要的东西:

      tcpdump -ni eth0 "tcp port 443 and (tcp[((tcp[12] & 0xf0) >> 2)] = 0x16)"
      

      现在它做了什么:

      • eth0:是我的网络接口,如果需要可以更改
      • tcp 端口 443:我想这是您的服务器正在侦听的端口,如果需要,请更改它
      • tcp[((tcp[12] & 0xf0) >> 2)] = 0x16:有点棘手,下面详细介绍一下

      tcp[12] 表示捕获tcp数据包的第13个字节,对应前半部分为偏移量,后半部分为保留。 偏移量乘以 4 后得到 TCP 标头的字节数,这意味着((tcp[12] & 0xf0) >> 2) 提供了 TCP 标头的大小。

      TLS 数据包的第一个字节定义内容类型。值 22(十六进制的 0x16)已被定义为“握手”内容。

      因此,tcp[((tcp[12] & 0xf0) >> 2)] = 0x16 捕获 TCP 标头后第一个字节设置为 0x16 的每个数据包。

      可以执行更多过滤,但这严格回答了您的问题。

      【讨论】:

      • 握手,是指在建立 SSL 连接时使用的数据包。这些是对应于“ClientHello”、“ServerHello”、“Certificate”等的数据包,直到通信的“ApplicationData”部分。
      • 是的,它仅在握手期间捕获数据包。但是当我在 Wireshark 中打开生成的文件时,它只显示 TCP 数据包并且无法完全重建 SSL 消息(例如 ClientHello)。这可能是因为这个过滤器正在删除一些数据包吗?
      • 可能是的。在我的测试中,Wireshark 自动将数据包解码为 TLSv1.2,但如果您在 TCP 级别截断了数据包,您将无法重建完整的握手。我猜你不能只使用 tcpdump 解决这个问题。
      • 如果上面的过滤器没有匹配到任何数据包,你可能在一个 vlan'd 环境中。将 "(tcp[((tcp[12] & 0xf0) >> 2)] = 0x16)" 扩展为 "vlan and (tcp..." 以在该环境中捕获。
      • 我遇到了同样的问题,wireshark 无法将 tcp 流量解释为 TLS/SSL。我按照建议 [ask.wireshark.org/questions/34075/… 解决了这个问题,因为我在非标准 ssl 端口上捕获流量。
      猜你喜欢
      • 2012-10-20
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2016-09-24
      相关资源
      最近更新 更多