ARP(Address Resolution Protocol)即地址解析协议,负责将某个IP地址解析成对应的MAC地址。在网络通信过程中会使用到这两种地址,逻辑IP地址和物理MAC地址,一般情况下,正常通信需要这两种地址协同工作。一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?就是需要通过ARP协议获得的。
ARP工作过程
1.主机A想要发送数据包到主机B,主机A先要确定要访问的主机B是否处以同一个网络192.168.52.0中,主机A首先在本机的缓存中查询主机B的IP地址所对应的MAC地址。
2.如果主机A在本地缓存中找到192.168.52.122对应的MAC地址,则主机A用此MAC地址封装帧,然后发送出去。
3.如果主机A在本地缓存中没有找到192.168.52.122对应的MAC地址,则主机A发送一个ARP的查询包(ARP Request)。ARP查询包中的源地址是主机A的IP地址192.168.52.131,目标IP地址是主机B的IP地址192.168.52.122,源MAC地址是主机A的MAC地址00-0c-29-ff-72-22,目的MAC地址为广播MAC地址FF-FF-FF-FF-FF-FF。主机A封装完成后,把ARP查询包以广播的形式发送出去。
4.在同一网段中,主机B和主机C都会收到这个广播包, 然后解封装该数据包,主机C检查数据包的目的IP地址,发现目的IP地址是192.168.52.122,与本机不同,主机C放弃继续处理该数据包。主机B检查数据包的目的IP地址,发现目的地址是192.168.52.122,与本机相同,主机B在本地的缓存中增加或更新192.168.52.131对应的MAC地址条目。
5.主机B发现ARP查询包是询问本机IP地址所对应的MAC地址,主机B将发回ARP应答包(ARP Reply)。ARP应答包的源IP地址是192.168.52.122,目的IP地址是192.168.52.131,源MAC地址是00-0c-29-4c-af-b4,目的MAC地址是00-0c-29-ff-72-22,并以单播的方式发送出去。
6.在交换机相连的网络中,交换机是基于目的MAC地址转发的,则主机A将收到此ARP应答包,从而获得主机B对应的MAC地址。
7.主机A获得主机B的MAC地址后,主机A就可以向主机B发送其他数据了。
ARP欺骗原理
上面提到了ARP缓存表,在每台主机上都有一个ARP缓存表,缓存表中记录了局域网主机IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。但是并不是想象中的那么安全,在ARP缓存表机制存在一个缺陷,就是当请求主机A收到ARP应答包后,就直接把这个返回包中的IP地址与MAC地址的对应关系保存到ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。现在主机A的ARP缓存表中网关IP地址192.168.52.2对应的MAC地址为00-50-56-ea-96-d5,如果主机C假扮成网关,首先告诉主机A我就是网关,主机C向主机A发送构造好的ARP返回包,源IP为网关地址192.168.52.2,源MAC则为主机C自己的MAC地址00-0c-29-9f-56-f9,主机A把这个错误信息记录在了ARP缓存表中。这样主机A发送给网关地址的数据包就会发送到主机C上了,从而达到了ARP欺骗的目的。
ARP欺骗实验
主机C是一台Kali Linux,对主机A进行ARP欺骗。我们先来看一下主机A的ARP缓存表,网关的IP地址为192.168.52.2,对应的MAC地址为00-50-56-ea-96-d5。并且主机A可以通过该网关进行上网。
主机C利用arpspoof工具,对主机A进行ARP欺骗攻击,从而主机A会造成断网现象。
因为在主机A上查看ARP表,网关对应的MAC地址变成主机C的MAC地址00-0c-29-9f-56-f9。
ARP欺骗的主要目的是让目标主机A的流量先经过攻击主机C的网卡,再从网关出去,而网关也会把原本流入目标主机A的流量经过攻击主机C。在进行ARP欺骗之前,我们要先开启攻击主机C的IP转发功能,如果不开启的话,我们攻击之后先会使目标机A断网,而不是欺骗。通过以下命令开启并开始进行ARP欺骗攻击。
此时,我们在攻击主机C上就可以利用图片嗅探工具driftnet来捕获目标主机A在上网过程中查看的图片。因为主机A在上网过程中的流量都需要先经过攻击主机C。
以上就是朝夕生活(www.30zx.com)关于“详解ARP协议工作流程和ARP欺骗原理,以及ARP欺骗攻击实验”的详细内容,希望对大家有所帮助!