作为一名校园网管理员,笔者近期接二连三地接到用户不能正常上网的举报,使得我们焦头烂额。经过进一步调查,终于发现了故障的真相。
首先说明一下我校的网络拓扑结构:在一台三层主交换机上划分了VLAN,VLAN1使用普通的二层交换机,连接学生宿舍的网络。使用192.168.0.0作为网络地址,并在主交换机上做了MAC地址与IP地址的绑定,避免学生自行修改IP地址造成地址冲突。学生的计算机全部连接到普通的二层交换机上。
故障现象
某台计算机会突然不能连接到服务器或其他客户机,重启后恢复正常,短时间后,又出现该状况。查看本地连接状态发现只有发出的数据包而没有返回的数据包。根据以往的经验,该症状与MAC地址绑定错误相同,于是在交换机上查看,发现一切正常,只是该IP地址没有数据流量。同时,在网络中的网管软件监听到大量未知MAC地址的数据包出现。
故障分析
综合考虑,我们认为有伪造MAC地址的情况出现。我们重点查找Windows系统下的嗅探软件,并以著名的Winpcap和Libpcap为重点,最终的焦点定位在一款叫做“网络执法官”的软件上。
我们立即下载该软件进行安装,发现其基于Winpcap。因为Winpcap的资料相对较多,我们没有试图对该软件进行反编译,而只对其基本功能进行了测试,发现其工作方式有三种,并进行了基本测试:
1. 生成IP地址冲突
在该模式下,软件产生一个虚拟的MAC地址,并利用这个MAC地址伪造和被***机器的IP地址相同的数据包,从而使被***机器不断出现IP地址冲突对话框,但由于该MAC地址是伪造的,所以被***机器无法发现是哪个机器进行了***。
2. 断开被***机器与网关的联系
在该模式下,软件对被***机和网关机都产生一个ARP的“欺骗”,使得两者不能正确获知对方的MAC地址,从而不能正常通讯。但被***机器和局域网内其他主机可以进行通讯。
3. 断开被***机器与所有其他主机的联系
在该模式下,软件对被***机器和局域网内所有主机(包括网关)都进行“ARP欺骗”,被***机器不能和任何机器通讯。但本主机不能和被***机断开联系(该软件不会欺骗本身主机),所以如果该软件如果安装在网关机上,就失去了网络管理功能。
明显的,这是一种“ARP欺骗”的***。而ARP协议位于TCP/IP协议中的网络层,主要功能是将广域网的IP地址寻址转换成局域网中的MAC地址寻址。所以,如果我们破坏了IP/MAC地址的转换,被***的主机就不能在局域网中进行通讯了(因为没有其他主机“认识”它了)。
故障解决
那么,我们能不能避免ARP“欺骗”***呢?很遗憾的是:鉴于ARP协议的“自治”性,除非全部使用静态ARP,否则是不能的。
用什么办法对抗网络执法官呢?我们从查、躲、杀三个角度进行了试验。
1. 如何得知自己是否受到“ARP欺骗”的***呢?
您可以检测自己的网卡工作状态,如果只发数据而不能接收到数据的话,很可能就受到了***。您也可以在命令行状态下使用ARP -A命令,来查看本机的ARP缓存状态,正常情况下除了网关外不会有太多的记录,您需要查看网关的MAC地址是否和正常的一样。如果不同,那么或者网关换了网卡,或者您受到了“ARP欺骗”的***。
同样,如果没有记录或者有过多的ARP记录,您也可能受到了***(不同版本的网络执法官的***方式有所不同)。
2. 如何在局域网中查找该主机
因为该软件是基于Winpcap驱动的,其工作起来必然需要将该主机网卡工作于“混杂”模式下,原理类似于常见的嗅探软件,所以,反嗅探的软件可以对其进行查找。经常使用的有Antisniffer、ARPkiller等。利用反嗅探软件查找局域网内处于“混杂”模式的网卡,基本可以确定进行***的主机的IP地址。
注:被查找到的主机也可能没有使用“ARP欺骗”,而只进行了窃听。但总之处于“混杂”状态的主机肯定是不正常的。
同样的,您还可以安装网络执法官的检测版本来检测本网中运行该软件的主机。
3. 躲过“ARP欺骗”的***
如果您的网络里没有在网关绑定MAC地址和IP地址的话,您可以针对被***的类型不同选择不同的方式躲避***:
(1)产生IP地址冲突的***
如果产生地址冲突,您可以看见类似“系统检测到IP地址和硬件地址00-50-FC-1F-4C-9E发生冲突”的对话框。您可以将您的MAC地址设置为该硬件地址,就可以避免再次出现该对话框。
(2)断开被***机器与网关的联系和断开被***机器与所有其他主机的联系的***
您可以自行修改MAC地址,修改后,可以在短时间内避开被***,但是如果***者在网络执法官中设置了“发现用户上网即进行管理”后,不久会再次受到***。
总之,利用修改MAC地址来躲避并不是有效的办法。况且很多局域网中还进行的MAC地址和IP地址的绑定,就算避过了网络执法官的***,也同样不能正常上网。
4. “杀”实际上是一种“对攻”
因为ARP缓存具有一定的生命周期,所以网络执法官会在几秒内产生一个新的ARP数据包。首先我们可以利用静态ARP在本机注册网关正确的MAC地址,然后利用ARPkiller等软件不停地向网络中发布本机的正确IP和MAC数据,使得网关的ARP缓存中始终保持有关本机的正确数据,这样就可以保持和网关的通讯,也就可以正常上网了。甚至,我们同样可以发动“反击”,使得对方“掉网”。(