ARP病毒的分析与防治
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://caihong.blog.51cto.com/277306/121531
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 
实现我的承诺。在这周结束之前,整理出自己的ARP病毒防治的思想。
先来看看ARP病毒是怎么回事。
简单的说就是:这种病毒自身可以伪造一些ARP回应包。这些包的源IP地址一般是重要设备的IP地址,而那个源MAC地址可能是自己的MAC,也可能是一个无用的MAC地址。而目的IP地址和目的MAC地址都是广播地址,这样的话,这个新的ARP条目就会发送到网络中的任何一个设备中。然后,这些设备就会更新自己的ARP缓存,这样一来呢,就达到欺骗的效果了。以后我们的机器在往重要的设备上发送数据的时候,就会先检查自己的ARP缓存啊,确实存在这么一个ARP条目,殊不知已经是被掉包的了。所以呢,我们发送的数据就不会按照我们原来的意愿,到达真正的目的地。
从上面的这些话当中,我们可以提炼出:中毒后的机器会频繁的自动产生一些假的ARP包,来达到让别的设备更新自己的ARP缓存的目的,以达到欺骗的目的。
我们可以分下实现这个ARP病毒需要分几个步骤:
1.              机器得自己产生ARP报文。
2.              并且一定要频繁,更新设备ARP缓存的间隔一定要比正常情况下的小,且小的多。
3.              别的设备得接受,并且承认这种频繁来更新的ARP条目。
知道了它的工作过程,那么我们就从各个步骤进行分析,下对策。
首先说呢,ARP这个协议本身就不怎么地,本身就是不安全的。就是在没有ARP请求包的情况下,机器也可以发送ARP回应包。这样看来的话,就好像是UDP对应起TCP一样,是属于那种“无连接状态”的。也正是这种协议本身的安全缺陷,才让欺骗这么容易的进行。没事的情况下,设备还具备发送这样的ARP包的能力呢,别说中毒了,那就发送的更狂了,并且发送的还都是一些经过特定修改的。修改ARP回应包的源Ip地址,修改成重要设备的地址。修改了这个IP地址,才可以对这个对应的IP地址的设备进行阻碍,以后发送往这个设备发送的数据都会发送到这个中毒的机器来。也许你会说,中毒的可以发,人家那个正常的设备也可以发啊。是啊,所以为不让其他的设备承认真正的设备发送的ARP包,这个中毒的机器才使得自己拼命的发,一个劲的发,拼命的发。这样的话,让那个真正的设备发送的ARP包没有机会更新其他设备的ARP缓存。如果我们不该找个ARP包的源MAC地址的话,也就是说这个MAC地址是这个中毒的机器的MAC地址,那么以后发送到那个源IP地址的设备的数据都会发送到这个中毒的机器来。如果这个MAC地址是网关的地址的话,那么其他的机器上网的数据不是发送到真正的网关了,而是发送到这个中毒的机器来。如果在这个机器上再安装个分析软件的话,就完全可以知晓网络中的一切信息交流。如果这个MAC地址是个无效的。那么以后发送到那个源IP地址的数据流就会被无奈的丢弃啦。因为在LAN中传输数据用的是MAC啊,。现在每个机器都是知道了那个IP地址的是那个MAC地址,殊不知这个MAC是静心策划的无效MAC。这样一来的话,就会导致发送到那个IP地址的数据全部被丢弃。造成的后果如何就看这个ARP包的源Ip地址是什么设备的IP地址 了。如果是网关的话,那么全网的机器就都上不去网了。如果是一个普通机器的Ip地址呢,那么这个机器就上不去了。我们说的,这种ARP病毒包会频繁的发送,虽然正常的ARP包被接受的几率很小很小了,但是也会有被接受的可能啊,所以,ARP病毒会导致网络中的机器上网断断续续的。厉害了,就完全出现网络断开的现象咯。不知不觉,一个“首先”就分析了1和2两个步骤。那么我们对于上述的这些过程,该如何阻挠呢?细看,这些都是病毒的实质的工作方式。我们不可能更改他们啊。那么我们就想想是否可以阻止这样的数据包进入网络。如果进入不了网络,那就完全么事咯。这个问题就需要我们在机器联网的地方做手脚了。那就是接入层交换机上的端口咯。也就说得让交换机的端口只允许一个MAC地址的数据包通过,并且这个数据包还是的MAC地址还是下面连接的机器的真正的MAC地址。这样一来呢,如果再找个端口上进出其他MAC地址的数据包,这个端口就会采取相应的措施:关闭端口(永久性关闭或者将端口周期性的进入到err-disable状态)、限制(将非匹配MAC地址的数据包全部丢弃掉)、保护(当端口学习的MAC地址数到达了设置在这个端口上可以学习的MAC的最大数量的时候,丢弃后面来的任何不同于先前这些MAC地址的数据包。)
其实,实现这个功能,CISCO设备的端口安全特性就可以搞定。它是个接口级的命令:
CORE2(config-if)#switchport port-security ?
  aging        Port-security aging commands
  mac-address  Secure mac address
  maximum      Max secure addresses
  violation    Security violation mode
  <cr>
