病毒安全知识,电脑网络技术,手工杀毒方法,答疑解决笔记

导航

« 谷歌的按图片搜索功能win7继续“玩” »

ARP欺骗攻击与防护

  ARP欺骗的话题曾经有写过(“用arp -a命令查找中毒主机”),而且网上相关的知识也很多,因此本文只是简单的综合整理。

  ARP协议简单的说就是通过IP查找对应的MAC地址,IP只是一个逻辑地址,而MAC才是网络设备的物理地址,只有找到真正的地址(物理地址),才能进行数据传输(这是我大白话式的解释,更多的ARP协议及后面ARP欺骗的叙述可以查找相关专业的资料,或者看百度百科中的ARP的词条)。ARP是通过发送ARP广播包通知别的主机自己是谁(通知别人某个IP对应的是某个MAC),如果发送的信息包含有意的不正确IP与MAC地址对应关系,则会影响接收方对网络地址识别的正确性,这就是ARP欺骗,说白了就是不让IP与正确的MAC地址建立关联,从而使数据发送到错误的地点,造成的后果有数据被窃听或劫持(劫持就是不还给你),再通俗的说,就是上不了网或上错网,再或者和别人“一起”上网。

  由此引申无ARP欺骗嗅探技术的攻击-MAC欺骗,这是对交换机的攻击,涉及交换机的原理。交换机会将自己的端口与MAC地址进行关联(当然目的是加速数据的转发),如果欺骗主机将错误的MAC地址发送到某端口,导致与该端口绑定,则此后所有发往该MAC地址的数据都通过此端口转发,后果与ARP欺骗是一样的。(具体参见http://bbs.icpcw.com/viewthread.php?tid=2080841,这是转载的)

  一般情况下遭遇ARP欺骗上不了网时,重启电脑或用命令arp -d清空ARP缓存表后会暂时正常,但很快又恢复原样(再次遭受攻击),因此可以借此判断一下是否遭遇到ARP欺骗,而不是光看所谓的ARP防火墙在叫嚣“ARP欺骗攻击”。另外如果你是家庭用户,只有你一个人上网,而不是象公司单位那样通过局域网上网的,则一般情况下是不会有ARP欺骗攻击的,即使万里有一碰上了,那么要解决的话,需要找你的宽带提供商,即使他不承认,请相信这时受影响的绝不会只有你一户,将是一个相当大的网络故障。如果你家里也有几台电脑一起共享上网(如通过路由器),理论上是存在ARP欺骗的可能,不过,只有几台电脑的话,检查起来也很方便,大不了一台一台拔出网线检查,所以共享上网的电脑数越少,中招的可能性越小,检查的难度都低。

  对于ARP欺骗的防护,除了大量相关的防ARP欺骗的防火墙与杀毒工具外,简单的方法就是绑定网卡、网关的IP与MAC地址,如用arp -s ip mac命令绑定(斜体字符需用实际的值代替,下同,注意mac格式类似00-01-02-a3-b4-c5,或者用arp /?看看命令的例子),注意这个绑定关系将在电脑重启后失效,除非再次绑定,或将此命令写成批处理文件并加入启动项,本机MAC地址可以通过ipconfig/all命令查得,至于网关的MAC,可以在未中毒前ping一下网关,然后用arp -a命令获知(当然如果你能直接查到更好)。

  但arp -s在vista与win7中行不通,所以,在vista和win7中要用到命令netsh。此命令在2000/xp中也有,在“修复消失的本地连接”一文中我记述它是在命令状态下设置IP,而在这里,我们将用它来绑定IP与MAC地址(注意XP下的netsh与win7中不同,以下有的命令在xp中不能运行):先运行命令netsh interface ipv4 show interface(或简写成netsh i i show in,注意在2000/XP中运行此命令前,会提示先启动路由与远程访问服务,但即使能运行也不能实现与win7/vista中一样的功能,见后),可以查知本地连接的索引号(即idx,其实也是可以用名称的,具体的可以去查命令格式),

netsh i i show in
在很多win7中查到的本地连接idx都是11,当然你最好自己查一下

然后就可以进行绑定netsh -c "interface ipv4" add neighbors idx "ip" "mac"(这里的引号,在win7中我试了,无论有没有引号都行,但要求以管理员身份运行此命令,即在以管理员身份运行cmd后再运行命令;mac的格式同上面的arp -s;注:在XP中此绑定命令不能运行,提示“找不到  add neighbors ...”,就是说没这个参数),同样其中的"interface ipv4"可以简写成"i i",这个绑定与arp -s不同,是永久绑定,即使重启电脑,因为默认值就是永久。

  绑定后,用arp -a检查,IP与MAC就是static(静态)关联,而不是dynamic(动态)了。一般用户只要在自己的电脑上绑定网关即可,如果需要的话,可以在路由器上绑定各个主机的网卡IP与MAC,在自己的电脑上绑定自己网卡的IP与MAC似乎没有必要,毕竟我们要是对方(如网关)的真实地址。

  如果要解除这些绑定,对于arp -s,在重启电脑前,可以用arp -d,此命令将清空本机上ARP缓存表,即所有的IP与MAC对应关系(没关系的,一与网络有数据交换就会自动重建)。而netsh的绑定,用arp -d也可以解绑,不过重启后就恢复绑定状态,不算真正的解绑,对于netsh绑定的解绑命令有netsh -c "i i" del neighbors idx和netsh i i delete neighbors,都可以立刻解除绑定关系,不用重启,即使重启也是动态的,不会恢复静态绑定,亲测可以。

  但是,网上有人说以上两个命令都不行,不知道是否是未用管理员身份运行的缘故,还是其它什么原因,所以另提供一个“终极”命令netsh i i reset,这个要重启才生效(运行完会提示重启)。我试了下,reset的效果是所有IP都恢复默认,如果手动设置了IP,也会恢复到自动获取的默认状态,DNS的手动设置却不受影响,至少在我的测试中netsh的绑定在reset并重启后也解除了。如果此命令仍无效(网上确实有人说运行后仍解不开,不知道什么原因),网上还有一种解决netsh绑定的方法,用命令netsh -c interface ip dump >c:\interface.txt导出配置脚本,打开那个文本,删除neighbor="……"(引号里是mac地址)这一行,保存为interface2.txt,然后用netsh -f c:\interface2.txt再导入新配置文件。


>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/arp-storm-center.html

  • 3楼.dhtuht
  • 文章写的很不错我转载了这篇文章!
  • 2011-7-5 12:39:21  [引用]

发表评论(无须注册,所有评论在审核通过后显示):

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  • 微信订阅号
    微信订阅

最新发表

最新评论及回复

本站出现的所有广告均不代表本人及本站观点立场 | 关于我 | 网站地图 | 联系邮箱 | 返回顶部
Copyright 2008-2020 www.stormcn.cn. All Rights Reserved. Powered By Z-Blog.

闽公网安备 35010202000133号