以文本方式查看主题

-  康柏仕电脑学院  (http://combss.com/bbs/index.asp)
--  精品软件下载区  (http://combss.com/bbs/list.asp?boardid=22)
----  ARP病毒---解决方法汇总  (http://combss.com/bbs/dispbbs.asp?boardid=22&id=1860)

--  作者:轻轻风聆
--  发布时间:2008/5/25 16:32:15
--  ARP病毒---解决方法汇总
【故障现象】

当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。
切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。
由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。



1.巧用“IP地址冲突”揪出ARP病毒的源头
网络管理员或用户来说,发生“IP地址冲突”是不受欢迎的事情,因为在一个网络中,每个主机(严格来说是网络接口)都应该有唯一的一个IP地址,如果出现2个或两个以上主机使用相同的IP地址,这些使用相同IP地址的主机屏幕会弹出对话框报告IP地址冲突(如下图):


IP地址冲突

  这将导致这些使用相同IP的机器不能正常访问网络。但是,前几天笔者却用这个有如鸡肋的功能帮了一个大忙。是怎么一回事呢?听我慢慢道来。

  本月12号那天,我被派到月坛大厦的客服部门处理网路故障。经初步诊断,发现网络时断时续,重启网关的话,能够正常好一会,过一段时间后就不灵了。

  这是一个十分简单的网络:一条外网网线进来,接入一台运行FreeBSD的网关(做NAT用),网关机的另外一个网络接口接交换机,客户端全部接2个在交换机上,同时,网关机提供DHCP服务,所有的客户机使用DHCP自动获取IP。

  首先,我得确定故障发生在那里;重启网关,发现客户机能正常上网,但网关马上提示DHCP请求超时的报警,除此而外看不出什么端倪,去客户端查IP,发现获取的IP地址正常,于是又怀疑是不是交换机有问题,等一会,发现故障又出现了,重启一下交换机,网络又正常了问题到底在哪里呢?一下犯晕了。

  整理了一下思路,然后找了一台客户机(客户机全是windows),先ping一下网关,发现居然ping不通,ping网内的另外一台机器则正常,重启网关再用客户机ping 网关则正常,毫无疑问,网络中了ARP欺骗病毒了。

  进系统目录,发现c:下有几个异常的文件,该名某个文件,居然不让操作,运行命令 arp –a 发现多行arp请求,看来是病毒引起的网络堵塞故障。不能把所有的机器都与网络段掉,当务之急是先找出当前正在作崇的主机然后隔离处理。

  怎么辨别是网络中那台主机中毒厉害呢?网上已经有很多不错的办法。有人建议用抓包工具,然后分析抓到的包信息来确认中毒的主机,然而我手里没有任何抓包工具,看来只好自己想招了。经过摸索,总结了下面一些行之有效的办法,供大家参考。

  在客户机运行路由跟踪命令如 tracert –d www.163.com,马上就发现第一条不是网关机的内网ip,而是本网段内的另外一台机器的IP,再下一跳才是网关的内网IP;正常情况是路由跟踪执行后的输出第一条应该是默认网关地址,由此判定第一跳的那个非网关IP 地址的主机就是罪魁祸首。

  问题又出来了,由于网内的主机IP地址是通过DHCP自动获取来的,怎么找出这个主机又是一个难题,几十个机器,挨个用 ipconfig/all查非累死不可,怎么办?得走捷径才行。突然之间冒出一个念头:设置一个与查出来的中毒主机相同的IP地址,然后……,接下来,找一台客户端机器,查一下其自动获取的IP地址,没有那么幸运-这台机器不是要揪出来的那个IP,然后把这个主机的”自动获取IP地址”取消,手动设置机器的IP与有病毒的那个IP相同,设置生效后就听见一个妹妹嚷道:“我的IP地址怎么跟别人冲突了呢?”,殊不知,我要找的就是你呢!把妹妹的主机隔离网络,其他的机器上网立马就顺畅了。

  处理arp病毒的操作我想大家都应该有经验了,在这里就不再多罗嗦。

  简单总结一下,其主要步骤有两步:1、运行 tracert –d www.163.com 找出作崇的主机IP地址。 设置与作崇主机相同的IP,然后造成IP地址冲突,使中毒主机报警然后找到这个主机。

2.解决ARP攻击的方法
【故障原因】

局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序)。

【故障原理】

要了解故障原理,我们先来了解一下ARP协议。
在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。

主机 IP地址 MAC地址
A 192.168.16.1 aa-aa-aa-aa-aa-aa
B 192.168.16.2 bb-bb-bb-bb-bb-bb
C 192.168.16.3 cc-cc-cc-cc-cc-cc
D 192.168.16.4 dd-dd-dd-dd-dd-dd


我们以主机A(192.168.16.1)向主机B(192.168.16.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了 如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.16.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。对目标A进行欺骗,A去Ping主机C却发送到了DD-DD-DD-DD-DD-DD这个地址上。如果进行欺骗的时候,把C的MAC地址骗为DD-DD-DD-DD-DD-DD,于是A发送到C上的数据包都变成发送给D的了。这不正好是D能够接收到A发送的数据包了么,嗅探成功。
A对这个变化一点都没有意识到,但是接下来的事情就让A产生了怀疑。因为A和C连接不上了。D对接收到A发送给C的数据包可没有转交给C。
做“man in the middle”,进行ARP重定向。打开D的IP转发功能,A发送过来的数据包,转发给C,好比一个路由器一样。不过,假如D发送ICMP重定向的话就中断了整个计划。
D直接进行整个包的修改转发,捕获到A发送给C的数据包,全部进行修改后再转发给C,而C接收到的数据包完全认为是从A发送来的。不过,C发送的数据包又直接传递给A,倘若再次进行对C的ARP欺骗。现在D就完全成为A与C的中间桥梁了,对于A和C之间的通讯就可以了如指掌了。

【故障现象】

当局域网内某台主机运行ARP欺骗的木马程序时,会欺骗局域网内所有主机和路由器,让所有上网的流量必须经过病毒主机。其他用户原来直接通过路由器上网现在转由通过病毒主机上网,切换的时候用户会断一次线。
切换到病毒主机上网后,如果用户已经登陆了传奇服务器,那么病毒主机就会经常伪造断线的假像,那么用户就得重新登录传奇服务器,这样病毒主机就可以盗号了。
由于ARP欺骗的木马程序发作的时候会发出大量的数据包导致局域网通讯拥塞以及其自身处理能力的限制,用户会感觉上网速度越来越慢。当ARP欺骗的木马程序停止运行时,用户会恢复从路由器上网,切换过程中用户会再断一次线。

【HiPER用户快速发现ARP欺骗木马】

在路由器的“系统历史记录”中看到大量如下的信息(440以后的路由器软件版本中才有此提示):
MAC Chged 10.128.103.124
MAC Old 00:01:6c:36:d1:7f
MAC New 00:05:5d:60:c7:18
这个消息代表了用户的MAC地址发生了变化,在ARP欺骗木马开始运行的时候,局域网所有主机的MAC地址更新为病毒主机的MAC地址(即所有信息的MAC New地址都一致为病毒主机的MAC地址),同时在路由器的“用户统计”中看到所有用户的MAC地址信息都一样。
如果是在路由器的“系统历史记录”中看到大量MAC Old地址都一致,则说明局域网内曾经出现过ARP欺骗(ARP欺骗的木马程序停止运行时,主机在路由器上恢复其真实的MAC地址)。

【在局域网内查找病毒主机】

在上面我们已经知道了使用ARP欺骗木马的主机的MAC地址,那么我们就可以使用NBTSCAN(下载地址:http://www.utt.com.cn/upload/nbtscan.rar)工具来快速查找它。
NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”传奇木马”在做怪,可以找到装有木马的PC的IP/和MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段, 即
192.168.16.1-192.168.16.254) 或“nbtscan 192.168.16.25-137”搜索192.168.16.25-137 网段,即192.168.16.25-192.168.16.137。输出结果第一列是IP地址,最后一列是MAC地址。
NBTSCAN的使用范例:
假设查找一台MAC地址为“000d870d585f”的病毒主机。
1)将压缩包中的nbtscan.exe 和cygwin1.dll解压缩放到c:\\下。
2)在Windows开始—运行—打开,输入cmd(windows98输入“command”),在出现的DOS窗口中输入:C:\\nbtscan -r 192.168.16.1/24(这里需要根据用户实际网段输入),回车。


C:\\Documents and Settings\\ALAN> C:\\nbtscan -r 192.168.16.1/24
Warning: -r option not supported under Windows. Running without it.
Doing NBT name scan for addresses from 192.168.16.1/24
IP address NetBIOS Name Server User MAC address
------------------------------------------------------------------------------
192.168.16.0 Sendto failed: Cannot assign requested address
192.168.16.50 SERVER < server> < unknown> 00-e0-4c-4d-96-c6
192.168.16.111 LLF < server> ADMINISTRATOR 00-22-55-66-77-88
192.168.16.121 UTT-HIPER < server> < unknown> 00-0d-87-26-7d-78
192.168.16.175 JC < server> < unknown> 00-07-95-e0-7c-d7
192.168.16.223 test123 < server> test123 00-0d-87-0d-58-5f

3)通过查询IP--MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。

