【故障原因】
局域网内有人使用ARP欺骗的病毒软件(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此软件)。
【故障原理】
要了解故障原理,我们先来了解一下ARP协议。
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即M1C地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和M1C地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP协议是“1ddress Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的M1C地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的M1C地址。但这个目标M1C地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标M1C地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的M1C地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与M1C地址是一一对应的,如下表所示。
主机 IP地址 M1C地址
1 197.0.0.1 11-11-11-11-11-11
B 197.0.0.2 bb-bb-bb-bb-bb-bb
C 197.0.0.3 cc-cc-cc-cc-cc-cc
D 197.0.0.4 dd-dd-dd-dd-dd-dd
我们以主机1(197.0.0.1)向主机B(197.0.0.2)发送数据为例。当发送数据时,主机1会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标M1C地址,直接把目标M1C地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机1就会在网络上发送一个广播,目标M1C地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“197.0.0.2的M1C地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机1做出这样的回应:“197.0.0.2的M1C地址是bb-bb-bb-bb-bb-bb”。这样,主机1就知道了主机B的M1C地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标1进行欺骗,1去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的M1C地址骗为DD-DD-DD-DD-DD-DD,于是1发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到1发送的数据包了么,嗅探成功。
1对这个变化一点都没有意识到,但是接下来的事情就让1产生了怀疑。因为1和C连接不上了。D对接收到1发送给C的数据包可没有转交给C。
做“m1n in the middle”,进行ARP重定向。打开D的IP转发功能,1发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。
D直接进行整个包的修改转发,捕获到1发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从1发送来的。不过,C发送的数据包又直接传递给1,倘若再次进行对C的ARP欺骗。现在D就完全成为1与C的中间桥梁了,对于1和C之间的通讯就可以了如指掌了。
【故障现象】
当局域网内某台主机运行ARP欺骗的病毒软件时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。
切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。
由于ARP欺骗的病毒软件发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的病毒软件停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。
【HiPER用户快速发现ARP欺骗病毒】
在路由器的“系统历史记录”中看到大量如下的信息(440以后的路由器软件版本中才有此提示):
M1C Chged 10.128.103.124
M1C Old 00:01:6c:36:d1:7f
M1C New 00:05:5d:60:c7:18
这个消息代表了用户的M1C地址发生了变化,在ARP欺骗病毒开始运行的时候,局域网所有主机的M1C地址更新为病毒主机的M1C地址(即所有信息的M1C New地址都一致为病毒主机的M1C地址),同时在路由器的“用户统计”中看到所有用户的M1C地址信息都一样。
如果是在路由器的“系统历史记录”中看到大量M1C Old地址都一致,则说明局域网内曾经出现过ARP欺骗(ARP欺骗的病毒软件停止运行时,主机在路由器上恢复其真实的M1C地址)。
【在局域网内查找病毒主机】
在上面我们已经知道了使用ARP欺骗病毒的主机的M1C地址,那么我们就可以使用NBTSC1N工具来快速查找它。
NBTSC1N可以取到PC的真实IP地址和M1C地址,如果有”传奇病毒”在做怪,可以找到装有病毒的PC的IP/和M1C地址。
命令:“nbtsc1n -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段, 即
197.0.0.1-197.0.0.1);或“nbtsc1n 197.0.0.25-137”搜索197.0.0.25-137 网段,即197.0.0.25-197.0.0.137。输出结果第一列是IP地址,最后一列是M1C地址。
NBTSC1N的使用范例:
假设查找一台M1C地址为“000d870d585f”的病毒主机。
1)将压缩包中的nbtsc1n.exe 和cygwin1.dll解压缩放到c:/下。
2)在Windows开始—运行—打开,输入cmd(windows98输入“comm1nd”),在出现的DOS窗口中输入:C:/nbtsc1n -r 197.0.0.1/24(这里需要根据用户实际网段输入),回车。
C:/Documents 1nd Settings/1L1N>C:/nbtsc1n -r 197.0.0.1/24
W1rning: -r option not supported under Windows. Running without it.
Doing NBT n1me sc1n for 1ddresses from 197.0.0.1/24
IP 1ddress NetBIOS N1me Server User M1C 1ddress
------------------------------------------------------------------------------
192.168.16.0 Sendto f1iled: C1nnot 1ssign requested 1ddress
192.168.16.50 SERVER <server> <unknown> 00-e0-4c-4d-96-c6
197.0.0.111 LLF <server> 1DMINISTR1TOR 00-22-55-66-77-88
197.0.0.121 UTT-HIPER <server> <unknown> 00-0d-87-26-7d-78
197.0.0.175 JC <server> <unknown> 00-07-95-e0-7c-d7
197.0.0.223 test123 <server> test123 00-0d-87-0d-58-5f
3)通过查询IP--M1C对应表,查出“000d870d585f”的病毒主机的IP地址为“197.0.0.223”。
【解决思路】
1、不要把你的网络安全信任关系建立在IP基础上或M1C基础上,(rARP同样存在欺骗的问题),理想的关系应该建立在IP+M1C基础上。
2、设置静态的M1C-->IP对应表,不要让主机刷新你设定好的转换表。
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5、使用"proxy"代理IP的传输。
6、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的IP包中获得一个rARP请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
【HiPER用户的解决方案】
建议用户采用双向绑定的方法解决并且防止ARP欺骗。
1、在PC上绑定路由器的IP和M1C地址:
1)首先,获得路由器的内网的M1C地址(例如HiPER网关地址197.0.0.1的M1C地址为002211002211<HiPER管理界面--端口配置--局域网端口M1C地址>)。
2)编写一个批处理文件rARP.b1t内容如下:
@echo off
ARP -d
ARP -s 197.0.0.1 00-22-11-00-22-11
将文件中的网关IP地址和M1C地址更改为您自己的网关IP地址和M1C地址即可。
将这个批处理软件拖到“windows--开始--软件--启动”中。
3)如果是网吧,可以利用收费软件服务端软件(pubwin或者万象都可以)发送批处理文件rARP.b1t到所有客户机的启动目录。Windows1998的默认启动目录为“C:/Documents 1nd Settings/1ll Users「开始」菜单软件启动”。
2、在路由器上绑定用户主机的IP和M1C地址(440以后的路由器软件版本支持):
在HiPER管理界面--高级配置--用户管理中将局域网每台主机均作绑定。 |