网络攻防实战--ARP欺骗

小黄用python

共 5148字,需浏览 11分钟

 ·

2020-05-26 23:21


作者: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是被攻击主机)所示:

90b15480814f510f06196e24ffc53e45.webp

攻击主机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地址。

925ce257559bc400b62f912300ac5cc6.webp

图中,红色箭头为网卡名称,紫色箭头为ip地址,蓝色箭头为MAC地址。


Step 2. 在虚拟机中,通过fping命令,查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址

5575927a04d477cd5596aa2e5c60901f.webp

上图中,第一个ip地址192.168.43.1即为当前局域网的网关,而第二个ip地址就是要攻击的物理机的ip地址:192.168.43.64


Step 3. 在物理机中,通过控制面板中的网络和共享中心,查看物理机的ip地址,验证步骤二是否正确。

efa87b709a77b28a6425a3905bec69bb.webp

1256b1de9fe63dd91caadcdbec8fe045.webp

8ddb80dd7120eec7ff12c9e4c2996f4c.webp  

从上图中可以看出,物理机的ip地址的确为192.168.43.64(蓝色箭头),其MAC地址为E0-94-67-9C-24-E9(红色箭头),而局域网的网关地址也确实为192.168.43.1。


Step 4. 在虚拟机中,ping一下要攻击的物理机,同时在物理机中ping一下虚拟机。确保两台主机可以通信。

88fc1fcd6e92a08608d24418ea7e241a.webp

39ce69782f42d0cafb5e0ed9a597aa3e.webp

从图中可以看出,没有包丢失,两台主机可以通信。可以进行ARP攻击。


Step 5. 在进行ARP攻击之前,可以先查看一下被攻击主机的ARP缓存表。以便于被攻击后的ARP缓存表进行对照。在物理机中,打开cmd,输入arp -a

a2ae934b304de286d9549532d2ef7ca1.webp

图中显示,物理机中的ARP缓存表记录了网关的MAC地址和攻击主机的MAC地址,可以看出它们的MAC地址是不一样的。


Step 6. 在攻击之前,检测一下被攻击主机的联网状态,用被攻击主机的cmd,ping一下百度。

417aa680fa2398933f8b9808e598b69e.webp

图中显示,没有包丢失,说明此时被攻击主机可以上网。


Step 7. 在虚拟机中打开终端,利用arpspoof工具,对物理机发起ARP断网攻击。

输入arpspoof -i eth0 -t 192.168.43.64 192.168.43.1。其中,-i后面的参数是网卡名称,-t后面的参数是目的主机和网关,要截获目的主机发往网关的数据包。

1e16a019e5bd56450ed1b4bbf01e4ae0.webp

从图中可以看出,此时虚拟机不断地向物理机发送ARP应答包,这个应答包将网关的ip地址192.168.43.1和虚拟机的MAC地址0:c:29:cd:6c:36绑定在一起,从而将物理机的ARP缓存表中的网关的MAC地址修改为虚拟机的MAC地址。


Step 8. 在物理机中再次使用cmd,向百度发送一个ping包,检查是否可以联网。

同时打开网页,进行检查。

16cd0ff8f40a6b2f04504c4fe7fbba45.webp

图中的包全部丢失,没有接收到任何一个包。再打开百度网页进行查看。

811bce5a1282e9e79b4a952256c499cf.webp

从上面两张图,可以看出,此时物理机已经断网了。

 

Step 9.检查被攻击主机的ARP缓存表,验证其是否被ARP攻击了。

5b958bd7b17b9a36836dcb6b9684bb6b.webp

从图中,可以看出,此时被攻击主机的ARP缓存表中的网关和攻击主机的MAC地址是一样的,均为攻击主机的MAC地址。可以认定,物理机遭遇了ARP攻击。


Step 10. 关闭虚拟机的终端,再次检查物理机的联网状态,ping一下百度。

b1c85feaef7357b9db86cbc363703051.webp

从图中可以看出,在一会的延迟之后,物理机又可以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地址。

925ce257559bc400b62f912300ac5cc6.webp

图中,红色箭头为网卡名称,紫色箭头为ip地址,蓝色箭头为MAC地址。


Step 2. 在虚拟机中,通过fping命令,查看当前局域网还存在那些主机,以确定要攻击的主机的ip地址

5575927a04d477cd5596aa2e5c60901f.webp

上图中,第一个ip地址192.168.43.1即为当前局域网的网关,而第二个ip地址就是要攻击的物理机的ip地址:192.168.43.64。


Step 3. 在物理机中,通过控制面板中的网络和共享中心,查看物理机的ip地址,验证步骤二是否正确。

efa87b709a77b28a6425a3905bec69bb.webp

1256b1de9fe63dd91caadcdbec8fe045.webp

8ddb80dd7120eec7ff12c9e4c2996f4c.webp   

从上图中可以看出,物理机的ip地址的确为192.168.43.64(蓝色箭头),其MAC地址为E0-94-67-9C-24-E9(红色箭头),而局域网的网关地址也确实为192.168.43.1。


Step 4. 在虚拟机中,ping一下要攻击的物理机,同时在物理机中ping一下虚拟机。确保两台主机可以通信。

88fc1fcd6e92a08608d24418ea7e241a.webp


39ce69782f42d0cafb5e0ed9a597aa3e.webp

从图中可以看出,没有包丢失,两台主机可以通信。可以进行ARP攻击。


Step 5. 在进行ARP攻击之前,可以先查看一下被攻击主机的ARP缓存表。以便于被攻击后的ARP缓存表进行对照。在物理机中,打开cmd,输入arp -a

a2ae934b304de286d9549532d2ef7ca1.webp

