安全入门之一之局域网窥探


摘要

为什么会出现所谓的msn/QQ sniffer[1][2],为什么一台机器能捕获其它机器的信息。

这些现象让大多数不懂网络的人感到困惑,也感到害怕,因为个人隐私可能

被某些不良人员(包括很多只是好奇的人)所利用,更严重的是一些信息可以

被利用来作出更大的危害,那么我们来了解下这其中的原理,以及个人和网络

管理人员如何察觉和避免这种窥探。

 

Sniffer的原理

 

如图所示,有多台pc终端交换机上构成一个局域网,当PC1向其它机器发送消息时,

根据交换机的不同有两种模式

1 如果交换机是管理模式,他会记录下每一口所连计算机的MAC地址(一种网卡

的物理地址,无法更改)当交换机收一个消息帧,会根据目标地址来决定发往哪个

端口。

2 如果交换机是passive,那么交换机收到消息帧会向交换机的每一个口复制发送一

份并且发送。

 

能够被窥探者利用的是第二种模式,即交换机会向每一个口上的网卡发送数据帧,但

是为什么一般情况上不会发生问题,是因为网卡也有两种工作模式:

1)    一般模式,网卡只接收目标地址是自己的数据帧,其它数据帧被丢弃。

2)    混杂模式(promiscuous mode)网卡接收所有到达网卡的数据帧。

 

把交换机的第二种情况和网卡的混杂模式综合起来,就使得一台机器能捕捉到局域网

内所有通讯的数据包,加以分析就形成了我们所看到的msnqq和其它的消息。

 

为什么网卡可以设置成混杂模式?

这多半是由于网络监控的需要,但是一般的使用者也能很轻松的把自己的网卡设置成

混杂模式。

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是我们最关心的问题,可以从两个方面来分析

 

第一是个人,个人可以通过给通讯加密,使得捕获者即使获得数据包也无法读懂内容,

当然如果它还能成功破译那就是另外的问题。现在网上能直接下载msnqq的发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