ARP欺骗以及其原理

什么是ARP欺骗?原理是什么?

回答问题前,首先说下 ARP协议,这是一种在局域网使用比较多的协议。(数据链路层的层级划分很模糊,所以对应的ARP协议可以在网络层,也可以在网络接口层,放在哪都没有问题)

ARP协议的主要功能是将ip解析成mac地址,分为两个数据包,分别是ARP请求包与ARP应答包,两个数据包经常是成对出现的。

ARP请求包的意思是:ARP工作时,送出一个含有目的地ip地址的以太网广播数据包,即ARP请求包。(由于是广播的形式发出去,所以呢所有的机器都能够收到请求包。)它表示我想与目的ip进行通信,请告诉我此ip的MAC地址。

ARP应答包:当目标主机收到ARP请求包,发现请求的ip地址与本机ip地址相同,就会返回一个ARP应答包。它表示我的主机就是此ip,我的mac地址是xx-xx-xx-xx-xx-xx

我们知道局域网是通过根据MAC地址进行通信的,现在有一个例子,比如说交换机连接着三台主机,分别是A、B、C。主机A并不知道主机C的MAC地址,又想与C通信,怎么办?这时候主机A发送一个ARP请求包,经过交换机,交换机广播数据包,也就是B与C都能收到这个请求的数据包。由于这个请求包里包含的ip地址,与主机B的ip地址并不匹配,所以主机B收到这个请求的数据包是直接丢弃的。而对于主机C,请求包的ip地址与其ip地址是相同的,所以主机C会给主机A回复一个ARP应答包,应答包里包含了主机C的MAC地址。主机A知道了主机C的MAC地址,把C的ip地址与MAC地址加入到缓存当中。正常流程就是这样。

为什么有ARP欺骗一说呢?上文可知,ARP协议本身的交互过程中间是没有任何认证的。A请求一个包,C就应答一个包。假如说A没有请求的时候,三台机器正常工作,C直接给A发送一个应答的数据包,应答的数据包包含的内容是“我的ip地址是192.168.1.20,MAC地址是30-xx-xx-xx-xx-xx”,A也会认为192.168.1.20对应的mac地址是30-xx-xx-xx-xx-xx,缓存当中就会记录一条假的记录。ARP欺骗之所以能成功,原因在于APR协议本身没有任何认证的机制,只要回一个ARP应答包,应答包里是什么内容,机器都无条件的接受且记录在缓存当中。

ARP缓存表用于存储其他主机或者网关的ip地址与mac地址的对应关系,每台主机、网关都有一个ARP缓存表。ARP缓存表里存储的每条记录实际上就是一个IP地址与mac地址对,可以是静态的,也可以动态的。如果是静态的,那么这条记录不能被ARP应答包修改;如果是动态的,那么这条记录可以被ARP应答包修改。在windows中,可通过arp -a查看所有的缓存,arp -s增加一条静态记录,也可以通过arp -d删除一条记录。

在完整的拓扑图中,正常流程是这样的。请求:主机B-->交换机-->路由器-->互联网。响应:原路返回。整个数据是不经过主机A的。

一旦有了ARP欺骗,比如主机A向主机B发送虚假的应答数据包,让被攻击者主机B误认为主机A就是网关;同时攻击者还会发送虚假的数据包到交换机,让交换机误认为主机A就是主机B。这样攻击者就成功的充当了中间人的角色,由于数据流量经过主机A,所以可以监听主机B的数据,这是它的危害。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191022A0HDOQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励