网络攻防实战--ARP欺骗
作者:vaeloverforever
转自:https://blog.csdn.net/vaeloverforever/java/article/details/84504876
一、ARP欺骗概念
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网上上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网上上特定计算机或所有计算机无法正常连线。
二、实验环境(实验设备)
硬件:微型计算机
软件:kali linux下的arpspoof工具和driftnet工具
三、实验原理及内容以及实验小结
利用arpspoof工具和driftnet工具的arp欺骗实验
①实验原理
1.ARP协议:ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址。
2.ARP协议的基本功能:通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。
3. ARP攻击的局限性:ARP攻击仅能在局域网进行,无法对外网进行攻击。
4. ARP攻击的攻击原理:ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
5.常见的ARP欺骗手法:同时对局域网内的一台主机和网关进行ARP欺骗,更改这台主机和网关的ARP缓存表。如下图(PC2是攻击主机,PC1是被攻击主机)所示:
攻击主机PC2发送ARP应答包给被攻击主机PC1和网关,分别修改它们的ARP缓存表, 将它们的ip地址所对应的MAC地址,全修改为攻击主机PC2的MAC地址,这样它们之间数据都被攻击主机PC2截获。
②实验内容
实验内容分为两个部分:ARP断网攻击和ARP欺骗(截获图片)。这两个实验都是用了arpspoof这个工具,其中进行断网攻击时,不开启IP转发功能即可(在我们用的kali linux系统中,这个功能默认是关闭的);而进行ARP欺骗时,要打开IP转发功能。
1、利用arpspoof进行ARP断网攻击
A. 实验说明:
被攻击主机:电脑的物理机,win10系统,其ip地址为192.168.43.64,MAC地址为e0:94:67:9c:24:e9
攻击主机:电脑的虚拟机,kali linux系统,其ip地址为192.168.43.149,MAC地址为00:0c:29:cd:6c:36
网关:ip地址为192.168.43.1,MAC地址为d4-61-2e-d6-bc-10
攻击工具:kali linux系统下的arpspoof工具
B. 实验步骤:
Step 1. 在攻击主机打开终端,输入ifconfig,查看其网卡名称、ip地址、MAC地址。
图中,红色箭头为网卡名称,紫色箭头为ip地址,蓝色箭头为MAC地址。
Step 2. 在虚拟机中,通过fping命令,查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址
上图中,第一个ip地址192.168.43.1即为当前局域网的网关,而第二个ip地址就是要攻击的物理机的ip地址:192.168.43.64
Step 3. 在物理机中,通过控制面板中的网络和共享中心,查看物理机的ip地址,验证步骤二是否正确。
从上图中可以看出,物理机的ip地址的确为192.168.43.64(蓝色箭头),其MAC地址为E0-94-67-9C-24-E9(红色箭头),而局域网的网关地址也确实为192.168.43.1。
Step 4. 在虚拟机中,ping一下要攻击的物理机,同时在物理机中ping一下虚拟机。确保两台主机可以通信。
从图中可以看出,没有包丢失,两台主机可以通信。可以进行ARP攻击。
Step 5. 在进行ARP攻击之前,可以先查看一下被攻击主机的ARP缓存表。以便于被攻击后的ARP缓存表进行对照。在物理机中,打开cmd,输入arp -a
图中显示,物理机中的ARP缓存表记录了网关的MAC地址和攻击主机的MAC地址,可以看出它们的MAC地址是不一样的。
Step 6. 在攻击之前,检测一下被攻击主机的联网状态,用被攻击主机的cmd,ping一下百度。
图中显示,没有包丢失,说明此时被攻击主机可以上网。
Step 7. 在虚拟机中打开终端,利用arpspoof工具,对物理机发起ARP断网攻击。
输入arpspoof -i eth0 -t 192.168.43.64 192.168.43.1。其中,-i后面的参数是网卡名称,-t后面的参数是目的主机和网关,要截获目的主机发往网关的数据包。
从图中可以看出,此时虚拟机不断地向物理机发送ARP应答包,这个应答包将网关的ip地址192.168.43.1和虚拟机的MAC地址0:c:29:cd:6c:36绑定在一起,从而将物理机的ARP缓存表中的网关的MAC地址修改为虚拟机的MAC地址。
Step 8. 在物理机中再次使用cmd,向百度发送一个ping包,检查是否可以联网。
同时打开网页,进行检查。
图中的包全部丢失,没有接收到任何一个包。再打开百度网页进行查看。
从上面两张图,可以看出,此时物理机已经断网了。
Step 9.检查被攻击主机的ARP缓存表,验证其是否被ARP攻击了。
从图中,可以看出,此时被攻击主机的ARP缓存表中的网关和攻击主机的MAC地址是一样的,均为攻击主机的MAC地址。可以认定,物理机遭遇了ARP攻击。
Step 10. 关闭虚拟机的终端,再次检查物理机的联网状态,ping一下百度。
从图中可以看出,在一会的延迟之后,物理机又可以ping通百度了,又可以正常上网了。
2、利用arpspoof工具和driftnet工具进行ARP欺骗(截获图片)
A. 实验说明:
被攻击主机:电脑的物理机,win10系统,其ip地址为192.168.43.64,MAC地址为e0:94:67:9c:24:e9
攻击主机:电脑的虚拟机,kali linux系统,其ip地址为192.168.43.149,MAC地址为00:0c:29:cd:6c:36
网关:ip地址为192.168.43.1,MAC地址为d4-61-2e-d6-bc-10
攻击工具:kali linux系统下的arpspoof工具
B. 实验步骤:
Step 1. 在攻击主机打开终端,输入ifconfig,查看其网卡名称、ip地址、MAC地址。
图中,红色箭头为网卡名称,紫色箭头为ip地址,蓝色箭头为MAC地址。
Step 2. 在虚拟机中,通过fping命令,查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址
上图中,第一个ip地址192.168.43.1即为当前局域网的网关,而第二个ip地址就是要攻击的物理机的ip地址:192.168.43.64。
Step 3. 在物理机中,通过控制面板中的网络和共享中心,查看物理机的ip地址,验证步骤二是否正确。
从上图中可以看出,物理机的ip地址的确为192.168.43.64(蓝色箭头),其MAC地址为E0-94-67-9C-24-E9(红色箭头),而局域网的网关地址也确实为192.168.43.1。
Step 4. 在虚拟机中,ping一下要攻击的物理机,同时在物理机中ping一下虚拟机。确保两台主机可以通信。
从图中可以看出,没有包丢失,两台主机可以通信。可以进行ARP攻击。
Step 5. 在进行ARP攻击之前,可以先查看一下被攻击主机的ARP缓存表。以便于被攻击后的ARP缓存表进行对照。在物理机中,打开cmd,输入arp -a
图中显示,物理机中的ARP缓存表记录了网关的MAC地址和攻击主机的MAC地址,可以看出它们的MAC地址是不一样的。
Step 6. 在进行ARP欺骗前,得先打开攻击主机的IP转发功能,linux因为系统安全考虑,是不支持IP转发的,其配置文件写在/proc/sys/net/ipv4的ip_forward中。默认为0,接下来修改为1。
图中是直接找到ip_forward文件,将其值修改为1的。当然也可以通过命令行echo 1 > /proc/sys/net/ipv4/ip_forward实现。
Step 7.在进行ARP欺骗前,先检查物理机的联网状态,Ping一下百度。
没有包丢失,可以ping通,物理机可以正常上网。
Step 8.在kali linux中利用arpspoof工具,对物理机发起AR欺骗攻击。
输入arpspoof -i eth0 -t 192.168.43.64 192.168.43.1。其中,-i后面的参数是网卡名称,-t后面的参数是目的主机和网关,要截获目的主机发往网关的数据包。
从图中可以看出,此时虚拟机不断地向物理机发送ARP应答包,这个应答包将网关的ip地址192.168.43.1和虚拟机的MAC地址0:c:29:cd:6c:36绑定在一起,从而将物理机的ARP缓存表中的网关的MAC地址修改为虚拟机的MAC地址。虚拟机截获了物理机和网关之间的数据包。
Step 9.检查物理机的联网状态,Ping一下百度。
没有包丢失,可以ping通,物理机依旧可以正常上网。
Step 10.检查物理机的ARP缓存表,检查其是否遭遇了ARP欺骗。
从图中,可以看出,此时被攻击主机的ARP缓存表中的网关和攻击主机的MAC地址是一样的,均为攻击主机的MAC地址。可以认定,物理机遭遇了ARP欺骗。
Step 11. 此时,物理机和网关通信的数据包都会流经虚拟机,那么可以在虚拟机中利用driftnet工具,可以捕获物理机正在浏览的图片。在虚拟机中打开driftnet。
从图中可以看出,虚拟机正在不断地捕获物理机和网卡之间的数据包。
Step 12.在物理机中,打开一个网页,浏览几张图片。并在虚拟机中driftnet窗口中监看。
这是物理机正在查看一张风景图。
而虚拟机中driftnet窗口右下角可以看到这张图片,另外窗口中的其他图片是物理机登陆的QQ中的图片,第一行的前三个是群头像,其他的是QQ聊天的气泡图片,可以判断,此时这三个群有消息发送到物理机,而且这些消息使用了窗口显示的气泡。
此时,物理机换了一张图片进行查看。
在虚拟机中的driftnet窗口中,依旧可以看到这张图片。
③实验小结
(一)实验中遇到的主要问题及解决方法
1.问题:一开始查看虚拟机的ip地址时,发现虚拟机的ip地址和物理机的ip地址不在同一个网段中。如图:
虚拟机的ip地址为192.168.233.128,而物理机的ip地址为192.168.43.64。两者不在同一个局域网中。根据ARP攻击的局限性,不在同一个局域网的两台主机是无法进行攻击的。
解决方法:通过查阅资料,发现虚拟机的网络连接有三种模式:桥接模式、NAT模式、仅主机模式。一开始我们的虚拟机采用了默认的NAT模式,这种模式下虚拟机共享主机的IP地址,Vmware会在主机上创建专用的虚拟网络,用于主机和虚拟机之间进行通信。而在桥接模式下,虚拟机被当做一个完全独立的主机,占用局域网的一个IP地址,将虚拟机的网卡交接到主机的物理网卡上,通过主机的网卡访问外部的Internet。所以我们应该选择桥接模式。
2.问题:物理机可以ping通虚拟机,虚拟机却ping不通物理机。
解决方式:组员积极讨论,回想老师在课上提到的“现在系统将不经常用的端口设置为默认关闭”,大胆猜测:linux系统比较开放,默认开启ping功能,而win10系统可能会默认关闭ping功能。查看win10系统上的与Ping相关服务的开启状态。
果然,win10默认关闭的ICMP的回显请求,启用该规则之后,两台主机就可以成功ping通了。
(二)实验心得
通过上面的两个小实验,我们对ARP攻击有了一个更加直观、更加深刻的了解。另外,通过自己动手实践,发现书上讲的知识还是要动手做一做才行,因为书上的机器环境可能和你自己的不一样,要通过自己的积极实践、不断查阅资料,才能不断解决问题,加深对知识的理解。最后,对于老师课上讲的东西,不仅仅要认真记录,更要去理解,只有在理解的基础上,才能达到举一反三、触类旁通的效果。