gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

关于ARP病毒防护的一些想法

前言  

大约是在三年前的时候,第一次碰到   ARP   病毒,当时的情况现在依然历历在目。不断的有人断网,之后范围越来越扩大,重启了交换机之后好了一段时间,接着又开始不正常,周而复始。后来在   net130     BBS   上有人说是   ARP   病毒,针对于我的   huawei3526e   可以使用   display log   的命令来查看具体的冲突源发生在哪里,于是问题很快就解决了。之后的日子里为了快速定位,统计了全台的电脑   mac   地址,这样粗粗算来大约也有   300   多台的电脑了。  

什么是   ARP   病毒  

首先要说一下什么是   ARP   协议。在局域网中,网络中实际传输的是         ,帧里面是有目标主机的   MAC   地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的   MAC   地址。但这个目标   MAC   地址是如何获得的呢?它就是通过地址解析协议获得的。所谓     地址解析     就是主机在发送帧前将目标   IP   地址转换成目标   MAC      址的过程。   ARP   协议的基本功能就是通过目标设备的   IP   地址,查询目标设备的   MAC   地址,以保证通信的顺利进行。  

ARP   病毒通过发送伪装的   ARP   包,欺骗交换机或者本网段内的邻居电脑,将   MAC   地址与   IP   地址的对应关系更改为自身,从而达到截取数据包、盗取密码等目的。  

就如我在上面讲到的,   ARP   病毒发作的特点是会导致某个网段的瘫痪,对于不同的网段间一般来说是不会传染的。当然也有可能导致其他网段阻塞,这是因为过多的   ARP   包可能大量占用交换机   CPU   资源,并使其死机。我有一次如此的经历,一个网段中同时有两个   ARP   病毒源,结果交换机   CPU   使用率达到了   99%   ,所有网段全部瘫痪,甚至无法   telnet   登陆,最后使用   console   线恢复的系统。这些只是表面现象,病毒源还通过解析捕获的数据包,极有可能获取重要的信息和密码,导致隐私被泄露、密码被盗取等等。  

ARP   病毒是局域网内部安全最大的威胁者,如何能有效地防护关系到工作正常地开展,因此需要从原理上对其有深入的理解,并且针对不同的表现,作出及时、有效判断和处理,同时针对不同的场合、情况,做好防范的工作。  

如何快速定位   ARP   病毒源  

这个基本上是一个力气活,为什么这么说呢?因为即便是可以通过各种手段获得病毒源的   MAC   地址,但是这个   MAC   所对应的电脑是属于谁的,具体的物理位置在哪里,这就不得而知了。所以事先不得不做一些必要的调查工作,统计每一台电脑的   MAC   地址、位置和所属的人员。之后做一张表,最好是存在数据库中,这样以后可以做一个查询系统。但不是制作完成这张表就万事大吉了,还要定期维护,尤其是在部门变动和人员轮换的时候,可能需要重新做这样的统计。对于有   400   台以上电脑的网络来说,这显然不是一件轻松的工作。当然,这也是没有办法的。  

这是针对于   ARP   病毒已经发作而采用的应急预案,对于平时的维护,最好是可以做一些预防的工作,这样可以有效地减少此类事件的发生,无论对管理者还是使用人员,都可以感到轻松一些。  

预防   ARP   病毒发作的几个方法  

不同的网络有其不同的特点,因此对于其中发生的病毒事件也有着不一样的预防方法。针对于   ARP   病毒而言,网上流传着一种似乎很     神奇     的办法,甚至被一些专业人士奉为一种有效的解决方案。具体是这样:在网关上绑定每一台电脑的   MAC     IP   地址,然后在每台电脑绑定到网管的   MAC     IP   。举例如下:   arp –s 192.168.0.1 00-17-16-00-88-ad   。很明显这里有漏洞。首先这个命令是   windows   下的   arp   绑定指令,并适合其他的操作系统。第二,这个网络结构的网关是一台安装了   windows   的电脑,不适合使用交换机的局域网。所以说,这个办法是应用于   windows   操作系统的   NAT   单网段结构。事实上,它只是提供了一个思路,就是说要在路由端和客户端做双向的   ARP   解析绑定,这样就从根本上消除了   ARP   病毒的根源,即   ARP   解析。  

