【问题标题】:How to distinguish between different type of packets in the same HTTPS traffic?如何区分同一HTTPS流量中不同类型的数据包?
【发布时间】:2016-01-06 07:03:37
【问题描述】:

有件事让我很困扰:我想区分来自 Youtube 的数据包和来自 Wikipedia 的数据包:它们都通过 HTTPS 传输,并且都来自端口 443。

由于它们使用 HTTPS 传输,因此它们的有效负载无法理解,并且我无法进行完整的深度数据包检查:我只能查看以太网、IP 和 TCP 结构标头。我可能会查看两个数据包的 IP 地址来源,看看它们实际来自哪里,但要知道它们来自 Youtube 还是 Wikipedia,我应该已经知道这两个站点的 IP 地址。

我试图找出一种方法来从 HTTP 流(就像 Youtube 一样)和简单的 HTML 传输(维基百科)中分辨出来,而无需调查有效负载。

编辑 1:在再现视频期间开始的 Wireshark 会话中,我收到了大量的数据包。也许我应该开始查看来自同一地址的数据包之间的超时时间。

【问题讨论】:

  • 可能想看Network Characteristics of Video Streaming Traffic(研究论文,PDF格式)
  • 抱歉,已修复(我在 () 中使用了 . 而不是之后。)
  • 谢谢,我会看的。
  • @Mark Plotnick,虽然这篇论文基本上是正确的,但它并没有说明一些相当基本的事实。首先,每单位甚至每时间段的数据量远非恒定不变。这将取决于帧改变屏幕内容的速度。几个人坐着说话的新闻广播在摄像机角度不变的情况下会有非常高的压缩率,当摄像机角度改变或他们去现场的某个人时,压缩率会很高。体育和卡通片的单位时间数据速率更一致,但卡通片的数据量比体育节目少。

标签: c tcp https wireshark libpcap


【解决方案1】:

您可以考虑查看服务器证书。它会告诉你它是 youtube (google) 还是 facebook。

这会让您知道 SSL 连接是连接到 youtube,还是连接到 facebook。

【讨论】:

    【解决方案2】:

    您可以尝试查看 TCP 标头选项,但通常出于某种原因对流量进行加密...这样中间人就不会看到它。如果可能的话,根据定义,这将是一个糟糕的加密标准。由于您拥有捕获和所有用户代理已知的信息,因此您不是“中间人”。但是您需要使用用户代理信息进行解密,然后才能真正看到流内部。

    【讨论】:

    • 我会看一下 TCP 标头选项,也许它们包含有关区分流中涉及的数据包与其他数据包的某些功能的信息。
    【解决方案3】:

    此链接:Reverse ip, find domain names on ip address

    表示几种方法。

    建议在 C 程序中运行 nslookup on the IP

    记住地址/ip 值可以嵌套在数据包的数据中,它可能(可能会)对数据包数据进行一些调查以到达数据包的发起者

    【讨论】:

    • 这不是一个好的方法(好吧,可以用于 google 或 youtube,但不是一般情况下),因为通常 ISP 使用 http 的虚拟主机功能在同一主机上安装不同的网络提供商。从 ip 流量中,除了 ip 地址和端口号,您什么也得不到。其他所有内容均已加密。
    【解决方案4】:

    嗯,你遇到了一个难题。如何获取信息 当用户明确加密信息以获得匿名性时,他们正在与他们的服务器进行交互。快速反应是你不能。但只有当您能够穿透 SSL 连接时,您才会获得更多信息。

    即使是在服务器和客户端之间交换的 SSL 证书也无济于事,因为它只识别服务器(而不是您将在此连接后尝试的虚拟主机),以及多个 SSL 服务器(具有已知功能作为 HTTP 虚拟主机)多个服务器可以在同一地址的同一端口上侦听连接。

    SSL 参数是在连接后立即协商的,通常使用请求的Host http 头字段选择虚拟服务器(请参阅 RFC-2616),但这些在 SSL 协商完成后出现,所以你不要可以访问它们。

    唯一可以确定的是,尝试通过这种流量表现出的数量和连接模式来识别 youtube 的连接。

    【讨论】:

    • 某种启发式分析?我可以将来自/去往 Youtube 的数据包地址与属于 Google Inc. 的 IP 地址列表进行比较(检查 AS15169)。或者我可能会计算来自 Google IP 地址的数据包,如果我收到大量 TCP ACKed 数据包,则可能存在视频缓冲。我认为缓冲的 Youtube 视频会比简单的 Google 查询发送给我更多的数据包,对吧?
    • 不,TCP ACK 在 TCP 流量中埋得太深了。视频流可以在 TCP 上完成,因为您不需要快速响应时间,因此您甚至可以花费几分钟来填充缓冲区,以确保有足够的缓冲区空间在播放期间不会中断它。视频下载中的 ACK 不会比正常文件下载中的多。但如果你愿意,这可以是一个你可以测试的模式。这是您唯一可以做的事情,因为您无法访问连接的内部。
    【解决方案5】:

    如果您只是对 Wireshark 中的数据流感兴趣,可以使用 TCP 流索引,过滤器类似于 tcp.stream == 12

    流索引从 0 开始,wireshark 遇到的第一个流,并为每个新流递增(持久连接)。

    因此,相同 IP 之间的两个不同流将具有两个不同的数字。例如,同一 IP 地址之间的视频流可能是 12,而音频流可能是 13。

    如果您在启动流之前开始捕获,您将能够看到设置 SSL 连接的原始流量(其中大部分是明文)

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多