看到上面的这些参数,我们可以清晰的看到:端口安全特性可以实现在某个特定的access模式接口上设定这个端口中学习到的MAC地址的存活时间,设定允许学习的MAC地址的最大数目,设定只允许某个特定的MAC地址的数据包通过(也就是端口和MAC地址的绑定),设定违背我们设置的这些规则的处理方式(就是上面介绍的关闭端口、限制、保护三种)。在这个命令的下面有5个可以执行的参数,而前4个的实现都是在最后一个实施的基础上的。我们输入命令到这个步骤,然后敲下回车,就说明再这个端口上开启了端口安全的特性,然后再逐步实施以上的那些参数。
我们再来仔细分析下参数:aging \ mac-address \ maximum
Mac-address:参数后面的值就是我们想让这个端口允许通信的那个特定的MAC地址。输入这个命令,就算是我们把某个特定的MAC地址和这个端口绑定了。别的机器拿来后,插上网线是不可以上网的。利用这种方法来限制那种虚假的ARP包,工作量就老大了,并且网络中还是有很多移动的用户,运作起来就更加的麻烦。不好不好!不过在这个参数的后面呢,还有一个特性,sticky 特性,即:
CORE2(config-if)#switchport port-security mac-address ?
  H.H.H   48 bit mac address
              sticky  Configure dynamic secure addresses as sticky
