摘要
为什么会出现所谓的msn/QQ sniffer[1][2],为什么一台机器能捕获其它机器的信息。
这些现象让大多数不懂网络的人感到困惑,也感到害怕,因为个人隐私可能
被某些不良人员(包括很多只是好奇的人)所利用,更严重的是一些信息可以
被利用来作出更大的危害,那么我们来了解下这其中的原理,以及个人和网络
管理人员如何察觉和避免这种窥探。
Sniffer的原理
如图所示,有多台pc终端交换机上构成一个局域网,当PC1向其它机器发送消息时,
根据交换机的不同有两种模式
1) 如果交换机是管理模式,他会记录下每一口所连计算机的MAC地址(一种网卡
的物理地址,无法更改)当交换机收一个消息帧,会根据目标地址来决定发往哪个
端口。
2) 如果交换机是passive,那么交换机收到消息帧会向交换机的每一个口复制发送一
份并且发送。
能够被窥探者利用的是第二种模式,即交换机会向每一个口上的网卡发送数据帧,但
是为什么一般情况上不会发生问题,是因为网卡也有两种工作模式:
1) 一般模式,网卡只接收目标地址是自己的数据帧,其它数据帧被丢弃。
2) 混杂模式(promiscuous mode)网卡接收所有到达网卡的数据帧。
把交换机的第二种情况和网卡的混杂模式综合起来,就使得一台机器能捕捉到局域网
内所有通讯的数据包,加以分析就形成了我们所看到的msn,qq和其它的消息。
为什么网卡可以设置成混杂模式?
这多半是由于网络监控的需要,但是一般的使用者也能很轻松的把自己的网卡设置成
混杂模式。
1) 最简单的办法,多款著名的packet capture自由软件直接提供了混杂模式功能,比
如ethereal (Google it), 应用它能直接捕获局域网的数据包。
2) 对于Linux机器,可以直接修改其驱动,重新编译装载即可,关于修改网上有很多
文章,http://www.linuxdiyf.com/viewarticle.php?id=52177
3) 对于windows机器,利用winpcap做应用程序来实现,
http://www.leftworld.net/wenzhang/show/1816.html
如何反sniffer
如何反sniffer是我们最关心的问题,可以从两个方面来分析
第一是个人,个人可以通过给通讯加密,使得捕获者即使获得数据包也无法读懂内容,
当然如果它还能成功破译那就是另外的问题。现在网上能直接下载msn,qq的发sniffer软
件[3][4], 它的原理就是给通讯加密;不要直接使用telnet,而用ssh等。
第二对于网络管理员,有两种途径
一是不要使用广播式的hub或者交换机来连接局域网(很可能处于经费考虑没法解决)。
二是成功的监控网络上是否有sniffer,也就是网络上是否出现混杂模式的网卡,最直接的
办法是ping本机,如果得到其它机器的icmp响应就证明那台机器是处于混杂模式;或者把
监控软件安装在客户端,一旦有sniffer就及时报告。
总结
以上只是对网络捕获的初步分析,有待深入,文档会继续更新。
引用
【1】 msn sniffer http://www.effetech.com/msn-sniffer/
【2】 QQ sniffer http://www.skycn.com/soft/550.html
【3】 SimpLite For ICQ 2.1.3 anti-sniffer
【4】 SimpLite For MSN Messenger