ARP原理、欺骗及防范
什么是ARP协议
ARP协议是“Address ResolutionProtocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP原理:
我们知道在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。对于原理的解释这里我举例说明:比如主机A(192.168.150.130)要向主机B(192.168.150.140)发送报文,A首先会查询本地的ARP缓存表,找到B的ip地址对应的mac地址后就会进行数据传输。如果未找到,机器A就会在网络上广播一个arp请求报文,目标mac地址是"FF.FF.FF.FF.FF.FF",这表示向同一网段内的所有主机发出这样的询问:“192.168.150.140的mac地址是什么?”网络上其他主机接收到这个ARP询问后并不响应,只有IP地址为192.168.150.140的主机b接收到这个帧时,才向主机a做出这样的回应:“192.168.150.140的mac地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
这里解释一下什么是ARP缓存表:
在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如附表所示。
附表 :
ip地址 mac地址
192.168.1.1 00-aa-00-62-c6-09
192.168.1.2 00-aa-00-62-c5-03
192.168.1.3 03-aa-01-75-c3-06
…… ……
(在windows系统中在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容;用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。)
ARP欺骗:
通过以上的原理分析我们可以发现,arp协议并不只在发送了arp请求才接收arp应答。
假设一个网络环境中,网内有三台主机,分别为主机A、B、C。主机详细信息如下描述:
A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC
正常情况下A和C之间进行通讯,但是此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A被欺骗了),这时B就伪装成C了。
同时,B同样向C发送一个ARP应答,应答包中发送方IP地址四192.168.10.1(A的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA),当C收到B伪造的ARP应答,也会更新本地ARP缓存(C也被欺骗了),这时B就伪装成了A。这样主机A和C都被主机B欺骗,A和C之间通讯的数据都经过了B。主机B完全可以知道他们之间说的什么了)。这就是典型的ARP欺骗过程。
注意:一般情况下,ARP欺骗的某一方应该是网关。
ARP欺骗存在两种情况:
一种是欺骗主机作为“中间人”,被欺骗主机的数据都经过它中转一次,这样欺骗主机可以窃取到被它欺骗的主机之间的通讯数据(这种通常也被称作为窃取数据,即嗅探):这种情况就属于我们上面所说的典型的ARP欺骗,欺骗主机向被欺骗主机发送大量伪造的ARP应答包进行欺骗,当通讯双方被欺骗成功后,自己作为了一个“中间人“的身份。此时被欺骗的主机双方还能正常通讯,只不过在通讯过程中被欺骗者“窃听”了。
另一种让被欺骗主机直接断网:这类情况就是在ARP欺骗过程中,欺骗者只欺骗了其中一方,如B欺骗了A,但是同时B没有对C进行欺骗,这样A实质上是在和B通讯,所以A就不能和C通讯了,另外一种情况还可能就是欺骗者伪造一个不存在地址进行欺骗。
ARP防范:
方法一:静态绑定
即把 IP和MAC静态绑定,在网内把主机和网关都做IP和MAC绑定。欺骗是通过ARP的动态实时的规则欺骗内网机器,所以我们把ARP全部设置为静态可以解决对内网PC的欺骗,同时在网关也要进行IP和MAC的静态绑定,这样双向绑定才比较保险。
具体做法:
对每台主机进行IP和MAC地址静态绑定。
通过命令,arp -s可以实现 “arp –s IP MAC地址 ”。
例如:“arp –s 192.168.10.1 AA-AA-AA-AA-AA-AA”。
如果设置成功会在PC上面通过执行 arp -a 可以看到相关的提示:
Internet 地址 物理地址 类型
192.168.10.1 AA-AA-AA-AA-AA-AA static(静态)
方法二:ARP防护软件
这个方法不做具体介绍,网上多的是。
方法三:具有ARP防护功能的路由器
前几天总是受到ARP攻击,让我们好多人都上不了网,所以就发了这篇博文,当时我的措施就是方法一。