一个网络当中存在一个末授权的网络嗅探行为是非常严重的安全问题。它会将嗅探到的网络中的机密信息全部发送给***者,***者会出卖已经得到的某些重要信息,或者根据嗅探到的信息来决定下一步采取什么样的行动。这样,就会让我们蒙受很大的损失。因此,如何检测和防御网络嗅探行为,对于网络、安全和系统专家来说,是一项至关重要的工作。下面分别给一些在以太网和无线局域网中检测和防御网络嗅探的方法。
一、检测网络嗅探的方法
检测单独一台主机中是否正在被嗅探,相对来说是比较简单的。可以通过查看系统进程,或者通过检查网络接口卡的工作模式是否为混杂模式来决定是否已经被嗅探。而对于整个网络来说,检测就要复杂得多。下面,给出了在以太网和无线局域网中检测单台主机或网络中是否已经存在嗅探器的一些方法。
(1)、检查网络接口卡是否为混杂模式(PROMISC) 。要想嗅探整个网络中的网络报文,就得将网卡的工作方式设混杂模式。检查网卡是否工作在这种模式下,在Linux系统中是很容易做到的。以根用户权限进入字符终端,在提示符下输入“ifconfig –a”就可以将系统中所有接口卡的详细信息都显示出来。你可以检查每一个接口所显示的信息,当发现某一个接口信息中出现了“PROMISC”标志,就说明这个接口卡已经工作在混杂模式下了,也就说明,如果不是你自己设置的,那么就可能是网络嗅探软件设置的。在Linux系统下,你还可以通过输入“ip link”命令来得到接口的详细信息。
如果要在Windows系统下检查网络接口卡的工作模式,就不会这么简单。因为没有一个具体的标准命令来输出这些信息。我们不得不通过使用第三方软件来检测网络接口卡的工作模式。PromiScan软件,就是一个可以在Windows NT/2000/XP系统下检测出网络接口卡是否工作在混杂模式下的工具。使用PromiScan之前,你需要从www.securityfriday.com网站下载PromiScan的压缩包,还需要从www.winpcap.org网站下载Winpcap的安装包。安装好Winpcap,然后解压PromiScan压缩包后,直接运行解压目录中的PromiScan就可以进行检测工作。图1就是这个软件的主界面。
图1 PromiScan的主界面
![](https://i-blog.csdnimg.cn/blog_migrate/6be50c9818f42c3def119f7de739543c.png)
另外,在Linux、BSD系统下,也有一些可以检测网络接口卡工作模式的软件。例如Sentinel,它是一个免费的检测软件,也需要Libpcap库才能工作,你可以从www.packetfactory.net下载它。
但是,有些嗅探器会将表示网络接口卡混杂模式的字符“PROMISC”隐藏,来躲避上述这种检测方式。这样,你就不得不使用其它方法来检测网络中是否有网络嗅探器在运行了。
(2)、监视DNS Reverse Lookups。一些嗅探器在收到一个网络请求时,就会执行DNS反向查询,试着将IP地址解释为主机名。因此,如果你在网络中执行一个Ping扫描或者Pinging一个不存在的IP地址,就会触发这种活动。如果得到了回应,就说明网络中安装有网络嗅探器,如果没有收到任何回应,表明没有嗅探器在运行。
(3)、发送一个带有网络中不存在的MAC地址的广播包到网络中的所有主机。正常情况下,网络中的主机接口卡在收到带有不存在的MAC地址的数据包时,会将它丢弃,而当某台主机中的网络接口卡处于混杂模式时,它就会回应一个带有RST标志的包。这样,就可以认为网络中已经有嗅探器在运行。但是,在交换网络环境当中,由于交换机在转发广播包时不需要MAC地址,所以也有可能做出与上相同响应的,你得根据实际情况来决定。
在Linux系统下,这种方法是很容易实现的。你首先以根用户权限进入字符终端,在此终端下输入如下命令就可以完成:
# ifconfig eth0 down \\关闭eth0接口
# ifconfig eth0 hw ether 00:03:C2:00:00:AA \\用不存在的MAC地址指定到eth0接口
# ifconfig eht0 up \\重新启用eth0
# ping –c 1 –b 192.168.0.255 \\发布含不存在MAC地址的广播包
(4)、小心监控网络中各种交换机和路由器的运行情况,来及时发现这些网络设备出现的某种不正常的现象。比如当你发现有些本来关闭了的端口又被启用,而某些端口连接的主机在运行却没有流量时,你就得重新登录交换机或路由器中,仔细查看它现在的系统设置和端口设置情况,并和你的记录对比,以此来发现交换机或路由器是否已经被***。
(5)、使用Honeypot(蜜罐)技术来设计一个陷阱,以此来诱骗***者对它进行嗅探,并通过它来找到嗅探的源头。
(6)、小心监视你网络中的主机,经常查看主机中的硬盘空间是否增长过快,CPU资源是否消耗过多,系统响应速度是否变慢,以及系统是否经常莫名其妙地断网等等。
(7)、在Linux发行版本中运行ARPWatch来监控网络中是否有新的MAC地址加入。
(8)、无线局域网是以广播的方式来转发数据包的。从理论上来说,处于同一个无线局域网中的所有无线客户都可以“听”到所有在网络中传输的数据包。就如同共享式以太网一样,只要将无线嗅探器中所使用的无线适配器置为监控模式,它就再也不会与无线局域网中的访问点或其它无线客户进行会话,只会被动接收来自网络中的所有数据,就更不会对收到的数据包进行修改了。无线嗅探器这种被动嗅探的方式,使得要想检测出它们,变得非常困难。
但也并不是说完全不能被检测到。我们可以使用以其人之道还施彼身的方式,使用与***都一样的网络嗅探软件,就可以来发现非法的嗅探点。使用NetStumbler和Kismet都可以达到检测非法嗅探点的目的。但是,使用Kismet的效果要优于NetStumbler。这是因为,Kismet不仅能够找出被隐藏了SSID的无线网络嗅探器,而且,它还可以找出无线局域网中是否有安装NetStumbler软件的主机。更绝的是,你可以通过Kismet来找到你所在的无线局域网中所有的访问点和无线客户,并且利用GPS定位功能,Kismet就可以在地图上用圆点标出这些访问点和无线客户的位置。将这位置地图状态保存,以便给下次扫描结果提供对比标准。这样一来,你就可以使用Kismet在某个时间重新对整个无线局域网进行扫描,然后将扫描的结果和上次保存的结果进行比对,看看是否有不同之处。通过这种方法,就可以很容易地找到非法无线嗅探器。
有些***者会在安装网络嗅探器的主机之中,再安装上一些rootkits类的工具,用它来掩盖他(她)在这台主机当中的行动踪迹,例如清除系统日志,来躲避你的检测。有些***者还会在这台主机当中安装一些后门程序或***程序,以方便控制。这就要求,在你经常进行检测的同时,你还应用使用一些方法来实时监控你的网络,以察觉这些隐秘行为。
二、防御网络嗅探的方法
应对网络嗅探,只进行被动的检查是不行。有些***者会想法躲避你的检测。因此,你还应当采取一些积极的方法来防御网络嗅探。下面分别说明在以太网和无线局域网中防御网络嗅探的方法。
1、在以太网中防御网络嗅探的方法
在以太网中,你可以使用下列的方法来防御网络嗅探:
(1)、尽量在网络中使用交换机和路由器。虽然这种方法不能够完全杜绝被嗅探,但是,***者要想达到目的,也不是一件很容易的事。况且,你还可以在交换机中使用静态MAC地址与端口绑定功能,来防止MAC地址欺骗。
(2)、对在网络中传输的数据进行加密。不管是局域网内部还是互联网传输都应该对传输的数据进行加密。现在,已经有许多提供加密功能的网络传输协议,例如SSL、SSH、IPSEC、OPEN***等等。这样,一些网络嗅探器对这些加密了的数据就无法进行正确的解码了。
(3)、对于E-mail,你也应该对它的内容进行加密后再传输。应用于E-Mail加密的方法主要有数字认证与数字签名。
(4)、划分VLAN(虚拟局域网)
应用VLAN技术,将连接到交换机上的所有主机逻辑分开。将它们之间的通信变为点到点通信方式,可以防止大部分网络嗅探器的嗅探。
(5)、在你的网络中布置***检测系统(IDS)或***防御系统(IPS),以网络防火墙等安全设备。它们对于许多针对交换机和路由器的***方法,很容易就识别出来。
(6)、你应当强化你的安全策略,加强员工安全培训和管理工作。
(7)、在内部关键位置布置防火墙和IDS,防止来自内部的嗅探。
(8)、如果要在你的网络中布置网络分析器,应当保证你的网络分析器本身的安全,最好事先制定一个网络分析策略来规范使用。
2、在无线局域网中防御无线网络嗅探的方法
尽管检测无线网络嗅探器有一定的难度,但是,还是可以使用一些方法来防御无线网络嗅探的。
这些方法有:
(1)、禁止SSID广播;
(2)、对数据进行加密。你可以在无线访问点(AP)后再连接一个***网关,通过***强大的数据加密功能来保护无线数据传输;
(3)、使用MAC地址过滤,强制访问控制;
(4)、使用定向天线;
(5)、采取屏蔽无线信号方法,将超出使用范围的无线信号屏蔽得;
(6)、使用无线嗅探软件实时监控无线局域网中无线访问点(AP)和无线客户连入情况。