静态ARP与arp协议图解

当前位置 : 首页 > 实用技巧 > 组网教程 > 静态ARP与arp协议图解

静态ARP与arp协议图解

来源:互联网 作者:脚本宝典 时间:2015-07-27 13:15
WIN2000的时候ARP-S命令设置的STATICARPENTRY还是经常被人ARPSPOOFING,最近实验WIN2003的ARP-S终于可以锁定ARP项再也不怕网络执法官这些软件了。 该病毒发作时候的特征为,中毒的机器会伪造某

WIN2000的时候ARP -S命令设置的STATIC ARP ENTRY还是经常被人ARP SPOOFING,最近实验WIN2003的ARP -S终于可以锁定ARP项再也不怕网络执法官这些软件了。
该病毒发作时候的特征为,中毒的机器会伪造某台电脑的MAC地址,如该伪造地址为网关服务器的地址,那么对整个网吧均会造成影响,用户表现为上网经常瞬断。  

一、在任意客户机上进入命令提示符(或MS-DOS方式),用arp –a命令查看:  
C:\WINNT\system32>arp -a  

Interface: 192.168.0.193 on Interface 0x1000003  
Internet Address Physical Address Type  
192.168.0.1 00-50-da-8a-62-2c dynamic  
192.168.0.23 00-11-2f-43-81-8b dynamic  
192.168.0.24 00-50-da-8a-62-2c dynamic  
192.168.0.25 00-05-5d-ff-a8-87 dynamic  
192.168.0.200 00-50-ba-fa-59-fe dynamic  

可以看到有两个机器的MAC地址相同,那么实际检查结果为  
00-50-da-8a-62-2c为192.168.0.24的MAC地址,192.168.0.1的实际MAC地址为00-02-ba-0b-04-32,我们可以判定192.168.0.24实际上为有病毒的机器,它伪造了192.168.0.1的MAC地址。  

二、在192.168.0.24上进入命令提示符(或MS-DOS方式),用arp –a命令查看:  
C:\WINNT\system32>arp -a  
Interface: 192.168.0.24 on Interface 0x1000003  
Internet Address Physical Address Type  
192.168.0.1 00-02-ba-0b-04-32 dynamic  
192.168.0.23 00-11-2f-43-81-8b dynamic  
192.168.0.25 00-05-5d-ff-a8-87 dynamic  
192.168.0.193 00-11-2f-b2-9d-17 dynamic  
192.168.0.200 00-50-ba-fa-59-fe dynamic  


可以看到带病毒的机器上显示的MAC地址是正确的,而且该机运行速度缓慢,应该为所有流量在二层通过该机进行转发而导致,该机重启后网吧内所有电脑都不能上网,只有等arp刷新MAC地址后才正常,一般在2、3分钟左右。  

三、如果主机可以进入dos窗口,用arp –a命令可以看到类似下面的现象:  
C:\WINNT\system32>arp -a  
Interface: 192.168.0.1 on Interface 0x1000004  
Internet Address Physical Address Type  
192.168.0.23 00-50-da-8a-62-2c dynamic  
192.168.0.24 00-50-da-8a-62-2c dynamic  
192.168.0.25 00-50-da-8a-62-2c dynamic  
192.168.0.193 00-50-da-8a-62-2c dynamic  
192.168.0.200 00-50-da-8a-62-2c dynamic  

该病毒不发作的时候,在代理服务器上看到的地址情况如下:  
C:\WINNT\system32>arp -a  
Interface: 192.168.0.1 on Interface 0x1000004  
Internet Address Physical Address Type  
192.168.0.23 00-11-2f-43-81-8b dynamic  
192.168.0.24 00-50-da-8a-62-2c dynamic  
192.168.0.25 00-05-5d-ff-a8-87 dynamic  
192.168.0.193 00-11-2f-b2-9d-17 dynamic  
192.168.0.200 00-50-ba-fa-59-fe dynamic  