对于使用交换机的网络,我们可以在交换机上绑定其下每一个网段中,每一台电脑的   MAC     IP   地址,然后关闭交换机的动态   APR   功能;之后在每一台电脑上,针对不同的操作系统,使用不同的指令完成网关   MAC     IP   的绑定。但还是和定位病毒时所遇到的困难一样,这样很费劲,而且需要不断地维护。当然,就目前的情况看来这是一种效果很好的办法,而且可以使用在绝大多数不同的网络结构中。以前我写过一个这样的解决方案,里面有很详细的配置步骤,可以到我的   blog     http://www.cnitblog.com/gyn   )上查阅。  

还有一种比较商业化的防御办法,就是设置   ARP   病 毒防火墙,即是在交换机之前架设一台监控过滤器,对于检测到的威胁来源进行封锁。有些解决方案可能还会在客户端安装一个监控小软件,但这其实是有风险的, 因为对于这样的解决方案,如果一旦客户端受到病毒攻击,可能使得该软件被破坏,从而导致监控失效。其实这样的商业解决方案,将其分解开来,每一个模块都是 很容易实现的。首先,在防火墙上设置网管和路由,保证数据的正常进出,在   windows     linux   下都有   route   指令来完成该功能;第二,需要一个抓包的工具,通过它来检测网络中的   ARP   包,并对其进行分析,可以使用   pcap   工具;第三,针对分析得到的结果,比如说一个病毒源,使用一定的手段对其封锁,在   linux   环境相可以使用强大的   iptables    

ARP   防火墙实现的几点细节  

针对于以上描述的三个模块,可以具体实现如下:  

首先是抓包的实现。在类   unix   的操作系统之下可以使用   pcap   ,在   windows   下有   winpcap   ,功能都是类似的,但又都非常强大。这里以   windows   为例,编程工具使用   ActivePerl5.8.8   。第一步,到   http://www.winpcap.org/install/default.htm   下载最新的版本,然后安装。第二,在   ppm   下安装   NetPacket   网络数据包解析工具和   Net-Pcap   及其它的简化工具   Net-PcapUtil   ,其中后两者的   ppd   文件在   http://www.bribes.org/perl/ppm/Net-Pcap.ppd     http://www.bribes.org/perl/ppm/Net-PcapUtils.ppd   中。之后参照安装之后生成的帮助文档,我们就可以开始着手抓包了。  

关键是下面这个   Net::PcapUtil   中的   loop   方法,该方法启动一个循环检测,将符合过滤要求的包送给处理程序进行分析。  

Net::PcapUtils::loop(\&callback_fn, [ARG => value]);  

callback_fn   就是包处理程序。其中   ARG   是如下结构的一下哈希表:  

   my %args = (

       SNAPLEN => 100,        # Num bytes to capture from packet

       PROMISC => 1,          # Operate in promiscuous mode?

       TIMEOUT => 1000,       # Read timeout (ms)

       NUMPACKETS => -1,      # Pkts to read (-1 = loop forever)

       FILTER => '',          # Filter string

       USERDATA => '',        # Passed as first arg to callback fn

       SAVEFILE => '',        # Default save file

       DEV => '',             # Network interface to open

       );

需要注意的两点,其一是   FILTER   ,包过滤器,具体的语法可以到   winpcap   手册中查询。这里使用了“   arp or rarp   ”,即是只抓取   arp   和反向   arp   解析的包。其二是   DEV   ,需要使用   Net::Pcap::findalldevs(\$err)   来得到本机的网络设备列表,因为有宽带连接的存在,本地连接会被放在比较靠后的位置,一般会是在最后一位。  

抓到包之后,就要对其进行解析。这里要用到   NetPacket   ,它提供了针对不同网络层次的包的分析工具。局域网中的“帧”数据以太网层的数据,所以先要使用   NetPacket::Ethernet   得到其中的有效数据,之后再使用   NetPacket::ARP   得到其中的   MAC     IP   对应关系。如果对于相同的   MAC   地址,存在不同的   IP   地址映射,那么我们就可以确定该   MAC   地址即是病毒源。为了防止   MAC   伪装,还可以增加在   ethernet   中的检验。但是因为   IP   地址是以八进制的形式存储的,为了方便阅读和进一步利用,需要做一些转换,使其变现为   点分十进制    

