1.7 嗅探器的检测

在了解了网络分析器的工作原理之后,大家应该认识到网络分析器(嗅探器)并不是专为网络攻击、黑客入侵而开发的。事实上,由于网络分析器具有检查低层传输数据包的能力,因此我们可以很方便地使用其来对网络进行诊断,当然这种能力同时也对网络安全具有很大威胁性。

例如大多数情况下,用户账号和安全密码在验证的过程中要随着数据包在网络上传输,它们在数据包内的位置存在着一定的规律性。网络黑客可通过嗅探器来捕获每个数据包的特定字节,从而截获用户账号和安全密码。有了这些重要信息,就可以很容易地进行下一步的攻击入侵了,这令网络管理员防不胜防。如果某网络被未经授权者设置了嗅探器,那么该网络的安全实际上已遭到了严重破坏,任何主机与存有嗅探器的网络系统连接都将有用户账户与安全密码被截获的危险。

网络安全分析统计也表明,嗅探器是网络安全存在的第二大隐患。

1.7.1 检测嗅探器的原理

如上所述,嗅探器可能会带来很严重的安全问题。因此检测网络是否存在嗅探器,对网络管理员或网络安全管理员来讲是非常重要的。然而,嗅探器很难被发现,因为它们是被动的程序,并不会留下让别人发现的踪迹。但是,由于嗅探器必须将网卡设为混杂模式才能正常工作,而一般正常服务的网卡都不在该模式下,因此检测嗅探器就等同于检测网络内是否存在网卡被设为混杂模式的计算机。

对于Linux与Windows操作系统来说,嗅探器的检测方法并不一样,具体如下所示。

1.Linux操作系统下的检测方法

在正常模式下,网卡会过滤和丢弃那些MAC地址不是广播地址且不是该网卡MAC地址的数据包。可以通过该特性检测该计算机是否处在混杂模式下。

如果发送非法目的MAC地址(例如66:66:66:66:66:66的数据帧),在正常模式下网卡将丢弃该数据帧。但是如果处在混杂模式下,网卡则会将该数据帧提交给相应的协议栈,系统将会对该数据包做出相应的响应动作。这时就可通过检测计算机是否发回了响应数据包,来确认该计算机是否存在嗅探器。

2.Windows操作系统下的检测方法

在正常模式(非混杂模式)下,网卡只将目标地址为自己或是以太网广播地址(FF:FF:FF:FF:FF:FF)的数据包传递给内核。当处在混杂模式下时,驱动程序就会只检测以太网地址的第一个字节是否是广播地址,如果是FF,则认为是发往FF:FF:FF:FF:FF:FF的广播包。我们可以借用这个特性发送目标地址为FF:00:00:00:00:00的数据包,当Windows操作系统的驱动程序收到该数据帧,并对该数据帧做出了响应时,就表明它处在混杂模式下。如果没处在混杂模式下,将丢弃该数据帧。