病毒发作的时候,可以看到所有的ip地址的mac地址被修改为00-50-da-8a-62-2c,正常的时候可以看到MAC地址均不会相同。 
解决办法: 
一、采用客户机及网关服务器上进行静态ARP绑定的办法来解决。 
1. 在所有的客户端机器上做网关服务器的ARP静态绑定。 
首先在网关服务器(代理主机)的电脑上查看本机MAC地址 
C:\WINNT\system32>ipconfig /all 
Ethernet adapter 本地连接 2: 
Connection-specific DNS Suffix . : 
Description . . . . . . . . . . . : Intel? PRO/100B PCI 
Adapter (TX) 
Physical Address. . . . . . . . . : 00-02-ba-0b-04-32 
Dhcp Enabled. . . . . . . . . . . : No 
IP Address. . . . . . . . . . . . : 192.168.0.1 
Subnet Mask . . . . . . . . . . . : 255.255.255.0 
然后在客户机器的DOS命令下做ARP的静态绑定 
C:\WINNT\system32>arp –s 192.168.0.1 00-02-ba-0b-04-32 
注:如有条件,建议在客户机上做所有其他客户机的IP和MAC地址绑定。 

2. 在网关服务器(代理主机)的电脑上做客户机器的ARP静态绑定 
首先在所有的客户端机器上查看IP和MAC地址,命令如上。 
然后在代理主机上做所有客户端服务器的ARP静态绑定。如: 
C:\winnt\system32> arp –s 192.168.0.23 00-11-2f-43-81-8b 
C:\winnt\system32> arp –s 192.168.0.24 00-50-da-8a-62-2c 
C:\winnt\system32> arp –s 192.168.0.25 00-05-5d-ff-a8-87 
。。。。。。。。。 

3. 以上ARP的静态绑定最后做成一个windows自启动文件,让电脑一启动就执行以上操作,保证配置不丢失。 

二、有条件的网吧可以在交换机内进行IP地址与MAC地址绑定 


三、IP和MAC进行绑定后,更换网卡需要重新绑定,因此建议在客户机安装杀毒软件来解决此类问题:该网吧发现的病毒是变速齿轮2.04B中带的,病毒程序在 
http://www.wgwang.com/list/3007.html 可下载到: 

1、 KAV(卡巴斯基),可杀除该病毒,病毒命名为:TrojanDropper.Win32.Juntador.c 
杀毒信息:07.02.2005 10:48:00 C:\Documents and 
Settings\Administrator\Local Settings\Temporary Internet 
Files\Content.IE5\B005Z0K9\Gear_Setup[1].exe infected 
TrojanDropper.Win32.Juntador.c 

2、 瑞星可杀除该病毒,病毒命名为:TrojanDropper.Win32.Juntador.f 

3、 
另:别的地市报金山毒霸和瑞星命名:“密码助手”木马病毒(Win32.Troj.Mir2)或Win32.Troj.Zypsw.33952的病毒也有类似情况。 

附:“密码助手”病毒及TrojanDropper.Win32.Juntador.c 病毒介绍地址: 
http://db.kingsoft.com/c/2004/11/22/152800.shtml 

http://www.pestpatrol.com/pest_info/zh/t/t..._juntador_c.asp 最近!全国网吧疯狂出现局部机器集体掉线问题!  
本人维护的网吧!以前出现过2次arp欺骗的病毒.不过自从换了PF-2.8 oem服务器系统之后!  
把网关和MAC绑定!基本不会出现arp欺骗问题!  
这次掉线也怀疑是病毒问题!但是竟过排查不是病毒!  
总结下经验:  

1:关闭局域网内所有交换机5分钟后。重新接通电源,观察网络是否恢复正常!(原因:可能是交换机长时间没有重启其内存已用光,导致交换数据速度缓慢,或受网络风暴影响导致阻塞)(另一种可能是交换机的某一个或几个接口模块损坏,或交换机故障引发的网络内暴,解决方法是更换交换机)  
解决方案2:找个机器装个CommView,IP地址设置为你的路由器IP(拔掉路由器,使其脱离网络)然后你看看内网机器都向外面发送了什么包,看看哪个机器发包最多,朝什么IP发的?如果发现某机器向外发送大量目的IP是连续的包,且速度很快的话,请修理该机器!  
(可能是原因是:局域网中的某一台或者多台机器感染了蠕虫病毒,在疯狂发包,导致路由器NAT连接很快占满)  
解决方案3:如果上述二种原因被排除或不能解决其问题,可能是你的路由器性能低劣,处理能力有限造成的。你可以制作ROUTE  
OS之类的软件路由器,或者购买3000~5000元左右的硬路由,并更换以观察情况。  
解决方案4:局域网内某台/某几台计算机网卡接口损坏,而不停的向网络中发送大量的*数据包造成网络阻塞。(集成网卡容易出现此问题,尤其是网络中机器较多时此问题也是比较难于排查的,可以试着断开某台交换机,进行逐一排查)在确认了是哪台交换机内的机器有问题后。逐台打开这些机器,进入桌面,退出所有管理软件,打开网络连接,在不做任何事的情况下,看谁在大量发包或收包  
解决方案5:(此情况比较特殊:局域网中有人使用非法软件恶意攻击网吧 或  
ARP病毒攻击网络)在技术员制作母盘时应各面屏蔽非法攻击网吧的一些软件并在可能的情况下对网关MAC进行静态ARP绑定现在也有很多硬路由器有专门的防掉线的功能了,我们网吧的飞鱼星路由器就可以,可定时广播正常的ARP包,如果你是软件路由的话可以用软件进行防护.  
这里也借鉴了别人的一些经验!  