【解决思路】

1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2、设置静态的MAC--> 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和MAC地址:
1)首先,获得路由器的内网的MAC地址(例如HiPER网关地址192.168.16.254的MAC地址为0022aa0022aa< HiPER管理界面--端口配置--局域网端口MAC地址> )。
2)编写一个批处理文件rarp.bat内容如下:
@echo off
arp -d
arp -s 192.168.16.254 00-22-aa-00-22-aa
将文件中的网关IP地址和MAC地址更改为您自己的网关IP地址和MAC地址即可。
将这个批处理软件拖到“windows--开始--程序--启动”中。
3)如果是网吧,可以利用收费软件服务端程序(pubwin或者万象都可以)发送批处理文件rarp.bat到所有客户机的启动目录。Windows2000的默认启动目录为“C:\\Documents and Settings\\All Users「开始」菜单程序启动”。
2、在路由器上绑定用户主机的IP和MAC地址(440以后的路由器软件版本支持):
在HiPER管理界面--高级配置--用户管理中将局域网每台主机均作绑定。



3.在局域网内如何防止ARP欺骗
对于ARP欺骗,提出几点加强安全防范的措施。环境是主机或者网关是基于Linux/BSD的。

  一、理论前提

  本着“不冤枉好人,不放过一个坏人的原则”,先说说我的一些想法和理论依据。首先,大家肯定发送ARP欺骗包肯定是一个恶毒的程序自动发送的,正常的TCP/IP网络是不会有这样的错误包发送的(板砖扔了过来啊,废话!)。这就假设,如果犯罪嫌疑人没有启动这个破坏程序的时候,网络环境是正常的,或者说网络的ARP环境是正常的,如果我们能在犯罪嫌疑人启动这个犯罪程序的第一时间,一开始就发现了他的犯罪活动,那么就是人赃俱在,不可抵赖了,因为刚才提到,前面网络正常的时候证据是可信和可依靠的。好,接下来我们谈论如何在第一时间发现他的犯罪活动。

  ARP欺骗的原理如下:

  假设这样一个网络,一个Hub接了3台机器

  HostA HostB HostC 其中

  A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

  B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

  C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

  正常情况下 C:\\arp -a

  Interface: 192.168.10.1 on Interface 0x1000003

  Internet Address Physical Address Type

  192.168.10.3 CC-CC-CC-CC-CC-CC dynamic

  现在假设HostB开始了罪恶的ARP欺骗:

  B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不知道被伪造了)。而且A不知道其实是从B发送过来的,A这里只有192.168.10.3(C的IP地址)和无效的DD-DD-DD-DD-DD-DD mac地址,没有和犯罪分子B相关的证据,哈哈,这样犯罪分子岂不乐死了。

  现在A机器的ARP缓存更新了:

  C:\\>arp -a

  Interface: 192.168.10.1 on Interface 0x1000003

  Internet Address Physical Address Type

  192.168.10.3 DD-DD-DD-DD-DD-DD dynamic

  这可不是小事。局域网的网络流通可不是根据IP地址进行,而是按照MAC地址进行传输。现在192.168.10.3的MAC地址在A上被改变成一个本不存在的MAC地址。现在A开始Ping 192.168.10.3,网卡递交的MAC地址是DD-DD-DD-DD-DD-DD,结果是什么呢?网络不通,A根本不能Ping通C!!

  所以,局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包,NND,严重的网络堵塞就开始了!网吧管理员的噩梦开始了。我的目标和任务,就是第一时间,抓住他。不过从刚才的表述好像犯罪分子完美的利用了以太网的缺陷,掩盖了自己的罪行。但其实,以上方法也有留下了蛛丝马迹。尽管,ARP数据包没有留下HostB的地址,但是,承载这个ARP包的ethernet帧却包含了HostB的源地址。而且,正常情况下ethernet数据帧中,帧头中的MAC源地址/目标地址应该和帧数据包中ARP信息配对,这样的ARP包才算是正确的。如果不正确,肯定是假冒的包,可以提醒!但如果匹配的话,也不一定代表正确,说不定伪造者也考虑到了这一步,而伪造出符合格式要求,但内容假冒的ARP数据包。不过这样也没关系,只要网关这里拥有本网段所有MAC地址的网卡数据库,如果和Mac数据库中数据不匹配也是假冒的ARP数据包。也能提醒犯罪分子动手了。

  二、防范措施

  1.建立DHCP服务器(建议建在网关上,因为DHCP不占用多少CPU,而且ARP欺骗攻击一般总是先攻击网关,我们就是要让他先攻击网关,因为网关这里有监控程序的,网关地址建议选择192.168.10.2 ,把192.168.10.1留空,如果犯罪程序愚蠢的话让他去攻击空地址吧),另外所有客户机的IP地址及其相关主机信息,只能由网关这里取得,网关这里开通DHCP服务,但是要给每个网卡,绑定固定唯一IP地址。一定要保持网内的机器IP/MAC一一对应的关系。这样客户机虽然是DHCP取地址,但每次开机的IP地址都是一样的。

  2.建立MAC数据库,把网吧内所有网卡的MAC地址记录下来,每个MAC和IP、地理位置统统装入数据库,以便及时查询备案。

  3.网关机器关闭ARP动态刷新的过程,使用静态路邮,这样的话,即使犯罪嫌疑人使用ARP欺骗攻击网关的话,这样对网关也是没有用的,确保主机安全。

  网关建立静态IP/MAC捆绑的方法是:建立/etc/ethers文件,其中包含正确的IP/MAC对应关系,格式如下:

  192.168.2.32 08:00:4E:B0:24:47

  然后再/etc/rc.d/rc.local最后添加:

  arp -f 生效即可

  4.网关监听网络安全。网关上面使用TCPDUMP程序截取每个ARP程序包,弄一个脚本分析软件分析这些ARP协议。ARP欺骗攻击的包一般有以下两个特点,满足之一可视为攻击包报警:第一以太网数据包头的源地址、目标地址和ARP数据包的协议地址不匹配。或者,ARP数据包的发送和目标地址不在自己网络网卡MAC数据库内,或者与自己网络MAC数据库 MAC/IP 不匹配。这些统统第一时间报警,查这些数据包(以太网数据包)的源地址(也有可能伪造),就大致知道那台机器在发起攻击了。

  5.偷偷摸摸的走到那台机器,看看使用人是否故意,还是被任放了什么木马程序陷害的。如果后者,不声不响的找个借口支开他,拔掉网线(不关机,特别要看看Win98里的计划任务),看看机器的当前使用记录和运行情况,确定是否是在攻击。