数据包嗅探基础知识
想象一下这样的情景:你坐在当地的咖啡馆里,一边喝着早晨的咖啡因饮品,一边准备去办公室。你处理工作邮件,查看 Facebook,并将财务报告上传到公司的 FTP 服务器。总的来说,这是一个富有成效的早晨。当你到达工作地点时,整个办公室一片混乱。你上传的那份极其敏感的财务报告不知何故泄露给了公众,而你的老板对你刚刚发给他的粗鲁和不专业的电子邮件感到愤怒。是不是有黑客潜伏在阴影中,侵入了你公司的网络,并决定把责任推到你身上?很可能不是。这个恶作剧的家伙很可能就坐在你停留的咖啡馆里,抓住了这个机会。
如果没有一些形式的对策,你的数据在公共网络上是不安全的。这个例子是光谱的极端情况下的最坏情况,但并非牵强附会。确实有人有能力窃取你的数据。最好的防御是了解你可能会失去什么,它是如何丢失的,以及如何防御它。
什么是数据包嗅探?
数据包嗅探,或数据包分析,是捕获本地网络上传输的任何数据,并查找任何可能有用的信息的过程。大多数时候,我们系统管理员使用数据包嗅探来排除网络问题(例如找出为什么网络的一部分流量如此缓慢),或者检测入侵或受损的工作站(例如,当你不使用 IRC 客户端时,工作站持续连接到端口 6667 上的远程机器),这正是这种类型的分析最初设计的目的。但是,这并没有阻止人们找到更有创意的方法来使用这些工具。焦点很快就从其最初的意图上转移开来——以至于现在数据包嗅探器被认为是安全工具而不是网络工具。

图 1. 捕获某人尝试登录网站的数据包
找出网络上的某人在互联网上做什么,已经不再是什么神秘莫测的才能了。像 Wireshark、Ettercap 或 NetworkMiner 这样的工具让任何人都有能力通过一点练习或培训来嗅探网络流量。这些工具变得越来越容易使用,并不断使事情更容易理解,这使得它们更容易被更广泛的用户群体使用。

图 2. 像 NetworkMiner 这样的工具可以重建在网络上广播的图像。
它是如何工作的?
现在,你知道这些工具的存在,但它们究竟是如何工作的呢?首先,数据包嗅探是一种被动技术。没有人真正攻击你的计算机并深入挖掘你不想让任何人访问的那些文件。这很像窃听。我的计算机只是在监听你的计算机与网关之间的对话。
通常,当人们想到网络流量时,他们认为网络流量直接从他们的计算机到路由器或交换机,再到网关,然后到互联网,在那里它以类似的方式路由,直到到达指定的目的地。这在很大程度上是正确的,但忽略了一个基本细节。你的计算机并没有直接将数据发送到任何地方。它以数据包的形式广播数据,数据包的头部包含目的地。你网络上的每个节点(或交换机)都会接收数据包,确定它是否是预期的接收者,然后接受数据包或忽略它。
例如,假设你正在你的计算机“PC”上加载网页 http://example.com。你的计算机会发送请求,基本上是喊“嘿!有人给我 http://example.com!”,大多数节点会简单地忽略它。你的交换机会将它传递到最终将被 example.com 接收的地方,example.com 会将其索引页传递回路由器,然后路由器会喊“嘿!我有给 PC 的 http://example.com!”,这再次会被除你之外的所有人忽略。如果其他人使用数据包嗅探器在你的交换机上,他们会收到所有这些流量并能够查看它。
把它想象成在酒吧里谈话。你可以和某人谈论任何事情,但周围还有其他人可能会窃听谈话,尽管你认为谈话是私密的,但窃听者可以以他们认为合适的任何方式利用这些信息。
可以收集到哪些类型的信息?
互联网的大部分以纯文本形式运行,这意味着你看到的大部分信息都可以被使用数据包嗅探器的人查看。这些信息范围从无害到敏感。你应该注意到,所有这些数据只有通过未加密的连接才是脆弱的,因此如果你使用的网站具有某种形式的加密(如 SSL),你的数据就不那么容易受到攻击。
最具有破坏性的数据,也是大多数人最关心的东西,是用户凭据。你在任何给定网站上的用户名和密码都以明文形式传递,任何人都可以收集。如果你对所有在线帐户使用相同的密码,这可能会特别具有破坏性。如果你的银行网站和你 Twitter 帐户使用相同的密码,那么无论你的银行网站有多安全都没用。此外,如果你在一个不安全的网页中输入你的信用卡信息,它同样容易受到攻击,尽管几乎没有(如果有的话)网站为了这个确切的原因而继续这种做法。
在安全领域有一种称为会话劫持的技术,攻击者使用数据包嗅探器通过窃取受害者在该网站的会话 cookie 来获得对特定网站上受害者会话的访问权限。例如,假设我正在嗅探网络上的流量,而你登录了 Facebook 并选中了“记住我在这台计算机上”复选框。这会向 Facebook 发出信号,向你发送一个会话 cookie,你的浏览器会存储该 cookie。我可能会通过数据包嗅探收集该 cookie,将其添加到我的浏览器,然后访问你的 Facebook 帐户。这是一项如此简单的任务,以至于它可以很容易地被脚本化(甚至有人制作了一个 Firefox 扩展程序来自动执行此操作),但仍然没有多少网站对其最终用户的流量进行加密,这使得在使用公共互联网时成为一个重大问题。

