相信很多朋友都在各地的网吧或学校的LAN里嗅探过别人的密码,有些人是出于对黑客技术的热爱,而有些人只是为了满足盗取别人帐号后的成就感才进行sniffer的。当然,如果你只是技术上的研究那还可以,但你要私自更改他人的密码,这点可就不好了。所以就这种情况,我想谈谈如何来防范、避免局域网内监听的发生。

先让我们初步了解一下什么是监听,它是如何进行工作的。监听又称嗅探,指在局域网内的一台主机、网关上放入监听程序,从而可以监听出网络的状态、数据流动情况以及传输数据的信息。以太网协议的工作方式为将要发送的数据包发往连接在一起的所有主机,在包头中包括着应该接收数据包的主机的正确地址。因此,只有与数据包中目标地址一致的那台主机才能接收数据包,但是主机在监听模式(即混杂模式)下,无论数据包中的目标物理地址是什么,主机都将接收(只有在同一网段内才可以进行监听,也就是说一台计算机只能监听经过自己网络接口的那些信息包,不是同一网段的数据包,在网关就被滤掉了)。在通常条件下,用户的所有信息,包括帐号和密码都是以明文的方式在网络上传输的。因此,只要具有初步的TCP/IP知识的人利用嗅探程序获取用户的各种信息并不是一件很困难的事。
下面我给大家画一张图,以便更能明白监听的原理。

+—————————+ →→→ +—————————+
| LAN内的主机C | ————— | LAN内的主机A |
+—————————+ ←←← +—————————+
↓
+———---—+
| Sniffer | 
+————---+

监听起到了中间人的作用,这和电话监听的原理是一样的。既然监听那么厉害,我们就无法防范了吗?答案是:不!被安装监听程序的计算机是非常消耗CPU资源的,在一个担负繁忙的计算机中进行监听,管理员是很容易发现的,他只要按住热启键查看CPU性能即可。但这种方法是存在弊端的、不准确的,我们还须进一步作出判断。

首先,把怀疑被安装上了监听程序的计算机,用另一台主机去PING(记住!一定要事先把主机的MAC地址修改一下,换句话说是让交换机不能识别对应该主机的MAC地址。)大家也许会发愁了,因为修改MAC地址需要手工修改注册表来实现,步骤很繁琐,在这里,我给大家推荐一个修改MAC地址的工具 —— MacModify,下面我来介绍一下该程序的用法: 

1.smac -listp
列出所有网卡号对应的IP地址
2.smac -listmac
列出系统所有网卡的mac地址
3.smac -modifymac 网卡号 新的mac地址
修改某个网卡的mac地址
下面我们要更改IP地址192.168.0.10,它对应的MAC地址是A0-01-02-03-27-63,要将它改为A0-01-02-03-27-64。
 
然后,我们重新启动计算机。重起之后,MAC地址就更改过来了。

到此MAC地址修改完毕,下面我们要做的是PING那台怀疑被监听的主机了。

  在正常条件下,没有被安装监听程序的计算机是不能PING通的,因为在同一个网段内的网络寻址不是依靠IP而是MAC地址(物理地址),当你用修改后的MAC地址主机去PING另一台没有安装过监听程序的主机,它首先广播一个ARP请求数据包,该数据包包含源本机IP地址和MAC地址以及目标IP地址,这时网络中的每台主机都可以接收到这个ARP请求的数据包,而只有目标主机会处理这个ARP数据包并作出响应,将目标主机的物理地址直接发送给源主机,而我们之前已把没有安装过监听主机的MAC地址改掉了,固在交换机对应的MAC地址已经不存在了,所以才会产生不能PING通(双方互相通信)这种状况。到这里,也许有些新手感到有些晕了。没关系,我用一个例子说明一下,你就可能明白了:比如我们把教室比做局域网,教室里面的学生比做各台计算机,老师在叫A君回答问题时,教室里面的学生全部都听到了老师的问题,但只有A君才会响应老师,同样如果A君因为某事没有来上课,那老师再叫A君时,A君当然不会响应老师。通过这个鲜明的例子,相信大家都明白了。