sub sap_to_ip {

my $spa = shift;

my $ip;

for my $idx (0, 2, 4, 6) {

    $ip .= oct('0x' . substr($spa, $idx, 2)) . '.';

}

return substr($ip, 0, length($ip) - 1);

}

第二,对于得到的病毒源   MAC   地址,经过一定的处理之后,交由   iptables   进行进一步的处理。在这里我们要用到基于   MAC   地址的匹配,可以使用如下的指令:  

iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx –j DROP

这表示,在   INPUT   链中,丢弃所有源   MAC   地址为“   xx:xx:xx:xx:xx:xx   ”的包。这样就封锁了所有来自病毒源的数据和请求,包括   ARP   请求。  

第三,完成网关的路由功能。相比较原先的网络结构,建立了防火墙的子网,需要将网关由交换机移到防火墙上。根据防火墙连接子网的数量,防火墙上应该配有相应数量的网卡或者说是网络接口。对于单子网的结构,在这里需要两块网卡。首先,假设子网的   IP   段为   192.168.138.0/24,   交换机中的内部连接网络为   192.168.65.0/24   ,那么我们需要在防火墙中做如下的配置:  

ifconfig eht0 192.168.65.21 netmask 255.255.255.0

route add –net 192.168.65.0 netmask 255.255.255.0

ifconfig eth1 192.168.138.65 netmask 255.255.255.0

route add –net 192.168.138.0 netmask 255.255.255.0

route add default gw 192.168.65.25

子网“   192.168.138.0   ”中的所有的数据将通过转发,从而交给上层交换机中的   IP   地址“   192.168.65.25   ”,这样就完成了路由功能。  

结束语  

局域网的管理,最重要的还是要理解这些问题发生背后的原因,以及相关的一些概念和原理,只有这样才能从根本上找出解决的办法,举一反三、触类旁通。   ARP   病毒的防护只是一个例子,它不仅仅需要网络相关的知识,还需要熟悉一些操作系统指令,这些东西都是一个系统的,因此在平时的工作中在深入专业知识的同时,要注意拓展知识的面,从而更好地应对不断进步的科技发展及其中带来和出现的一些问题。  


posted on 2008-08-26 07:55 gyn_tadao 阅读(1399) 评论(16)  编辑 收藏 引用 所属分类: perlcisco

评论

# re: 关于ARP病毒防护的一些想法 2008-08-28 08:12 秘密

.............................. :)  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2010-03-21 04:03 ShieldsAllison33

A lot of specialists tell that <a href="http://lowest-rate-loans.com">loan</a> help people to live their own way, just because they can feel free to buy needed stuff. Moreover, different banks give consolidation loan for all people.   回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2010-03-31 00:46 buy custom essays

On this page people should see some ideas corresponding with this good post. With the help of you the the best features of terms are unmistakable. We think that after that is really easy to receaive well accomplished custom essay co uk from the custom essay writing corporation.   回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-02-12 03:01 amazon coupons

Great site!  回复  更多评论   

# tungsten wedding bands 2011-02-18 17:14 kswaby@gmail.com

thanks.  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-02-20 12:59 chicken recipes

Thank you.  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-02-26 17:30 chicken recipes

Thank you.  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-03-22 02:45 jenn air gas grill

Thank you.  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-03-25 11:55 phlebotomy training

great site  回复  更多评论   

# re: 关于ARP病毒防护的一些想法 2011-03-25 11:56 phlebotomy training

All u need to know about <a href="http://phlebotomyclinic.com/">phlebotomy">http://phlebotomyclinic.com/">phlebotomy certification</a>
<a href="http://phlebotomyclinic.com/">phlebotomy">http://phlebotomyclinic.com/">phlebotomy training</a>


  回复  更多评论   

只有注册用户登录后才能发表评论。
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