ARP欺骗&数据帧转发之MAC修改

一、基础知识

 1、交换机工作(数据链路层)

        记住,交换机工作在数据链路层,也就是交换机根本只在乎数据帧的源mac和目的mac,而根本不关注数据帧的源ip和目的ip,或者说交换机根本查看不到数据帧的源ip和目的ip,也就是交换机只是解压数据帧的帧头部分,不会解压数据帧的报头部分。

2、目的mac地址获得

        TCP/IP里面是用的ARP协议。比如新建了一个内网,如果一台机器A找机器B,封装FRAME时(OSI的第二层用的数据格式),要封装对方的MAC,开始时A不知道B的MAC,只知道IP,它就发一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个请求包在内网内被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃。B接到时,发现IP与自己的一样,就答应这个包的请求,把自己的MAC送给A。如果B是其他子网的机器,那么路由器会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的是路由器的。

        记住, 网络上数据传输过程中,源mac和目的mac地址是不断变化的(由路由器进行修改),是变化的,因为发送端开始不知道目的主机的mac地址,所以每经过一个路由器mac地址是变化的。

 3、路由转发过程

        当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包含了源地址和目标地址。主机A会用本机配置的24位IP网络掩码255.255.255.0与目标地址进行与运算,得出目标网络地址与本机的网络地址是不是在同一个网段中。如果不是将IP数据包转发到网关。

        在发往网关前主机A还会通过ARP的请求获得默认网关的MAC地址。在数据链路层中,IP数据包封装成以太网数据帧,所以主机A将请求的源mac设成自己的mac,目的mac设成网关路由器的mac然后才发住到网关(因为交换机必须知道目的mac才能转发数帧)……也就是路由器上的一个端口。

        当网关路由器接收到以太网数据帧时,发现数据帧中的目标MAC地址是自己的某一个端口的物理地址,这时路由器会把以太网数据帧的封装去掉。路由器认为这个IP数据包是要通过自己进行转发,接着它就在匹配路由表。匹配到路由项后,它就将包发往下一条地址(这时路由器会重新对数据包进行组帧,将源mac设置成自己的mac,将目的mac设置成下一跳路由器的mac,同时将A的ip和对应A的mac记录在arp缓冲表项中,便于对回传给A的数据包进行组帧)。路由器转发数据包就是这样,所以它始终是不会改IP地址的。只会改MAC.

        当有数据包传到路由器时,路由器首先将其的目的地址与路由表进行对比,如果是本地网络,将不会进行转发到外网络,而是直接转发给本地网内的目的主机;但是如果目的地址经路由表对比,发现不是在本网中,有nat就将改变源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将数据包转发到相应的端口,进行通信。

 4、具体示例(A访问B)

        首先对比是否同一子网,如果是,检查ARP表,有B的MAC就直接发送,没有就发送ARP请求.如果否,发送到默认网关C,源IP为A,源MAC为A,目的IP为B,目的MAC地址为C, 
C接收到这个包,检查路由表,发送到下一跳D,源IP为A,源MAC为C,目的IP为B,目的MAC为D….. 如此循环,直到发送到B.

 

 

二、ARP欺骗

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

ARP欺骗&数据帧转发之MAC修改_第1张图片

        攻击主机PC2发送ARP应答包给被攻击主机PC1和网关,分别修改它们的ARP缓存表, 将它们的ip地址所对应的MAC地址,全修改为攻击主机PC2的MAC地址,这样它们之间数据都被攻击主机PC2截获。(具体就是对于网关的ARP缓冲表,修改PC2的ip对应的mac地址为PC1的mac地址;对于PC2的ARP缓冲表,修改网关ip所对应的mac地址也为PC1的mac地址,这样网关发给PC2的数据都会发给PC1,PC2发给网关的数据也都会发给PC1,其中交换机起到了关键作用,因为所有的数据都要经过交换机,而交换机转发数据只看数据的目的mac)

②实验内容

    实验内容分为两个部分: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地址。

ARP欺骗&数据帧转发之MAC修改_第2张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第3张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第4张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第5张图片

ARP欺骗&数据帧转发之MAC修改_第6张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第7张图片

        图中显示,物理机中的ARP缓存表记录了网关的MAC地址和攻击主机的MAC地址,可以看出它们的MAC地址是不一样的。上图出现的问题应该是kali操作机隐藏了自己的mac。

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

ARP欺骗&数据帧转发之MAC修改_第8张图片

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

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

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

ARP欺骗&数据帧转发之MAC修改_第9张图片

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

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

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

ARP欺骗&数据帧转发之MAC修改_第10张图片

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

ARP欺骗&数据帧转发之MAC修改_第11张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第12张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第13张图片

从图中可以看出,在一会的延迟之后,物理机又可以ping通百度了,又可以正常上网了。

3、ARP欺骗

         在进行ARP欺骗前,我们只需要打开攻击主机的IP转发功能(也就是将攻击主机变成路由器),linux因为系统安全考虑,是不支持IP转发的,其配置文件写在/proc/sys/net/ipv4的ip_forward中。默认为0,接下来修改为1。

ARP欺骗&数据帧转发之MAC修改_第14张图片

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

三、可能遇到的问题及解决方法

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

ARP欺骗&数据帧转发之MAC修改_第15张图片

ARP欺骗&数据帧转发之MAC修改_第16张图片

        虚拟机的ip地址为192.168.233.128,而物理机的ip地址为192.168.43.64。两者不在同一个局域网中。根据ARP攻击的局限性,不在同一个局域网的两台主机是无法进行攻击的(准确说要在同一个子网下,因为arp包会被路由器阻断,arp广播只会在子网中进行,路由器会阻断广播域,或者说只要目标主机和攻击主机的网关路由器是一样的就可以实现攻击)。

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

ARP欺骗&数据帧转发之MAC修改_第17张图片

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

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

ARP欺骗&数据帧转发之MAC修改_第18张图片

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

你可能感兴趣的:(网络安全,网络,安全)