这个特性说的就是:这个端口会记住这个端口中第一个学习到的MAC地址。并且只有这么一个。当然了这个学习到的MAC是动态的,到了一定的生存时间还是会在这个端口的缓存中消失的。至于存在多长的时间,那就看下面的这个参数咯。
存活时间(aging):这个参数后面的参数值说的就是端口缓存中的MAC表项可以保持多久。
最大数(maximum):这个参数后面的参数值说的就是这个端口允许学习的MAC地址的最大数量。
我们分析了,让端口和MAC地址绑在一起不好,太麻烦了。那么使用sticky特性看来还是不错的,比较方面,并且在一定程度上可以解决这个问题。但是还得结合存活时间这个参数。这样一来,就不会让这个MAC频繁的学习、变动了。使用了这个特性后呢,在端口允许学习的MAC地址的最大数量上就是1个了,就是那个最先学习到的MAC地址。那么运用这个特性的时候,最大学习数量这个参数就不需要了。如果我们不使用这个特性,而是通过限制最大学习的MAC地址数和存活时间,也不会太好。比如我们允许最大的是2个(不能太多,越多越危险,只有一个是最安全的。),存活时间设置到最大。因为ARP欺骗包是频繁发送的,所以只要给它一点机会,就会疯狂的发送出去,那么最大的学习数量2个,就成了漏洞了。
我们前面也提到了,在伪造ARP包的时候,源IP地址和源MAC地址都是可以进行特定的修改的。我们上面提出的这个端口安全的特性,只是针对修改MAC地址的欺骗ARP包。那么对于修改IP地址的ARP欺骗包如何避免呢?我们可以绑定IP地址和MAC地址。这样的话,即使有一个修改了IP的ARP欺骗包,发送的时候,发现自己的IP地址和MAC地址的匹配关系和原来绑定的不一样,所以这个数据包就夭折了。也就进入不了网络了。
下面我们说说:其他的设备在什么情况下是承认新来的ARP条目的。在我们机器中的ARP缓存,其中的MAC条目的存活时间一般为2—3分钟。并且更新条目的时候,是查看ARP对应关系中的IP地址的。想想也是咯,因为在一个机器的ARP缓存中同时存在俩个ARP地址条目:IP地址相同且MAC地址不相同。这种情况是肯定不存在的嘛。如果真存在的话,那么发向这个IP地址的数据到底该往哪里发送就全乱套了。如果是存在好几个ARP条目:IP地址不相同,MAC地址相同,还是会出现的。这种情况也就是最一般的ARP欺骗了啊~
当我们机器中的ARP对应条目是静态的时候,那么这个条目就是无法被代替的。也就是说它的存活时间是永久。只有是动态的,才会被新来的那些相应的条目更新掉。对于这种情况,我们有没有一个方法可以让机器不承认新来的这些ARP更新条目呢?弄成静态的就OK 了吧。所以,弄个网关的绑定批处理,放在系统的启动项里,这样就好了。但是对于那种移动性很强的笔记本用户来说就不怎么方便。到一个VLAN中就会绑定原来VLAN中的网关,就会出乱子了。如果我们从目的端来处理这个问题,那么就太逊了!~~因为这种情况下,ARP欺骗包已经在网络中进行逛游了~~~并且,这种数据包,为了最大可能让别人接受它,病毒程序回把这种包的TTL值设置到最大。也就是说这种广播包在网络中逛游的时间会尽量的长。最好的就是在源头搞定它。
在我们上述介绍的方法中,最简单实行、有效的就是:使用端口安全的sticky 特性+aging参数+IP----MAC地址绑定。
ARP欺骗一般分为俩种:内网的和外网的。
内网的:就是发生在LAN内部的。一般的欺骗行为就是欺骗网关,发送一个IP地址是网关和MAC地址是自己的ARP欺骗包。并且别的机器都承认了这点。那么以后发送到网关的数据就会到了这个中毒的机器。如此一来,别的机器上网断断续续,非常的慢,时间长了甚至会断网。这个中毒的机器还是可以上网的,不过也会越来越慢的,因为别的机器发送的数据都得经过这个中毒的家伙联通外部网络。当中设备down掉后,所有的其他的机器都上不去网了。这种情况下的ARP欺骗很容易看出来的。如果网络非常的慢,并且时断时续的,有ARP病毒的特征。那么就可以进入“运行---CMD”,命令:arp –a 。这样一来的话,就会看到网络Ip地址对应的MAC地址,然后你再查查这个MAC地址对应着多少IP地址,如果是很多的话,那么就中招了。解决的办法就是:arp –d ,删除原来的ARP 缓存,并且对正确的网关IP地址和MAC地址进行绑定:arp –s [ip address]  [mac-address] 。这种情况的欺骗也是非常容易看出来的。通过arp –a 和arp –s 俩搞定就OK 了。具体的过程是:我们查看上网有问题的机器,进去看看arp –a ,找到了那个网关的ARP条目,查看对应的MAC地址,和真的网关的MAC地址是不一样的,所以肯定是中毒咯。那么我们的解救办法就是删除ARP缓存的条目,然后手动绑定正确网关IP和MAC地址。接下来就是找到那个中毒的机器-----根据那个MAC地址,去中心设备上查看这个地址是从哪个端口上学习到的,然后一级一级的查下去,找到后就让它隔离杀毒去,使用的命令是:show mac-address table | include [H.H.H.H] 。并且根据上面的违背方式的处理方式做出相应的解决,比如把那些关闭了的端口no shut 下。
刚才有点事情,打断了思路。从这里写吧(和原来的思路的轨道不会差很多哦~~~呵呵、、放心!)。我们看到了ARP欺骗包不是修改Ip地址就是修改MAC地址,或者是同时修改。我们把IP地址和MAC地址绑定了,就可以防止那种修改IP地址的ARP欺骗包。因为你绑定了IP地址后,即使那个机器关机了,他的Ip地址和MAC地址对应关系还是存在和核心设备里的。如果想伪造一个已分配出去的IP地址,就不会成功的,会导致冲突的。我已经尝试过了:绑定一个IP地址,并且将其网线拔掉,然后这个时侯就让别的机器再配置成这样的IP地址(现在先前配置的IP地址的主机已经脱网了,也不会产生冲突咯按说),尝试上网,结果不能联通网络。OK 咯,这就说明我们上面想要阐述的问题了啊!如果是修改MAC地址的那种欺骗包呢,我们就采用在端口上限制某些特定的MAC地址通过或者限制端口学习的MAC地址的最大数量。这个时侯呢,这些MAC地址条目显然是动态的,那么就有可能被ARP欺骗包更新掉。所以我们还得结合MAC条目的存活时间参数,设置的其值尽量的最大。限制端口通过特定的MAC地址,也就是MAC地址和端口绑定,这样不太好,因为有些用户移动性还是很大的。所以还是采用sticky特性吧。
以上说了这么多这么多的话,聊的都是LAN之内的ARP欺骗。现在还出现了LAN之间的ARP欺骗。比如一个网段的俩个机器10.140.19.2和10.140.19.3之间想进行通信。在路由器的那边有个机器10.140.18.2,这个机器上有ARP病毒。当19.2发送给19.3数据的时候,原本可以很轻松的完成的。但是18.2的病毒就想让他们之间的数据先发送到他这里,然后发送到19.3,或者是发送到他这里就OK 了,就不往下发了。他要是想告诉19.2一个假的ARP包的话,那么那个真正的19.3的机器肯定不能在网络上存在的啊,否则就会产生Ip地址的冲突,那个假的数据包也发送不出去啊。所以第一个问题就是解决掉19.3这个机器,让他down掉。如何down掉呢,别问我了,至少现在我还没研究***的东西。假设它over了,那么19.2就会发送广播啊,找原来的19.3啊。正常的情况下,就会在路由器的一边使劲的喊,没人鸟你。如果这个时侯18.2发送给路由器一个特殊的包,让路由器发给19.2发送一个ICMP重定向(主机路由重定向),这个重定向报文的作用就是告诉19.2,如果你想发送数据包到19.3,你得把数据包发送到路由器,然后传输到18.2的MAC才可以。这就是让ARP欺骗和ICMP重定向结合起来了。
如果没有ICMP重定向这个东西,那么这个LAN之间的欺骗就成不了啊。如果想阻止这种欺骗,那就搞定ICMP重定向呗。一般什么情况下我们会开启设备的这个功能呢?说:一个LAN有俩个口连接着internet。默认的情况下呢,也就是默认路由咯,我们就使用端口1。但是,若默认路由出了问题,那就得使用另外的那个端口进入internet了。但是下面的机器不知道啊,还是把数据都发送到这个端口,这个时侯呢,这个端口就会产生一个ICMP重定向报文,发送给那个发送数据包的主机,以后发送数据的时候,别往我这里发了,从我这里走不是最好的走法,你直接发送到端口2就OK 了。其实仔细想想,这不就是实现了网关的冗余嘛?如果使用了HSRP这种负载均衡,使用的是虚拟的网关地址。那么这样的话呢,这个ICMP重定向就用不到了吧。是啊,当我们开启HSRP或者VRRP的时候,这个功能就自动关闭了。如果没使用这俩个功能,我们也可以手动关闭ICMP重定向(在某个特定的端口下)。
如果真的是发生了这样的LAN之间的ARP欺骗,我想病毒一定会在路由器中加入一个主机路由。加入的这个路由条目的目的地址就是那个中毒的机器。找到那个IP地址的机器所在,隔离杀毒就好了嘛。
对于ARP病毒的分析和防治,这些都是我自己的理解。自己考虑起来,觉得不会写11页吧,但是居然还是写出了这么多,也许废话太多了。嘿嘿、、、那我就祝愿大家取其精华,弃其糟粕,找到自己想要了解的那些点!
有什么地方需要改正和补充的,敬请大家指出,我会及时改正,也非常期望和大家一起学习讨论!QQ:418838267。
圣诞将至,祝愿:
51CTO的所有工作人员和广大博友节日快乐!