图 3. 一个旨在从网络收集未加密会话 Cookie 的 Firefox 扩展程序
存在专门为监控你在互联网上的活动而设计的数据包嗅探器。它们将重建你正在查看的确切网页、你正在浏览的照片、你正在观看的视频,甚至是你正在下载的文件。这些应用程序专门用于查找一系列数据包捕获,以查找各种数据包流并在运行时重新组装它们。我在大学的室友匆忙编写了一些东西,可以在他的计算机上实时显示我的浏览器内容(这真是一个可怕的发现)。
电子邮件是人们倾向于为此争论的另一件事,因为人们对电子邮件的隐私有一种假设,这种假设源于普通的邮件系统。你的电子邮件被发送出去并且可以被查看,就像从你的计算机或网络发出的任何其他东西一样。电子邮件嗅探是 FBI 的 Carnivore 计划如此臭名昭著的原因。
食肉动物 (Carnivore)
食肉动物 (Carnivore) 是美国联邦调查局实施的一个系统,旨在监控电子邮件和电子通信。它使用了一个可定制的数据包嗅探器,可以监控目标用户的所有互联网流量。
由于每个数据包的头部都带有目标地址,因此有人可能会嗅探网络只是为了收集该网段上每个人的浏览历史记录。这可能不是非常阴险,但它是收集到的数据,并且总有人愿意为各种数据付费。
预防措施
我相信你现在距离拿起剪刀剪断你的网线并发誓永远不再上网只有几秒钟的时间了,但不要害怕!你可以采取一些不那么激烈的措施来防止如此敏感的数据丢失。这些预防措施都不是窃听者的神奇解药,但即使使用其中一种也会使你成为一个不太受欢迎的目标。有一个老笑话说,当你被熊追赶时,你不需要跑过熊,只需要跑过你前面的人就行了。你不必拥有街区上最安全的计算机,只要比别人的更安全就行了。与大多数网络安全一样,如果人们真的想要你的数据,他们就可以得到它。但是,大多数时候,攻击者不是针对特定的人,他们正在寻找机会目标,所以你越安全,你就越不可能成为这样的目标。
防止窃听的第一道防线是大多数处理敏感信息的网页使用的安全套接字层 (SSL)。这强制所有在你和网站之间共享的内容都要加密。一些网站仅对他们的登录页面使用 SSL。大多数网站甚至根本不使用 SSL。这很容易判断——地址栏中的 URL 将以 https 而不是 http 开头。一些网站为你提供了一些选择。例如,Google 允许你在 Gmail 中始终启用 SSL,从而加密你的所有电子邮件流量。
现代网络交换机旨在智能地传递数据,以避免数据包冲突和过度的网络流量。如果广播的数据包不是针对连接到它的节点之一,则路由器不会重新广播到本地节点。同样,如果本地广播的数据包是针对另一个本地节点的,则交换机不会重新广播到外部网络。这会在网络上强制执行严格的分段。对我们来说,这意味着在交换网络上使用数据包嗅探器的人将看不到来自未连接到同一交换机的主机的任何流量。这在小型网络(例如你家中的网络)上意义不大,但在更大规模的网络上,这意味着有人不能坐在休息室里嗅探会计部门楼上三层的流量。
无线网络加密在其短暂的生命周期中取得了长足的进步——从没有加密到有线等效保密 (WEP) 加密,再到 Wi-Fi 保护访问 (WPA) 加密。无线网络不提供前面提到的交换机提供的相同分段,这意味着在无线接入点上发送的任何数据包都会重新广播给接入点上的所有人。即使你的流量在 WEP 下加密,这种加密也仅保护数据免受未连接到该无线网络的用户的影响。加密方案和密钥对于所有用户都是相同的,因此你所有“加密”的数据都可以被网络上的任何人解密,这使得你的数据本质上是未加密的。WPA 通过隔离网络上的所有用户并为他们提供不同的加密方案(即使密钥相同)来解决这个问题。
如果你有权 SSH 访问当前网络之外的计算机(我相信我们大多数人都有),你可以通过 SSH 连接隧道传输所有流量。你本质上是使用 SSH 连接的加密来保护你的所有数据免受窃听者的侵害。这种技术有两个明显的缺点。首先,你的连接速度会下降,因为现在你的流量不是从你到目的地再返回,而是从你到 SSH 服务器,再到目的地再返回。其次,你的数据从远程端以未加密的方式传输,因此如果该机器容易受到数据包嗅探,那么你的数据并不比在你本地机器上更安全。
虚拟专用网络旨在允许用户访问原本无法访问的网络。但是,它们也可以用于保护你的流量,因为 VPN 连接是加密的。你可以仅为此目的设置一个私有 VPN,但这将具有与 SSH 隧道相同的缺点。如果你在一家拥有 VPN 的公司工作,你可能会被允许将其用于此目的,但你的流量将受到与你在办公室相同的策略和规则的约束,因此请小心你将其用于什么目的。