关于近期全国网吧客户机发生莫明掉线断流的一些解决建议  
发生断流时的状况及现象:  

1:能PING通网内其它客户机,但PING不通路由,上不了网(连接到INTERNET)。  
2:能PING通网内其它客户机,同样PING不通路由,但能上网(能连接到INTERNET)。  


当出现此状况时,用下列操作可恢复连接:1:禁用网卡后启用,2:重启客户机,3:重启路由器,4:在路由上删除其掉线机器对应的ARP列表。  

原因可能性分析:ARP病毒或其它最新的变种病毒及漏洞攻击。  

分析上述状况,可得出以下几点结论:  
此病毒感染机器时,可能修改了客户机的MAC地址,或ARP缓存中的本机对应MAC。  
此病毒感染机器时,可能修改了客户机ARP缓存中网关IP相对应的MAC。  


A:当中毒的机器向网关路由发出请求时,网关路由的ARP缓存还未到刷新时间,网关路由内的ARP缓存表中保存的是客户机还未中毒前的MAC地址。而这个MAC地址,与客户机当前请求的MAC(被病毒修改过)不一致,客户机的连接请求被网关拒绝。即发生与网关断流。  


B:当中毒的源头机器向局域网发出假MAC广播时,网关路由也接收到了此消息,并将这些假MAC地址与其IP相对应,并建立新的ARP缓存。导致客户机与服务器断开连接。  


解决方法:  
1:在网关路由上对客户机使用静态MAC绑定。PF-2.8  
OEM软路由的用户可以参照相关教程,或是在IP--->ARP列表中一一选中对应项目单击右键选择“MAKE  
STATIC”命令,创建静态对应项。  

用防火墙封堵常见病毒端口:134-139,445,500,6677,5800,5900,593,1025,1026,2745,3127,6129  
以及P2P下载  

2:在客户机上进行网关IP及其MAC静态绑定,并修改导入如下注册表:  
(A)禁止ICMP重定向报文  

ICMP的重定向报文控制着Windows是否会改变路由表从而响应网络设备发送给它的ICMP重定向消息,这样虽然方便了用户,但是有时也会被他人利用来进行网络攻击,这对于一个计算机网络管理员来说是一件非常麻烦的事情。通过修改注册表可禁止响应ICMP的重定向报文,从而使网络更为安全。  

修改的方法是:打开注册表编辑器,找到或新建“HKEY_LOCAL_Machine\System\CurrentControlSet\Services\TCPIP\Paramters”分支,在右侧窗口中将子键“EnableICMPRedirects”(REG_DWORD型)的值修改为0(0为禁止ICMP的重定向报文)即可。  

(B)禁止响应ICMP路由通告报文  

“ICMP路由公告”功能可以使他人的计算机的网络连接异常、数据被窃听、计算机被用于流量攻击等,因此建议关闭响应ICMP路由通告报文。  

修改的方法是:打开注册表编辑器,找到或新建“HKEY_LOCAL_Machine\System\CurrentControlSet\Services\TCPIP\Paramters\Interfaces”分支,在右侧窗口中将子键“PerformRouterDiscovery” REG_DWORD型的值修改为0(0为禁止响应ICMP路由通告报文,2为允许响应ICMP路由通告报文)。修改完成后退出注册表编辑器,重新启动计算机即可。
(C)设置arp缓存老化时间设置  

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters  

ArpCacheLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)  
ArpCacheMinReferencedLife REG_DWORD  
0-0xFFFFFFFF(秒数,默认值为600)  

说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP  

缓存项在ArpCacheLife秒后到期.如果ArpCacheLife小于ArpCacheMinReferencedLife,  

未引用项在ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期.  
每次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项。  


曾经看见有人说过,只要保持IP-MAC缓存不被更新,就可以保持正确的ARP协议运行。关于此点,我想可不可以通过,修改注册表相关键值达到:  

默认情况下ARP缓存的超时时限是两分钟,你可以在注册表中进行修改。可以修改的键值有两个,都位于  


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters  


修改的键值:  

键值1:ArpCacheLife,类型为Dword,单位为秒,默认值为120  

键值2:ArpCacheMinReferencedLife,类型为Dword,单位为秒,默认值为600  

注意:这些键值默认是不存在的,如果你想修改,必须自行创建;修改后重启计算机后生效。  


如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP缓存的超时时间设置为ArpCacheLife的值;如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么对于未使用的ARP缓存,超时时间设置为120秒;对于正在使用的ARP缓存,超时时间则设置为ArpCacheMinReferencedLife的值。  


我们也许可以将上述键值设置为非常大,不被强制更新ARP缓存。为了防止病毒自己修改注册表,可以对注册表加以限制。  


对于小网吧,只要事先在没遇到ARP攻击前,通过任意一个IP-MAC地址查看工具,纪录所有机器的正确IP-MAC地址。等到受到攻击可以查看哪台机器出现问题,然后通常是暴力解决,问题也许不是很严重。但是对于内网电脑数量过大,每台机器都帮定所有IP-MAC地址,工作量非常巨大,必须通过专门软件执行。 

1 ARP协议概述


IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,AR P)就是用来确定这些映象的协议。

ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。

如果有一个不被信任的节点对本地网络具有写访问许可权,那么也会有某种风险。这样一台机器可以发布虚假的ARP报文并将所有通信都转向它自己,然后它就可以扮演某些机器,或者顺便对数据流进行简单的修改。ARP机制常常是自动起作用的。在特别安全的网络上, ARP映射可以用固件,并且具有自动抑制协议达到防止干扰的目的。


图1 以太网上的ARP报文格式 
图1 以太网上的ARP报文格式


图1是一个用作IP到以太网地址转换的ARP报文的例子。在图中每一行为32位,也就是4个八位组表示,在以后的图中,我们也将遵循这一方式。

硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1。协议类型字段指明了发送方提供的高层协议类型,IP为0806(16进制)。硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用。操作字段用来表示这个报文的目的,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4。

当发出ARP请求时,发送方填好发送方首部和发送方IP地址,还要填写目标IP地址。当目标机器收到这个ARP广播包时,就会在响应报文中填上自己的48位主机地址。

2 ARP使用举例

我们先看一下linux下的arp命令(如果开始arp表中的内容为空的话,需要先对某台主机进行一个连接,例如ping一下目标主机来产生一个arp项):

d2server:/home/kerberos# arp
Address     HWtype HWaddress     Flags Mask      Iface
211.161.17.254  ether  00:04:9A:AD:1C:0A   C         eth0
Address:主机的IP地址
Hwtype:主机的硬件类型
Hwaddress:主机的硬件地址
Flags Mask:记录标志,"C"表示arp高速缓存中的条目,"M"表示静态的arp条目。

用"arp --a"命令可以显示主机地址与IP地址的对应表,也就是机器中所保存的arp缓存信息。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起。

d2server:/home/kerberos# arp -a
(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0
可以看到在缓存中有一条211.161.17.254相对应的arp缓存条目。
d2server:/home/kerberos# telnet 211.161.17.21
Trying 211.161.17.21...
Connected to 211.161.17.21.
Escape character is '^]'.
^].
telnet>quit
connetion closed.

在执行上面一条telnet命令的同时,用tcpdump进行监听:

d2server:/home/kerberos# tcpdump -e dst host 211.161.17.21
tcpdump: listening on eth0

我们将会听到很多包,我们取与我们arp协议相关的2个包:

1 0.0 		00:D0:F8:0A:FB:83 	FF:FF:FF:FF:FF:FF arp 60
			who has 211.161.17.21 tell d2server
2 0.002344(0.0021)	00:E0:3C:43:0D:24 	00:D0:F8:0A:FB:83 arp 60
			arp reply 211.161.17.21 is at 00:E0:3C:43:0D:24			

在第1行中,源端主机(d2server)的硬件地址是00:D0:F8:0A:FB:83。目的端主机的硬件地址是FF:FF:FF:FF:FF:FF,这是一个以太网广播地址。电缆上的每个以太网接口都要接收这个数据帧并对它进行处理。

第1行中紧接着的一个输出字段是arp,表明帧类型字段的值是0x0806,说明此数据帧是一个ARP请求或回答。

在每行中,单词后面的值60指的是以太网数据帧的长度。由于ARP请求或回答的数据帧长都是42字节(28字节的ARP数据,14字节的以太网帧头),因此,每一帧都必须加入填充字符以达到以太网的最小长度要求:60字节。

第1行中的下一个输出字段arp who-has表示作为ARP请求的这个数据帧中,目的I P地址是211.161.17.21的地址,发送端的I P地址是d2server的地址。tcpdump打印出主机名对应的默认I P地址。

从第2行中可以看到,尽管ARP请求是广播的,但是ARP应答的目的地址却是211.161.17.21(00:E0:3C:43:0D:24)。ARP应答是直接送到请求端主机的,而是广播的。tcpdump打印出arp reply的字样,同时打印出响应者的主机ip和硬件地址。

在每一行中,行号后面的数字表示tcpdump收到分组的时间(以秒为单位)。除第1行外,每行在括号中还包含了与上一行的时间差异(以秒为单位)。

这个时候我们再看看机器中的arp缓存:

d2server:/home/kerberos# arp -a
(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0
(211.161.17.21) at 00:E0:3C:43:0D:24 [ether] on eth0

arp高速缓存中已经增加了一条有关211.161.17.21的映射。

再看看其他的arp相关的命令:

d2server:/home/kerberos# arp -s 211.161.17.21 00:00:00:00:00:00
d2server:/home/kerberos# arp
Address     HWtype HWaddress    Flags Mask    Iface
211.161.17.254   ether  00:04:9A:AD:1C:0A   C      eth0
211.161.17.21   ether  00:00:00:00:00:00   CM      eth0
d2server:/home/kerberos# arp -a
(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0
(211.161.17.21) at 00:00:00:00:00:00 [ether] PERM on eth0

可以看到我们用arp -s选项设置了211.161.17.21对应的硬件地址为00:00:00:00:00:00,而且这条映射的标志字段为CM,也就是说我们手工设置的arp选项为静态arp选项,它保持不变没有超时,不像高速缓存中的条目要在一定的时间间隔后更新。

如果想让手工设置的arp选项有超时时间的话,可以加上temp选项

d2server:/home/kerberos# arp -s 211.161.17.21 00:00:00:00:00:00 temp
d2server:/home/kerberos# arp -a
(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0
(211.161.17.21) at 00:00:00:00:00:00 [ether] on eth0
d2server:/home/kerberos# arp
Address    HWtype HWaddress     Flags Mask   Iface
211.161.17.254  ether  00:04:9A:AD:1C:0A   C      eth0
211.161.17.21  ether  00:00:00:00:00:00    C      eth0

可以看到标志字段的静态arp标志"M"已经去掉了,我们手工加上的是一条动态条目。

请大家注意arp静态条目与动态条目的区别。

在不同的系统中,手工设置的arp静态条目是有区别的。在linux和win2000中,静态条目不会因为伪造的arp响应包而改变,而动态条目会改变。而在win98中,手工设置的静态条目会因为收到伪造的arp响应包而改变。

如果您想删除某个arp条目(包括静态条目),可以用下面的命令:

d2server:/home/kerberos# arp -d 211.161.17.21 
d2server:/home/kerberos# arp -a
(211.161.17.254) at 00:04:9A:AD:1C:0A [ether] on eth0
(211.161.17.21) aton eth0

可以看到211.161.17.21的arp条目已经是不完整的了。

还有一些其他的命令,可以参考linux下的man文档:

d2server:/home/kerberos# man arp


Tag:

相关文章

网友评论

<