转载于:https://blog.51cto.com/liven/194115

ARP病毒的分析与防治相关推荐

  1. 浅谈如何防治ARP病毒

    浅谈如何防治ARP病毒 近期,现一种新的"ARP欺骗"木马病毒在互联网上迅速扩散.主要表现为用户频繁断网.IE浏览器频繁出错以及一些常用软件出现故障等问题.Arp病毒在局域网中感染 ...

  2. 彻底分析ARP病毒查杀防范全攻略

                           彻底分析ARP病毒查杀防范全攻略      近期在全国范围内大规模爆发arp病毒及其各种变种.如果局域网中发现许多台电脑中毒,电脑中毒后会向同网段内所有计 ...

  3. ARP病毒攻击技术分析与防御(补充知识)

    ARP病毒攻击技术分析与防御 --  ARP病毒攻击技术分析与防御 一.ARP Spoofing攻击原理分析 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议 ...

  4. 猖獗不衰 ARP病毒该如何防治?

    猖獗不衰 ARP病毒该如何防治? 出处:赛迪网 责任编辑:ANSON     ARP病毒防制方法还待加强 ARP病毒问题已经讲了很长一段时间了,大家对于ARP病毒的防制也总结了不少的经验,不断在网上发 ...

  5. 服务器上运行arp,服务器ARP病毒的特征及防护说明

    服务器ARP病毒的特征及防护说明 更新时间:2008年01月29日 15:50:33   作者: 服务器ARP病毒的特征及防护说明 近期有些用户反映服务器上所有网站被插入了病毒代码,但是这些病毒代码 ...

  6. arp病毒利用的Javascript技术

    本文的目的是探讨JS相关技术,并不是以杀毒为主要目的,杀毒只是为讲解一些JS做铺垫的,呵呵,文章有点长,倒杯咖啡或者清茶慢慢看,学习切勿急躁! 最近公司的网络中了这两天闹的很欢的ARP病毒,导致大家都 ...

  7. ARP病毒***症状

    ARP病毒***症状 上网速度慢,或者网络内共享文件很慢 ―――表现为利用网络抓包工具,抓到局域网中有大量ARP报文. 全网同样配置下,唯独某台电脑无法上网 ―――表现为掉线后,重启电脑或者禁用网卡再 ...

  8. 局域网ARP病毒的清理

    前段时间单位局域网中感染ARP 病毒,很难搞啊. 现在局域网中感染ARP 病毒的情况比较多,清理和防范都比较困难,给不少的网络管理 员造成了很多的困扰.下面就是个人在处理这个问题的一些经验,同时也在网 ...

  9. 【安全攻防系列 Windows实战】教你如何 FTP暴力破解、四大病毒勒索病毒、蠕虫病毒、ARP病毒、挖矿病毒,怎么处理应急场景

    文章目录 FTP暴力破解 0x00 前言 0x01 应急场景 0x02 日志分析 0x04 处理措施 勒索病毒 0x00 前言 0x01 应急场景 0x02 事件分析 0x04 防范措施 蠕虫病毒 0 ...

