【问题标题】:packet sniffer - trace back to where content originated数据包嗅探器 - 追溯内容的来源
【发布时间】:2013-03-21 21:17:44
【问题描述】:

我使用sniffex.c 作为我的起点,我花了几个月的时间来让数据包嗅探器按照我想要的方式工作。它是一个很好的工具,可以提供进出我网络上每台计算机的流量摘要,但我发现自己想要更多关于入站流量来源的信息。如果我对样本入站数据包的 src_ip 进行 whois,大多数时候我会获得有关 Qwest Communications Company, LLC 或 AKAMAI TECHNOLOGIES INC 拥有的主机的信息,这并不能真正为我提供我感兴趣的信息.

此时我有兴趣跟踪数据的来源,例如 youtube 或 espn……如何做到这一点?

反向 dns 查找听起来像是我正在寻找的东西,但是如果我从 src_ip 中接收到大量数据并将其放入在线反向 dns 搜索表单之一,我得到的只是它是拥有的由 qwest 提供。

编辑#1:

好的,感谢 Guy Harris 在下面的回答,我现在对如何提出这个问题有了更好的了解。正如他所说,每个数据包内的 ascii 数据中应该有一个“主机:”行,这应该为我提供有关此数据来源的更直接信息。现在我如何获得这些数据?解析 ascii 文本是最好的方法,还是有预先存在的函数来获取这些数据?

编辑#2:

好吧,解析有效载荷或标头 ascii 似乎是一条死胡同。我找到了一个非常有用的 libpcap 应用程序 here 的源代码。该程序将上述所有内容打印到日志文件中。查看这些数据,我发现很少有数据包具有“主机:”字段。显然只有 TCP 端口 80 的数据包,然后只有系列中的第一个数据包。即便如此,我发现只有这个主机字段是由网络服务器在我的网络上的一个盒子上提供的。

那么我现在完全不可能弄清楚许多不同网站的内容可能缓存在一个主机上吗?

【问题讨论】:

    标签: libpcap packet-sniffers whois


    【解决方案1】:

    Qwest(被CenturyLink 收购)是一家 ISP(CenturyLink 仍然是)。例如,某些公司可能会将它们用作托管 ISP,因此对 www.example.com 的 HTTP 请求等请求实际上由 Qwest/CenturyLink 的服务器之一处理,因此如果您从 www.example 下载。 com,您实际上是从 Qwest/CenturyLink 拥有的服务器下载的,其 IP 地址也属于 Qwest/CenturyLink。

    Akamai 是一家为希望大量 人下载资料的组织提供基础设施的公司;该组织将arrange that the domain name for their server will actually resolve to an IP address for Akamai,因此,如果您认为您是从 www.example.com 下载的,那么您实际上是从 Akamai 的一台服务器下载的,该服务器的 IP 地址也属于 Akamai。

    因此,作为对来自 www.example.com 的下载请求(例如 HTTP GET 请求)的回复的一部分的入站数据包的源 IP 地址可能是属于 Qwest 或 Akamai 的主机的 IP 地址 -这真的是流量真正开始的主机!

    如果它属于 Qwest,Example Inc. 的 Web 服务器可能实际上存储在具有 Qwest IP 地址的 Qwest 机器上,而不是 Example Inc. 拥有的机器并使用 Example Inc. 拥有的范围内的 IP 地址.(与管理服务器和私有 IP 地址范围相比,Example Inc. 可能有更好的资源来处理)。

    如果它属于 Akamai,则它具有要下载的材料副本,由与 Akamai 签订合同以提供内容缓存的 Example Inc. 提供。

    要确定实际下载了谁的资料,您所能做的就是查看,例如,由客户端完成的 DNS 请求以确定 IP 地址(以便您在DNS 请求,而不仅仅是看到 Qwest/Akamai/为 DNS 请求返回的任何 IP 地址)和/或,至少对于 HTTP,HTTP 1.1 请求中的“Host:”标头(也将包含域名)。

    而且,是的,在一般情况下,当您在下载过程中的某个任意点开始捕获时,并非总是能够找出正在下载的内容的“原始”来源.

    Host: 标头只会出现在初始 HTTP 请求中,因此,如果您在发出初始 HTTP 请求时没有捕获流量,或者下载不是 HTTP 请求的结果,那么您运气不好。

    将在下载开始之前发出 DNS 请求 - 由于 DNS 解析器可以缓存 DNS 请求的结果,因此在下载开始之前可能已经发出了很长一段时间 - 所以,如果你没有在发出 DNS 请求时捕获,你运气不好。

    【讨论】:

    • 感谢您的回答。因此,如果您使用的是 libpcap,并且您有一个数据包,从我有限的知识来看,似乎不可能将该数据包绑定到一个 dns 请求。我错了吗?标题似乎更有希望。您帮助我更好地提出了我的问题,我将编辑我原来的问题。
    • DNS 请求一个数据包,DNS 响应也是如此。如果您对 IP 地址的 DNS 请求和对该 IP 地址的 HTTP 请求都有网络捕获,原则上,您或程序可以看到 HTTP 请求中的 IP 地址可能已被该 IP 地址获取。 DNS 请求。
    • 查看我对答案的更新,以响应您对问题的更新。事实上,普遍的问题是无法解决的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多