arp攻击原理与防范

来源:互联网 发布:淘宝刷3个蓝冠多少钱 编辑:程序博客网 时间:2024/05/01 00:58

前段时间,终于狠下来给自己的手提换了个固态硬盘,那随着而来的肯定是得装个系统在那里。反正要装,就装个新的来体验一下吧,直接就装了个Win8.1的。win8.1的各种东西让我折腾了好久,部分特征让我好纠结,不过界面还蛮不错的。固态硬盘就是爽,飞一般的感觉,打开VS一下子快多了,查阅文档,快多了。各种爽,固态硬盘,你值得拥有。毕竟在使用校园网,有时候一个不小心就来个arp工具上不了网就糟糕,但在我找遍整个360发现原来的arp防火墙找不到时,我就郁闷了。也不想装其他什么东西,料想也没啥好的。于是就自己来折腾了下,顺便科普一下arp攻击与防范措施。


ARP攻击,这是个烦人的东西。好一点的,arp攻击只是单纯让你上不了网,恶意的arp攻击可能还将窃取你的资料,或者推送一些木马过来。所以了解与杜绝ARP工具是我们安全上网的一个重要步伐。


在专用网PN中,也就是局域网,比如校园网,我们的电脑想要上网,必须先要经过路由器的网络地址转换(NAT)协议,路由器充当一个中间人,将我们的请求(Request)转换后发送出去,然后将得到的反馈(Response)转换后,发回来。


这里有个问题,我们的电脑怎么知道路由器在哪里呢?在本地电脑上,我们有一个ARP缓冲表,保存着IP地址跟MAC地址。我们在windows下的cmd窗口里面输入arp –a就可以看到这个表了。如下图:



那么,这个表是怎么来的呢?我们仅仅考虑本地这个的情况。这就涉及到ARP协议了。下面在百科里copy的部分内容:


地址解析协议,即ARP(AddressResolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。其功能是:主机将ARP请求广播到网络上的所有主机,并接收返回消息,确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存中,下次请求时直接查询ARP缓存。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的ARP缓存中,这样攻击者就可以向目标主机发送伪ARP应答报文,使发送的信息无法到达相应的主机,构成一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。


这里说下ARP的实质性意义,在互联网里面,是使用IP地址作为标识目标主机的,旧的是IPv4,新的是IPv6。随着时代的发展,IPv4已经不能满足需求了,但依然由于各种原因一直没有撤出历史舞台,而只能采用渐进过渡的方式,在未来一段时间内都将是IPv4与IPv6并存的方式。上面的是在公网里面的同学,对于内网呢,也就是局域网上,采用的就是MAC(Media Access Control,MAC地址用来定义网络设备的位置,每个网卡或者路由器等都会有一个MAC地址。原则上这个地址是全球唯一的,注意这里说的是原则上,自己想象下。

)地址通讯了,至于原因,也许是计算机网络发展的早期,各个厂商之间的不协调导致的吧。虽然内部是使用MAC地址通讯,但是在编程或者使用上面,我们还是采用IP的方式,而由操作系统进行转换。怎么转换呢,就是靠ARP协议了,ARP协议将IP地址转换为MAC地址,而RARP则逆转过来。


回到ARP协议上来。要是攻击者伪造一个ARP报文,告诉目标主机,将路由IP跟另外一个MAC地址绑定,目标主机将找不到路由器,于是将无法上网。说得通俗一点就是,攻击者A告诉受害者B,路由器在XX地方,而受害者B不对这个消息的准确性产生怀疑,于是受害者B每次去找路由器都去XX地方找,但是路由器压根不在那里,受害者B找不到路由器,那么自然而然地就上不了网了。好了,这里的那个xx地方,也就是一个MAC地址。要是这个MAC地址是一个不存在的地址,那我们反跟踪的时候将会发现找不到该地址。这只是单纯的上不了网,还不是很糟糕。设想一种情况,要是这个MAC地址指向的是另外一个主机,然后这个主机模拟路由器充当中间人给我们转发信息,那么我们所有信息不就可以让它知道了,然后,要是它将修改过的信息反馈回来,这时候,危害就大了。


攻击者会以一定的时间间隔,不断地发送换个伪造的arp报文,来达到让目标主机无法连接网络。一个防范措施很明显的,就是以比攻击者更快的速度将正确的arp报文还原。但这个并不是好办法,下面说一个简单的并且可以得到windows原生支持的方法:静态绑定。


在上面的arp缓冲表中,我们可以看到后面类型一栏中有着动态两个字,这代表这些是通过arp报文来动态绑定的,有没有可以让它固定的方法呢?有。


1、  使用“管理员权限”打开CMD命令行窗口。

2、  在命令提示符中运行“netshi i show in”查看要进行ARP绑定的网卡的idx编号。

3、  在命令提示符中运行“netsh-c “i i”add neighbors idx IP MAC”进行ARP绑定,这里的idx就是上一步查到的网卡的idx编号,IP和MAC就是你要绑定的IP地址和MAC地址。

比如我输入的是netsh -c "i i" add neighbors “21 172.16.80.254” “00-1a-a9-08-7a-01”

 

成功后,并不会有什么提示的,这时候可以输入arp –a看下效果。

 



当然了,当我们也可以对其解除绑定。

 

解除绑定:netsh -c“i i” delete neighbors IDX (IDX改为相应的数字) 才可删除MAC地址绑定,然后重启系统。

 

这是我目前简单地使用的一种方式,对于Win8.1确实没找到啥好的arp防火墙,只能自己手动来弄了。


还有没有其他的方法呢?有,肯定有。比如在驱动编程里面,可以在接收到arp报文但还没有交付时对其进行过滤。或者其他的过滤方式,这里不一一详述。

0 0
原创粉丝点击