最新文章

  1. python浅拷贝和深拷贝
  2. wincc flexable变量组态
  3. EASYUI+MVC4通用权限管理平台
  4. 在Eclipse中如何操作zookpeer
  5. BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!
  6. YY:马化腾的大漏招
  7. 第五周课程总结试验报告三
  8. WLS_Oracle Weblogic服务器生命周期(案例)
  9. EasyUI 中自定义组件 icon 图标
  10. RxSwift 介绍与简单使用
  11. mysql 分组之后 取分组之后最新的数据
  12. 荣耀V40怎么样 “微光女神”告诉你
  13. 2021年全球医用气体压力调节器收入大约180.9百万美元,预计2028年达到226.3百万美元
  14. 微信公众号 服务器自动回复,微信订阅后台自动回复功能的实现
  15. 程序员需知的 59 个网站
  16. ssh方式路由web_在路由器上设置SSH以从任何地方进行安全Web访问
  17. 珍惜能在公司上班的每一天——2022年个人工作总结
  18. linux 遍历文件及文件夹,linux文件夹操作及递归遍历文件夹(示例代码)
  19. 2023大数据面试题+附答案
  20. java计算机毕业设计汉字幼教系统源码+mysql数据库+系统+lw文档+部署

热门文章

  1. sql 语句中count()有条件的时候为什么要加上or null
  2. Android开源经典项目
  3. 图神经网络学习(一)
  4. Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
  5. 当SWOOLE遇上PROTOCOL
  6. linux ps查看完整时间,Linux ps 命令查看进程启动及运行时间
  7. X位的有/无符号整数
  8. 有关联想拯救者Y7000重装window10系统
  9. 怎么修改PDF文件中的文字
  10. OpenCV从摄像头中检测人脸