图中显示,物理机中的ARP缓存表记录了网关的MAC地址和攻击主机的MAC地址,可以看出它们的MAC地址是不一样的。


Step 6. 在进行ARP欺骗前,得先打开攻击主机的IP转发功能,linux因为系统安全考虑,是不支持IP转发的,其配置文件写在/proc/sys/net/ipv4的ip_forward中。默认为0,接下来修改为1。

190fd272112294ee6cc9c79eae5ce4e6.webp

3cb2b3423745c5262914360d0012439d.webp

图中是直接找到ip_forward文件,将其值修改为1的。当然也可以通过命令行echo 1 > /proc/sys/net/ipv4/ip_forward实现。

c26e9e1b1242f978da0e690fd506e30e.webp

 

Step 7.在进行ARP欺骗前,先检查物理机的联网状态,Ping一下百度。

4d621134dc5169b0428af68d205e3b11.webp

没有包丢失,可以ping通,物理机可以正常上网。


Step 8.在kali linux中利用arpspoof工具,对物理机发起AR欺骗攻击。

输入arpspoof -i eth0 -t 192.168.43.64 192.168.43.1。其中,-i后面的参数是网卡名称,-t后面的参数是目的主机和网关,要截获目的主机发往网关的数据包。

1c2d6cf823529ca49fd3b1dc78025844.webp

从图中可以看出,此时虚拟机不断地向物理机发送ARP应答包,这个应答包将网关的ip地址192.168.43.1和虚拟机的MAC地址0:c:29:cd:6c:36绑定在一起,从而将物理机的ARP缓存表中的网关的MAC地址修改为虚拟机的MAC地址。虚拟机截获了物理机和网关之间的数据包。


Step 9.检查物理机的联网状态,Ping一下百度。

419d291fe810f3826ad4282cd53f9185.webp

没有包丢失,可以ping通,物理机依旧可以正常上网。


Step 10.检查物理机的ARP缓存表,检查其是否遭遇了ARP欺骗。

f9f56fd33477ca1b36b62cde520bc08e.webp

从图中,可以看出,此时被攻击主机的ARP缓存表中的网关和攻击主机的MAC地址是一样的,均为攻击主机的MAC地址。可以认定,物理机遭遇了ARP欺骗。


Step 11. 此时,物理机和网关通信的数据包都会流经虚拟机,那么可以在虚拟机中利用driftnet工具,可以捕获物理机正在浏览的图片。在虚拟机中打开driftnet。

5187e703526c51defa94e471405918d4.webp

从图中可以看出,虚拟机正在不断地捕获物理机和网卡之间的数据包。


Step 12.在物理机中,打开一个网页,浏览几张图片。并在虚拟机中driftnet窗口中监看。

59112541e893b06aa9a26a8391b85274.webp


这是物理机正在查看一张风景图。

fe4308262669ea2e80f01efba06c25b8.webp


而虚拟机中driftnet窗口右下角可以看到这张图片,另外窗口中的其他图片是物理机登陆的QQ中的图片,第一行的前三个是群头像,其他的是QQ聊天的气泡图片,可以判断,此时这三个群有消息发送到物理机,而且这些消息使用了窗口显示的气泡。

ac7980bcb8b8a19150779fae0a742330.webp

此时,物理机换了一张图片进行查看。

143d98d892d1ea769384d79a026e1a3d.webp

在虚拟机中的driftnet窗口中,依旧可以看到这张图片。


③实验小结

(一)实验中遇到的主要问题及解决方法

1.问题:一开始查看虚拟机的ip地址时,发现虚拟机的ip地址和物理机的ip地址不在同一个网段中。如图:

4fc1b63c5f2dc42368ed93d0f34dcc31.webp

8ddb80dd7120eec7ff12c9e4c2996f4c.webp

虚拟机的ip地址为192.168.233.128,而物理机的ip地址为192.168.43.64。两者不在同一个局域网中。根据ARP攻击的局限性,不在同一个局域网的两台主机是无法进行攻击的。


解决方法:通过查阅资料,发现虚拟机的网络连接有三种模式:桥接模式、NAT模式、仅主机模式。一开始我们的虚拟机采用了默认的NAT模式,这种模式下虚拟机共享主机的IP地址,Vmware会在主机上创建专用的虚拟网络,用于主机和虚拟机之间进行通信。而在桥接模式下,虚拟机被当做一个完全独立的主机,占用局域网的一个IP地址,将虚拟机的网卡交接到主机的物理网卡上,通过主机的网卡访问外部的Internet。所以我们应该选择桥接模式。

b946e356786c445f34acaba20304c4e5.webp

 

2.问题:物理机可以ping通虚拟机,虚拟机却ping不通物理机。

39ce69782f42d0cafb5e0ed9a597aa3e.webp


3eb626dd475a555c1a5cfe1f64786ab4.webp


解决方式:组员积极讨论,回想老师在课上提到的“现在系统将不经常用的端口设置为默认关闭”,大胆猜测:linux系统比较开放,默认开启ping功能,而win10系统可能会默认关闭ping功能。查看win10系统上的与Ping相关服务的开启状态。

fb7dc5e78253443e91d31a3469a07f9e.webp



果然,win10默认关闭的ICMP的回显请求,启用该规则之后,两台主机就可以成功ping通了。


(二)实验心得

通过上面的两个小实验,我们对ARP攻击有了一个更加直观、更加深刻的了解。另外,通过自己动手实践,发现书上讲的知识还是要动手做一做才行,因为书上的机器环境可能和你自己的不一样,要通过自己的积极实践、不断查阅资料,才能不断解决问题,加深对知识的理解。最后,对于老师课上讲的东西,不仅仅要认真记录,更要去理解,只有在理解的基础上,才能达到举一反三、触类旁通的效果。


浏览 94
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报