(CN) Arp Spoofing

摘要:计算机网络综合实验六,内容主要包括ARP协议及ARP欺骗

ARP协议及ARP欺骗

1.ARP协议

ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。

ARP工作过程

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

  • 主机A首先查看自己的ARP缓存表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

  • 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:

  • 将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

  • 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。

ARP攻击原理

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信,或者如果不及时处理,便会造成网络通道阻塞、网络设备的承载过重、网络的通讯质量不佳等情况。

2.ARP欺骗原理

伪装成网关

攻击机向目标主机发送伪造的ARP应答包,以此将攻击机自己伪装成网关,从而使得目标主机流向真正 网关的所有数据,都会先发送到攻击主机上,如果测试攻击主机进行数据包抓取等操作就能达到数据包的截取、篡改等效果,从而产生安全威胁。

image-20221008204209093

伪装成主机

攻击主机将自己伪装成局域网内的目标主机,简而言之即对目标主机进行了替换,将目标主机的IP地址对应的MAC地址替换为攻击主机的MAC地址,这样就能使得局域网内的其他主机向目的主机发送报文时,这些报文最终都流向了攻击主机,而目标主机将无法收到任何报文。

image-20221008204245693

3.ARP欺骗实验

靶机设置(CentOS 7.6)

使用ifconfig查看靶机IP地址以及MAC地址,如下:

image-20221008204352645

ping www.baidu.com 以此来验证靶机是否能够上网,如下:

image-20221008204428347

ping 攻击机测试连通性,如下:

image-20221008204447175

查看arp缓存表,发现仅有相应网关的记录:

image-20221008204520924

攻击机设置(Kali Linux)

使用ip addr查看攻击机IP地址以及MAC地址,如下:

image-20221008204559955

ping 靶机进行连通性测试,如下:

image-20221008204619334

查看arp缓存,发现仅有相应网关的记录:

image-20221008204639479

实施ARP欺骗

首先,通过arpspoof这一款成熟的arp欺骗工具进行实验。该工具能够直接欺骗网关,使得通过网关访问网络的计算机全部被欺骗,从而达到嗅探和抓取数据包等进一步威胁目的。

arpspoof -i eth0 目的为指定需要使用的接口。

arpspoof -i eth0 -t 192.168.157.131 目的为指定一台特定的,即靶机,作为arp欺骗的对象。

image-20221008204737639

此时,查看靶机的ARP缓存表,如下:

image-20221008204752825

不难发现,缓存表中出现了一条新的记录,即攻击主机的IP和MAC的映射关系,再观察发现,网关的MAC地址也发生了变化,变成了攻击主机的MAC地址。

此时,再检验靶机是否可以正常上网,发现:

image-20221008231106556

现在靶机无法ping通任何网站,从而对目标主机的ARP欺骗成功,导致了靶机的网关的MAC地址变成了攻击机的MAC地址,从而使得靶机将数据包错误的发给了攻击主机,从而无法正常的上网。

这是因为在攻击主机上并未设置对收到的数据包的转发功能,也未对收到的数据包进行任何处理,因此这些数据包到攻击主机后便阻塞了,这也是靶机造成类似断网现象的原因。

在此基础上,攻击主机可以更进一步,将收到的数据包正常的转发出去,并给靶机正常的反馈,这样攻击主机便对靶机透明,使得靶机用户不会感知到攻击机的存在,而攻击主机此时可以对途经的数据包进行进一步的分析,从而获取更多靶机用户的信息;也可以伪造返回给靶机的数据包,从而达成进一步的攻击目的,以上内容有待后续在网络安全方向的继续深入,故在此次实验中并未涉及。

ARP欺骗的危害及防御

首先,ARP欺骗可以使得局域网内的其他主机断网,同时也可以截取其他主机的流量或者隐私信息,从而进行进一步的危害攻击。

ARP攻击是由于协议的缺陷,而用户并不能修改协议,因此可以通过设置静态ARP,通过arp -s ip_addr mac_addr 的形式进行IP-MAC静态绑定,从而形成保护。还可以通过设置arp服务器来查找arp转换表,其机制类似于DNS服务器。另外也可以采取一些arp欺骗防护软件,如arptables等工具,进行防护。

Outis Yang
Outis Yang
2024 Undergraduate in Cyberspace Security

My research interests include Internet of Vehicles(IoV), Penetration Testing and Security research.