数据包嗅探器 - 追溯到内容来源的位置

时间:2013-03-21 21:17:44

标签: libpcap packet-sniffers whois

我使用sniffex.c作为我的起点,我花了几个月的时间致力于让数据包嗅探器以我想要的方式工作。它是一个很好的工具,用于提供进出我网络中每台计算机的流量和流量的摘要,但我发现自己想要更多地了解入站流量的来源。如果我在示例入站数据包的src_ip上做了一个whois,大部分时间我都会获得有关Qwest Communications Company,LLC或AKAMAI TECHNOLOGIES INC所拥有的主机的信息,而这些主机并没有真正向我提供我感兴趣的信息。 。

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

反向dns查找听起来像我正在寻找的,但是如果我接受src_ip,我从一个在线反向DNS搜索表单中收到了大量数据,并且我得到的是它所拥有的由qwest。

编辑#1:

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

编辑#2:

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

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

1 个答案:

答案 0 :(得分:0)

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地址范围更好地处理其资源。)

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

关于确定实际下载哪些资料的所有操作,例如,客户端确定IP地址的DNS请求(以便您在“www.example.com”中查看) DNS请求,而不仅仅是看到Qwest / Akamai /为DNS请求返回的任何IP地址)和/或至少对于HTTP,HTTP 1.1请求中的“Host:”标头(也包含域名) )。

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

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

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