嗅探器(也称网络分析器)是种能够察看网络传输、将其解码并为网管提供可用的数据的一种软件。网管可以使用它提供的数据来诊断网络存在的问题。而恶意用户还会利用嗅探器来从网络上获取存储在文本中的密码。下面列举一些常用的专用嗅探器:NAI嗅探器(商用)、Wireshark(以前叫Ethereal,是一种Linux,Windows以及其他平台上使用的开发源码的图形用户界面的嗅探器)、TCPDump(开放源码命令行嗅探器,在Unix类的操作系统上使用,如Linux或者FreeBSD),还有它的Windows版——WinDump。
首先我们来说明一下一些网络基本知识。大多数的以太网都是一根总线的拓扑结构,使用同轴电缆或者双绞线和hub连通。网络上的所有节点(计算机和其他设备)都可以通过同样的线路通信,并且使用称为载波监听多路访问/冲突检测(CSMA/CD)的方案依次发送数据。你可以把CSMA/CD看作是在一个很吵闹的宴会中的两人对话,你需要等一会儿,等别人说话的间歇才有机会发言。网络上的所有节点都有自己唯一的MAC(媒体访问控制)地址,他们使用该地址互相发送信息包。通常,节点只会关注目的地是自己的MAC地址的那些信息包。但是如果网卡被设置成混杂模式的话,那它就会察看它连接的线路上的所有数据包。
为了减少冲突数量、降低嗅探不属于某节点的数据的可能性,大多数网络都使用了交换机。在网络中,hub是种无源设备,它会将接收到的所有传输发送到它的所有端口。而交换机则察看它所连接的所有节点的MAC地址以及所在端口,然后把那些数据包只发给它的目标节点。交换机大大降低了网路中的冲突数量,增大了网络的吞吐量。理论上,使用交换机的网络中,每个节点只能收到广播消息(发给局域网上所有计算机的消息)以及专门发送给它的MAC地址的数据包,还有偶尔出现的不知道目标地址的数据包。但是即使在局域网中使用交换机,它还是有可能被人使用某些交换机上的镜像端口而嗅探(这些镜像端口本来是网管分析网络问题时使用的),嗅探者可以误导交换机使其将数据映射给所有端口或者使用一种称为ARP病毒的技术(后面会详细讲到)。
以上讲述的是以太网络的一些基本知识,而WiFi(801.11a/801.11b/801.11g/801.11n)则与之完全不同。无线局域网很像使用hub的以太局域网。局域网中所有计算机都能看到发送给别的计算机的数据,但通常他们可以设置成忽略这些信息。(事实上,比这复杂,但是我篇幅有限,就不详细讲那错综复杂的80.211网络了)。但如果网卡是设置成混杂模式的话,那么它就不会忽略发送给其他计算机的数据,而是会察看这些数据,允许使用嗅探器的用户看到附在同一访问点的发送给其他用户的数据。混杂模式在Windows和Linux(或者其他类似Unix的操作系统)的有线网卡上运行得很有效,但是并不是所有的无线网卡都能很好地支持该模式(比如Intel的叫做IPW2200的Centrino 802.11g芯片)。如果嗅探器的网卡不支持混杂模式,那么嗅探者就得把它附到无线网络的WAP(无线接入点)上才能看到其他数据。如果攻击者使用的是Linux(或者类似Unix的操作系统),如果网卡支持的话,它可能可以使用监听模式。在监听模式下,无线网卡直接监听无线电波中的原始信息包而无需WAP的辅助。从攻击者角度看,监听模式的好处是:由于不需要WAP,他们的活动不会留下任何痕迹,也不用在网络上发送数据包。
由于WiFi网络使用的安全协议各有不同,因此嗅探WiFi网络变得更加复杂。如果你的网卡支持混杂模式并且你能使用WEP(也就是说你知道WEP密钥)连接到无线网络,你就可以嗅探几乎所有你想要获得的信息。如果网络使用的是WPA,就没那么容易了,因为即使你知道密码,你也不一定能解码那些你没有参与的网络对话中的所有数据。但是,你却有可能进行ARP病毒攻击或者使用其它的MitM(有人参与其中)攻击,从而获得数据路由。
网管们应当注意嗅探器的很多合法用途。网管可以用它们找出网络上出问题的计算机,比如占用太多带宽,网络设置错误或者正在运行恶意软件等等。我觉得它们在找出黑客攻击方面非常有用,我可以用它们嗅探自己的服务器找出那些不正常的传输。学会用嗅探器来找出网络的问题的话,每个系统管理员都能很好地完成自己的工作,我推荐你们使用Wireshark,因为它是免费的、跨平台的并且能够找到大量的相关资料(可以从本文结尾的链接中找到更多信息)。
那些想要绕过安全措施的人也可以用嗅探器。很多流行的应用协议把登陆凭证(用户名和密码)以纯文本的形式传递或者使用加密性差的形式传送。这些不安全的协议包括FTP、Telnet、POP3、SMTP还有HTTP基本验证。这种情况下应尽量使用替代它们的SFTP,SSH(安全保护套件),以及HTTPS(SSL)。也许你很难从FTP协议切换到别的协议,因为使用像SFTP这样更安全的协议的客户端并不一定总是有。较新版本的Windows(命令行的ftp.exe以及图形用户界面形式的浏览器)都支持FTP客户端,但是你也可以下载支持SFTP的Filezilla和PSFTP的免费客户端。有些嗅探器拥有很强的提取密码的能力,比如Cain,Dsniff以及Ettercap。这三个都是免费或者开放源码的。Cain只支持Windows而Dsniff和Ettercap通常在Unix环境中运行,但也有相应的Windows版本。