那么我们再来谈谈PING被安装监听程序的计算机,当用正确的IP地址和错误的MAC地址去PING,运行监听程序的计算机就会有响应(能够PING通),这是因为正常的主机不接受错误的物理地址,处于监听状态的主机就可以接收该数据包。通过该方法,你就可以顺利找到被安装监听程序的计算机。下面我通过一个典型的例子,给大家实践讲解一下,如何防止被监听(Sniffer)。

在学校、企业内部网络里,FTP是最为常用的一项服务,但它在数据存储过程中是以明文的方式出现的,“黑客”只要在一台登陆该FTP服务器上的机子安装Sniffer软件,那他就在你登陆的时候就可以把密码获取到。目前WINDOWS下最常用的就是安全焦点的glacier(冰河作者)开发的xsniff,它的特点就是体积小,操作简单,可捕获局域网内FTP/SMTP/POP3/HTTP协议密码。

TIPS:xsniff <选项>
-tcp : 输出TCP数据报
-udp : 输出UDP数据报
-icmp : 输出ICMP数据报
-pass : 过滤密码信息
-hide : 后台运行
-host : 解析主机名
-addr <IP地址> : 过滤IP地址
-port <端口> : 过滤端口
-log <文件名> : 将输出保存到文件
-asc : 以ASCII形式输出
-hex : 以16进制形式输出
示例:xsiff.exe -pass -hide -log pass.log
xsiff.exe -tcp -udp -asc -addr 192.168.1.1

由于条件限制,我是用虚拟主机完成该实验的。
 

这时我已经安装了xsniff,看,密码就乖乖地跑道了我们的手中。
 
大家可以从图中看到,我登陆的用户名是squall,密码为123456。
上面是网络监听的大致方法,防止网络监听我们可以采用两种方法,第一种方法是设计安全的网络拓扑结构图,在交换机上进行划分VLAN,这种技术通常被称为分段技术。它将网络上的节点按工作性质与需求划分成若干个“逻辑工作组”,一个逻辑工作组就组成了一个虚拟网络。这样,不在同一VLAN中的主机是不能互相通信的(除非使用路由器),如果某人在VLAN中放置了xsniff,那他只能得到该网段内的信息,从而减少了对网络的安全性。下面,我用一张拓扑图来说明一下。
 
从图中可以看出,我已经划分了两个VLAN,假如A君在VLAN3中安装了监听程序,那A君就只能得到VLAN3中的信息,VLAN4是不可以的。为了方便大家理解,我做了一个交换机2950划分VLAN的动画教程放在光盘中,通过此动画,大家就更好的理解了。这里为了节省笔墨,我就不详细说明了。

第二种方法是采用加密技术,本人推荐这种方法。第一种方法相比起来复杂许多,但可以有效地防止网络监听的攻击。

PGP(Pretty Good Privacy)是一个软件加密程序,用户可以使用它在不安全的通信链路上创建安全的消息和通信,例如电子邮件和网络新闻。PGP使用各种形式的加密方法,它用一种简单的包格式组合消息以提供简单、高效的安全机制,使得消息通过Internet或者其他网络上安全地传送。

在安装完以后,我们只要设置如下选项就可以实现对数据的加密(注:双方必须都安装PGP软件),
我们把记录的日志全部钩上,然后配置VPN。

然后我们到另一台主机,安装PGP软件,步骤同上。两台主机全部配置后,我们就可以放心进行通信了,有兴趣的朋友可以测试,这样的网络环境下,嗅探是完全没用的。

  通过以上的方法,局域网内的监听就可以很好的被杜绝了,如果你的网络环境下经常受到监听这种攻击方式的话,不妨使用上面的方法去尝试,相信一定会收到很好的效果的。