一、前言
网络安全里的漏洞,有的是基于协议的漏洞,有的是某些协议或者功能实现时,由于开发不当留下的漏洞,这两种漏洞是有所不同的。为了理解什么是基于协议的漏洞,今天来学习一下ARP协议漏洞,虽说它是个很古老的协议漏洞,但在内网渗透过程中,arp欺骗还是会经常使用,同时,这个漏洞也很有学习的价值,为我们将来挖掘更多的基于协议的漏洞打下坚实的基础。
二、实验环境
1、实验拓扑
2、为什么使用omnipeek
omnipeek_7.1是一款类似于wireshark的抓包工具,其具有类似burpsuite的抓包改包重放功能,非常适合于渗透测试学习,请在win7_64位环境下安装,经实验win10下安装不能使用。
三、实验步骤
1、实验过程简介
在win7上,通过omnipeek抓取一个arp过程的response报文,修改报文为网关ip地址10.10.10.2,mac地址不变,构造好报文后,将其发送给kali2020,观察kali2020中的arp缓存列表。
2、查看win7正常环境
3、win7使用arp -d命令清空arp缓冲,开始omnipeek抓包
上图可见,我们抓到了一个网关10.10.10.2回给win7的response包,我们就对这个包进行修改,构造我们想要的arp欺骗包。在查看包体之前,先复习一下以太网帧的结构。
查看抓到的arp过程response包细节,可以看到其遵循上面的以太网帧结构。
我们对这个报文以下五处进行修改
修改过程,菜单send–>Ddit send Pascket,修改包
修改好后点击OK,然后在右侧send仪表盘点击Initiate Send按钮,持续发包。发包前后两次在kali2020上键入命令arp -a查看arp缓存,对比如下。可以看到,kali2020的arp列表中10.10.10.2的mac地址被欺骗成了00:50:2f:46:1e,与实际10.10.10.154的mac地址相同。此时,当kali2020再想与网关通讯时,其会将数据包全部发给win7的对应mac。
四、实验结论
1、ARP协议中,请求包和响应包没有对应的序列关系,设备无需收到请求包,可以直接给对方回复响应包,对方也信任该报文。
2、ARP协议是一个基于传闻的协议,网络中只要能收到什么样的响应包,无论真假,客户端都会将其记录保存在arp缓存列表中。
五、实战arp欺骗攻击
1、环境拓扑
2、操作步骤
这次我们使用kali2020上的arpsproof工具来欺骗win7,需要执行以下两条命
echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发功能
arpspoof -t 10.10.10.154 -r 10.10.10.2 #开启发包欺骗
3、此时,欺骗成功,win7所有进出网关10.10.10.2的流量都会发给kali2020转发,我们在kali2020上打开wireshark抓包,就可以捕获win7进出网关的流量从而对win7进行监控,达到ARP欺骗中间人攻击的效果。(注:kali2020发行版中默认没有安装arpsrpoof工具,kali2019.1中有)