转自:瓢虫论坛 作者:流风33
ARP协议简单的说就是通过IP查找对应的MAC地址,IP只是一个逻辑地址,而MAC才是网络设备的物理地址,只有找到真正的地址(物理地址),才能进行数据传输(百度百科的ARP词条)。ARP是通过发送ARP广播包通知别的主机自己是谁(通知别人某个IP对应的是某个MAC),如果发送的信息包含有意的不正确IP与MAC地址对应关系,则会影响接收方对网络地址识别的正确性,这就是ARP欺骗,说白了就是不让IP与正确的MAC地址建立关联,从而使数据发送到错误的地点,造成的后果有数据被窃听或劫持(劫持就是不还给你),再通俗的说,就是上不了网或上错网,再或者和别人“一起”上网。
一般情况下遭遇ARP欺骗上不了网时,重启电脑或用命令arp -d清空ARP缓存表后会暂时正常,但很快又恢复原样(再次遭受攻击),因此可以借此判断一下是否遭遇到ARP欺骗,而不是光看所谓的ARP防火墙在叫嚣“ARP欺骗攻击”。另外如果你是家庭用户,只有你一个人上网,而不是象公司单位那样通过局域网上网的,则一般情况下是不会有ARP欺骗攻击的,即使万里有一碰上了,那么要解决的话,需要找你的宽带提供商,即使他不承认,请相信这时受影响的绝不会只有你一户,将是一个相当大的网络故障。如果你家里也有几台电脑一起共享上网(如通过路由器),理论上是存在ARP欺骗的可能,不过,只有几台电脑的话,检查起来也很方便,大不了一台一台拔出网线检查,所以共享上网的电脑数越少,中招的可能性越小,检查的难度都低。
对于ARP欺骗的防护,除了大量相关的防ARP欺骗的防火墙与杀毒工具外,简单的方法就是绑定网卡、网关的IP与MAC地址,如用arp -s ip mac 命令绑定(斜体字符需用实际的值代替,下同),注意这个绑定关系将在电脑重启后失效,除非再次绑定,或将此命令写成批处理文件并加入启动项,本机MAC地址可以通过ipconfig/all命令查得,至于网关的MAC,可以在未中毒前ping一下网关,然后用arp -a命令获知(当然如果你能直接查到更好)。
但arp -s在vista与win7中行不通,所以,在vista和win7中要用到命令netsh(此命令在2000/xp中也有,但与win7中不同,以下有的命令在xp中不能运行):先运行命令netsh interface ipv4 show interface(或简写成netsh i i show in,注意在2000/XP中运行此命令前,会提示先启动路由与远程访问服务,但即使能运行也不能实现与win7/vista中一样的功能,见后),可以查知本地连接的索引号(即idx),然后就可以进行绑定netsh -c "interface ipv4" add neighbors idx "ip" "mac"(要求以管理员身份运行此命令,即在以管理员身份运行cmd后再运行命令;注:在XP中此绑定命令不能运行),同样其中的"interface ipv4"可以简写成"i i",这个绑定与arp -s不同,是永久绑定,即使重启电脑。
绑定后,用arp -a检查,IP与MAC就是static(静态)关联,而不是dynamic(动态)了。一般用户只要在自己的电脑上绑定网关即可,如果需要的话,可以在路由器上绑定各个主机的网卡IP与MAC,在自己的电脑上绑定自己网卡的IP与MAC似乎没有必要,毕竟我们要是对方(如网关)的真实地址。