ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者

【故障原理】 
要了解故障原理,我们先来了解一下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:
btscan -r
192.168.16.1/24(这里需要根据用户实际网段输入),回车。 
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)。 
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 SettingsAll
Users「开始」菜单程序启动”。 
2、在路由器上绑定用户主机的IP和MAC地址(440以后的路由器软件版本支持): 
在HiPER管理界面--高级配置--用户管理中将局域网每台主机均作绑定。 
例 
一、有人恶意破坏网络。 
这种事情,一般会出现在网吧,或是一些人为了找到更好的网吧上网座位,强行让别人断线。 
又或是通过ARP欺骗偷取内网帐号密码。 
二,病毒木马 
如:传奇网吧杀手等,通过ARP欺骗网络内的机器,假冒网关。从而偷取对外连接传奇服务器的密码。 
ARP欺骗的原理如下: 
假设这样一个网络,一个交换机接了3台机器 
HostA HostB HostC 其中 
A的地址为:IP:192.168.1.1 MAC: AA-AA-AA-AA-AA-AA
---------网关 
B的地址为:IP:192.168.1.2 MAC: BB-BB-BB-BB-BB-BB --------
黑客 
C的地址为:IP:192.168.1.3 MAC: CC-CC-CC-CC-CC-CC
---------被欺骗者 
正常情况下 C:\arp -a 
Interface: 192.168.1.3 on Interface
0x1000003 
Internet Address Physical Address Type 
192.168.1.1 BB-BB-BB-BB-BB-BB dynamic 
现在假设HostB开始了罪恶的ARP欺骗:假冒A像c发送ARP欺骗包 
B向C发送一个自己伪造的ARP欺骗包,而这个应答中的数据为发送方IP地址是192.168.1.1(网关的IP地址),MAC地址 
是BB-BB-BB-BB-BB-BB
(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA,这里被伪造了)。当C接收到B伪造的ARP应答,就会更新 
本地的ARP缓存(C可不知道被伪造了)。而且C不知道其实是从B发送过来的,这样C就受到了B的欺骗了,凡是发往A的数据就会发往B, 
这时候那么是比较可怕的,你的上网数据都会先流向B,在通过B去上网,如果这时候B上装了SNIFFER软件,那么你的所有出去的密码都将被截获。 
为了以后出现问题的时候好查找,我建议大家平时建立一个MAC和IP的对应表,把局域网内所有网卡的MAC地址和IP、地理位置统统装入数据库 
,以便当以后发现ARP 欺骗时找出欺骗者的机器。 
 
二、防范措施和解决方法。 
方法一 
通过arp –s 来绑定网关的MAC 地址和IP 地址。 
这种方法对于XP 和2003系统是有用的,使用arp –s
来绑定的话。那么在ARP表中显示的是一条静态的记录。 
这样就不会被动态的ARP 欺骗包给欺骗,而修改。 
那么在2000的系统上也是可以使用arp -s来进行绑定得,在SP4的2000系统上需要下载2000 Rollup
v2更新补丁包,ARP的补丁已经包含在里面 了,大小应该在38MB那样。 
并且装好后,下面几个文件不能小于下面的版本号。 
Date Time Version Size File name 
-------------------------------------------------------- 
19-Jun-2003 20:05 5.0.2195.6602 108,816
Msafd.dll 
02-Jun-2004 22:44 5.0.2195.6938 318,832
Tcpip.sys 
19-Jun-2003 20:05 5.0.2195.6601 17,680
Wshtcpip.dll 
19-Jun-2003 20:05 5.0.2195.6687 120,240
Afd.sys 
19-Jun-2003 20:05 5.0.2195.6655 16,240
Tdi.sys 
相关文章,大家可以看微软的KB .http://support.microsoft.com/kb/842168;
例:arp -s 192.168.1.1 00-0B-AD-DD-22-35 
方法二 
有些木马或是一些骇客总是使用本地网卡上的网关来做欺骗。网关是通往外网或是和不同网络互联的一个中间设备。 
而通过添加路由表中的记录,设置优先级高于网关默认路由,那么网关的路由在级别高的路由可用时将不会生效。 
施行方法:1.先手动修改客户机的网关地址为任意ip地址,最好是同一网段中,没使用的一个IP,以免被怀疑。 
2.手动添加或是通过批处理,或是脚本来添加永久对出口路由。 
此中方法可以欺骗过大部份,菜鸟或是所谓的骇客和大部份ARP欺骗木马。 
缺点是: 如果以后网关以后网卡或是机器改变。那么以后还得重新修改已有得路由。 
route delete 0.0.0.0 -----删除到默认得路由 
route add 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1 ---
添加路由 
route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1
------参数-p 就是添加永久的记录。 
route change --修改路由 
方法 三 
1. 如果你但前使用得交换机器有网卡和MAC地址绑定功能,那么将你所在得网得IP地址和MAC
地址进行绑定。 
但有时候,我们可能没有这些设备那么要想做就很困难了。 
另类方法思路--如何全面解决让ARP欺骗,ARP木马无法在本机器安装,运行。 
大部分监控,arp
欺骗软件,都会使用到一个winpcap驱动。那么现在的思路就是让其无法在本地计算机安装。 
这样arp欺骗软件就无法被使用了使用了,此方法可以用于任何程序的安装。 
需要的条件: 
1.所在的系统盘为NTFS 分区格式。 
2.知道所要安装的文件所要在系统中生成的文件。 
3.使用注册表和文件安装监视软件来监视安装所生成的文件。 
方法四: 
利用些别人做好的ARP 监控工具。 
。 
实验: 
作业: 
1.使用arp -s 来添加一条arp静态记录,使用arp -a 查看添加的记录。使用arp -d
来删除刚添加的那条记录 
2.使用route print 来查看现有的路由表,使用route add -p 来添加一条永久记录,最后使用route
delete来删除刚建的那条记录。 
3.使用组策略禁止本地系统中的记事本程序。 
4.利用注册表和文件安装监视软件,来查找组策略中设置后,对注册表中键值的修改。 
并通过修改注册表,禁止记事本软件(notepad.exe)的执行。 
如何检查和处理“ ARP 欺骗”木马的方法 
1 .检查本机的“ ARP 欺骗”木马染毒进程 
同时按住键盘上的“ CTRL ”和“ ALT ”键再按“ DEL
”键,选择“任务管理器”,点选“进程”标签。察看其中是否有一个名为“ MIR0.dat
”的进程。如果有,则说明已经中毒。右键点击此进程后选择“结束进程”。参见右图。 
2 .检查网内感染“ ARP 欺骗”木马染毒的计算机 
在“开始” - “程序” -
“附件”菜单下调出“命令提示符”。输入并执行以下命令: 
ipconfig 
记录网关 IP 地址,即“ Default Gateway ”对应的值,例如“ 59.66.36.1
”。再输入并执行以下命令: 
arp –a 
在“ Internet Address ”下找到上步记录的网关 IP 地址,记录其对应的物理地址,即“ Physical
Address ”值,例如“ 00-01-e8-1f-35-54 ”。在网络正常时这就是网关的正确物理地址,在网络受“ ARP
欺骗”木马影响而不正常时,它就是木马所在计算机的网卡物理地址。 
也可以扫描本子网内的全部 IP 地址,然后再查 ARP 表。如果有一个 IP 对应的物理地址与网关的相同,那么这个 IP
地址和物理地址就是中毒计算机的 IP 地址和网卡物理地址。 
3 .设置 ARP 表避免“ ARP 欺骗”木马影响的方法 
本方法可在一定程度上减轻中木马的其它计算机对本机的影响。用上边介绍的方法确定正确的网关 IP 地址和网关物理地址,然后在
“命令提示符”窗口中输入并执行以下命令: 
arp –s 网关 IP 网关物理地址 
4.态ARP绑定网关 
步骤一: 
在能正常上网时,进入MS-DOS窗口,输入命令:arp -a,查看网关的IP对应的正确MAC地址,
并将其记录下来。 
注意:如果已经不能上网,则先运行一次命令arp
-d将arp缓存中的内容删空,计算机可暂时恢复上网(攻击如果不停止的话)。一旦能上网就立即将网络断掉(禁用网卡或拔掉网线),再运行arp
-a。 
步骤二: 
如果计算机已经有网关的正确MAC地址,在不能上网只需手工将网关IP和正确的MAC地址绑定,即可确保计算机不再被欺骗攻击。 
要想手工绑定,可在MS-DOS窗口下运行以下命令: 
arp -s 网关IP 网关MAC 
例如:假设计算机所处网段的网关为192.168.1.1,本机地址为192.168.1.5,在计算机上运行arp
-a后输出如下: 
Cocuments and Settings>arp
-a 
Interface:192.168.1.5 --- 0x2 
Internet Address Physical Address Type 
192.168.1.1 00-01-02-03-04-05 dynamic 
其中,00-01-02-03-04-05就是网关192.168.1.1对应的MAC地址,类型是动态(dynamic)的,因此是可被改变的。 
被攻击后,再用该命令查看,就会发现该MAC已经被替换成攻击机器的MAC。如果希望能找出攻击机器,彻底根除攻击,可以在此时将该MAC记录下来,为以后查找该攻击的机器做准备。 
手工绑定的命令为: 
arp -s 192.168.1.1 00-01-02-03-04-05 
绑定完,可再用arp -a查看arp缓存: 
Cocuments and Settings>arp
-a 
Interface: 192.168.1.5 --- 0x2 
Internet Address Physical Address Type 
192.168.1.1 00-01-02-03-04-05 static 
这时,类型变为静态(static),就不会再受攻击影响了。 
但是,需要说明的是,手工绑定在计算机关机重启后就会失效,需要再次重新绑定。所以,要彻底根除攻击,只有找出网段内被病毒感染的计算机,把病毒杀掉,才算是真正解决问题。 
5 .作批处理文件 
在客户端做对网关的arp绑定,具体操作步骤如下: 
步骤一: 
查找本网段的网关地址,比如192.168.1.1,以下以此网关为例。在正常上网时,“开始→运行→cmd→确定”,输入:arp
-a,点回车,查看网关对应的Physical Address。 
比如:网关192.168.1.1 对应00-01-02-03-04-05。 
步骤二: 
编写一个批处理文件rarp.bat,内容如下: 
@echo off 
arp -d 
arp -s 192.168.1.1 00-01-02-03-04-05 
保存为:rarp.bat。 
步骤三: 
运行批处理文件将这个批处理文件拖到“Windows→开始→程序→启动”中,如果需要立即生效,请运行此文件。 
注意:以上配置需要在网络正常时进行 
6.使用安全工具软件 
及时下载Anti ARP
Sniffer软件保护本地计算机正常运行。具体使用方法可以在网上搜索。 
如果已有病毒计算机的MAC地址,可使用NBTSCAN等软件找出网段内与该MAC地址对应的IP,即感染病毒的计算机的IP地址,然后报告单位的网络中心对其进行查封。 
或者利用单位提供的集中网络防病毒系统来统一查杀木马。另外还可以利用木马杀客等安全工具进行查杀。 
7.应急方案 
网络管理管理人员利用上面介绍的ARP木马检测方法在局域网的交换机上查出受感染该病毒的端口后,立即关闭中病毒的端口,通过端口查出相应的用户并通知其彻底查杀病毒。而后,做好单机防范,在其彻底查杀病毒后再开放相应的交换机端口,重新开通上网。 
附录一 
清华大学校园网络安全响应小组编的一个小程序 
清华大学校园网络安全响应小组编了一个小程序,它可以保护您的计算机在同一个局域网内部有ARP欺骗木马计算机的攻击时,保持正常上网。具体使用方法: 
1、 程序运行后请先选择网卡,选定网卡后点击“选定”按钮。 
2、 选定网卡后程序会自动获取您机器的网关地址。 
3、获得网关地址后请点击获取MAC地址按钮获取正确的网关MAC地址。 
4、 确认网关的MAC地址后请点击连接保护,程序开始保护您的机器。 
5、 点击程序右上角的叉,程序自动隐藏到系统托盘内。 
6、要完全退出程序请在系统托盘中该程序图标上点击右键选择EXIT。 
注意: 
1、这个程序只是一个ARP攻击保护程序,即受ARP木马攻击时保持自己计算机的MAC地址不被恶意篡改,从而在遭受攻击时网络不会中断。本程序并不能清除已经感染的ARP木马,要预防感染或杀除木马请您安装正版的杀毒软件!

附录二 
Anti Arp Sniffer 的用法 
上一篇:HDU 1811 拓扑排序 并查集


下一篇:SQL PL/SQL语法手册