ARP协议***与欺骗分析-交换机工作原理
一:交换机的工作原理
(一):实验拓扑
1:主机A与主机B通信
交换机的工作原理
(1):主机A将一个带有主机A的的ip地址和MAC地址的数据进行封装成帧,向局域网中发送广播。
(2):交换机1的接口G0/0/1接收到主机A发送来的数据帧,会立即将数据帧的源MA地
址和接收数据帧的接口G0/0/1记录在它的MAC地址表中。此时的源MAC地址是主机A。
(3):交换机这个时候查看自己MAC地址表,看看自己的MAC地址表中是否记录了数据帧的目标MAC地址和默认的接口。如果自己的MAC地址表中有,则按照记录的默认接口转发出去,这个时候发送的是一条单播,因为此时发送的路线是一条明确的路线;如果自己的MAC地址表中没有目标MAC地址,那么就会将数据帧在除了接收数据帧的接口的其它接口处转发出去,由于此时数据帧发送的路线是一条不明确的路径,所以这个时候发送的是一条广播。从上图中我们可以看到,数据帧是从g0/0/2接口转发出去的,但是这个时候的MAC地址表是不记存数据帧的源MAC地址的,因为这个接口不是接收口。
(4):这个时候网络中的所有主机都会接收到交换机转发出来的数据帧,当将数据帧身上的帧脱掉后,看到了数据包的寻找的主机不是自己的,就会立即把数据包丢弃,而看到数据包上寻找的主机是自己时,就会把自己的ip地址和MAC地址写在数据包中,然后将数据包封装成帧,再进行回包。值得一提的是这里的过程很ARP请求报文的过程是一样的。此时数据帧上的源MAC地址是主机B,目标MAC地址是主句A。
(5):数据帧从主机B的接口转发出去后来到了交换机的g0/0/2接口,此时交换机会立刻将数据帧的源MAC地址和ip地址记存在交换机的MAC地址表中。此时的源MAC地址是主机B。
(6):交换机看到了数据帧上的目标MAC地址是主机A,在查看自己的MAC缓存表中时,看到了它,并且知道了它的默认接口是g0/0/1,这时,交换机会将数据帧按照默认接口转发出去。
(7):主机A在收到了主机B的回复后,脱掉数据帧身上帧,查看数据包,看到了数据包上的源MAC地址是主机A,就会立刻将源MAC地址记录到自己的地址表中。
(8):这个时候主机A与主机B通信时就不用发送广播了,直接发送单播。
2:主机A与主机C通信
交换机的工作原理
(1):主机A将一个带有主机A的的ip地址和MAC地址的数据进行封装成帧,向局域网中发送广播。
(2):交换机1的接口的g0/0/1收到数据帧后,将数据帧身上的源MAC地址记录到疾患及的MAC地址表中。交换机1查看自己MAC地址表,没有发现它的目标MAC地址,就会在g0/02接口处和g0/0/4接口处将数据帧转发出去。
(3):主机B接收到交换机1发来的数据帧后,脱掉数据帧身上的帧,看到数据包上的寻找的目标不是自己,就会立即将数据包丢掉,不进行回复。
(4):在交换机2的接口处接收到了交换机1发送来的数据帧后,也立即将数据帧身上的源MAC地址记存在交换机身上的MAC地址表中。
(5):交换机2在查看数据帧后,了解了它的目标,然后交换机2查看自己的MAC地址表寻找他它目标,没有找到目标,交换机将数据帧直接从出来接收数据帧的其它接口处转发出去。
(6):主句C收到数据帧后,将数据帧身上的帧脱掉,查看数据包,看到它寻找的是自己,就会将自己的MAC地址写进数据包中,此时的数据包上的源MAC地址是主句C,目标MAC地址主机A。然后将数据包进行封装成帧,从接收的接口处转发出去。
(7):交换机2的g/0/0/3接口接收到了数据帧,就会将数据帧上的源MAC地址记存在MAC地址表上。
(8):交换机2在打开数据帧的时候,看到了数据帧的目标MAC地址,交换机2查看自己的MAC地址表,发现有它的目标MAC地址,然后交换机2就会按照MAC地址表中的默认接口转发出去,即g0/0/4接口。
(9):交换机1的g0/0/4接口接收到数据帧,看到了数据帧身上的源MAC地址和目标MAC地址,就立刻将它们记存在交换机的MAC地址表中。
(10):交换机1也查看自己的MAC地址表,找到了数据帧的目标MAC地址,将数据帧按照MAC地址表的默认接口转发出去。注:这个时候就不会在接口g0/0/2处转发了,而是以单播的形式直接发送给目标主机。
(11):主机A接收到数据帧后,叫数据帧身上的帧脱掉,查看数据包,发现了源MAC地址,就将它记录在自己的MAC地址表中。
(12):这个时候主机A与主机C再通信就不会再使用广播了,直接发送单播就OK了。
------------------------------------------------------------------------------------------------------------------------------
二:ARP协议的基础知识
1:ARP协议概念:
地址解析协议,具有三层的协议。
2:ARP协议功能:
通过ip地址获得目标主机的MAC地址。
3:ARP协议的工作原理:
主机A向主机B发送一个数据,这个数据中包含了发送者的ip地址和MAC地址。在数据发送之前,主机A会查看自己的ARP缓存表,寻找目标ip地址,如果找到了目标ip地址,也就知道了目标MAC地址,因此这个时候(即数据链路层)就会将数据进行封装成帧(即数据帧),直接发送给目标就OK了。那么如果在ARP缓存表中没有找到目标ip地址,这个时候还是会将数据进行封装成帧,在网络中发送一个广播---ARP请求报文,在这个报文中的二层中写了“MAC address ff ff ff ff ff ff ”这里的意思就是指:请求寻找主句B的MAC地址。在同一个网段中的所有设备都收到了主句A发送来的请求报文,在将报文的帧脱掉露出数据包时发现了它寻找的目标不是自己的,就会直接将数据包丢掉,不予理会;而在发现它寻找的目标就是自己时,就会将发送者的ip地址,MAC地址记存在自己的ARP缓存表中,然后就进行回包。那么在回包之前,主机B会将自己的ip地址和MAC地址写进数据包中,(这个时候主机B就成为发送者了,那么数据包的源ip地址和源MAC地址就是指主机B的,目标ip地址和目标MAC地址就是指主机A了。)然后再将数据包进行封装成数据帧。进行回包。这个时候主机A收到了主机B发送来的数据帧时,脱掉数据帧,打开数据包,就会看到自己要寻找的ip地址和MAC地址了,然后就会将这信息记存在自己ARP
缓存表中。
4:ARP协议的欺骗
由于ARP缓存表会老化,时间长了会对数据进行遗忘。那么***者就会利用这一点进行欺骗。通常欺骗有两种----1:截获网络数据,进行修改。2:伪造网关
-------------------------------------------------------------------------------------------------------------------------------
三:ARP协议的实验验证
(一):实验拓扑
(1):同一个网段下测验:
1:缓存表形式验证
主机1与主机4
我们看到主机1和主机4的MAC地址。
先看主机1的缓存表
图上可以看到.主机1的ARP缓存表空空如也,并没有任何缓存表,这就说明数据帧在发送之前或者发送出去后没有回包的情况下,主机的缓存表中是不会出现的。
试试主机1与主机4 ping通之后的情况。
这个时候主机1与主机4之间已经能够通信了,说明主机1寻找主机4得到了主机4的回复了。
现在来看看主机1的ARP缓存表
这个时候我们看到了主机的ARP缓存表中已经有了一个MAC地址,和我们寻找的目标ip地址。MAC地址是主机4的。这就说明主机在接收到回包后,会将数据包上的源MAC地址记存在自己的APR缓存表中。
2:在以抓包的形式验证
在主机1的数据帧转发出口处找去报文,由于我们要抓的是ARP报文,因此我们再过滤器中过滤下。
上图中说明我们已经到了两个报文,第一个是广播报文,第二个是单播报文。
查看广播报文进行分析
查看广播报文进行分析
为什么请求报文是广播,而不是单播呢?
我们用广播报文的分析进行回答。
我们从上图中可以看到请求报文不论是2层,还是三层中都是以广播的形式的的,因为在2层设备交换机中是不知道目标的MAC地址的,三层设备路由器中也是不知道目标的MAC地址的。所以要用广播的的形式进行局域网内大范围的寻找,直到目标的回应。
那么我们来看单播形式的回复报文
回复报文为什么是以单播的形式发送,而不是以广播的形式呢?
我们用下面的单播报文的分析来回答。
上图中我们可以清楚的看到不论在2层还是3层中都可以看到源MAC地址和目标MAC的地址。因为数据包来的时候以广播的形式找到主机4的,那么也就是说数据包已经知道的回包路径,因此就不要进行广播寻求目标主机了,而是以单播形式回复。
这个时候,主机1已经学到主机4的MAC地址了,在以后中主机1要与主机4通信的话就是以单播的形式进行了。
注:主机1与主机2通信,抓取到两个报文之后,再次让主机1与主机2通信的话,抓取到的报文依然是先前的两个报文。因为后面的通信单播报文是不会再出现的。如果再次抓取到了两个报文,那就说明先前的ARP缓存表中MAC地址已经不存在了,只要时间一长,ARP缓存表就会过期或者将里面的内容遗忘。
这个时候主句1与主机4通信的时候就是以单播的形式发送数据包了。因为现在再去主机1处抓取报文是抓不到报文的,只会出现先前的两个报文,那么我们再路由器的下接口g0/0/0处抓取报文试试看。
在路由器下接口抓取报文分析
上图中可以看到我们只抓取到了一个广播报文,
从上图中我们可以看出广播ARP请求报文2层3层中都不知道目标主机4的MAC地址的。没有回复报文,也就是说广播在路由器这里是被阻挡在外了。
那么我们要问了这里为什么只是一个报文,为什么是广播报文?
因为主机第一次发送数据帧的时候是以广播的形式的,数据帧在通过这里却被挡住了。路由器是具有“大悲掌”功能的,具有隔离广播的功能,ARP报文只会在以太网中通过,不能再网络中通过,那么也就是说即使路由器另一边有目标主机4,数据帧也是不会到达目标主机4的,因此就不会有回复报文了,就只会有一个报文,且是一个得不到回复的广播报文。
注:当路由器的另一个接口下的局域网中有目标主机,且这个目标主机与路由器的另一个接口是同一段的直连,这个时候广播就可以通过路由器了,路由器在这个时候是不会隔离广播的。
(二):在不同网段下测验
1:缓存表式验证
看到了主机2的MAC地址
从上图中,主机1与主机2在没有通信之前是主机1的ARP缓存表中是没有任何MAC地址的,而在通信之后,再看ARP缓存表的时候,看到了MAC地址,与主句2的MAC地址一样。这就说明主机2对主机1发来的数据帧进行了回复,且主机1收到回复报文,并且将它(主机2)的MAC地址记存在自己的ARP缓存表中了。
由ARP缓存表分析我们可以得出“不在同一网段的主机想要通信必须经过网关”
2:抓取报文分析
因为通信的设备是不同网段的,因此在主机接口处抓包是抓不到的,只能在路由器下的接口抓取报文的。
在路由器g0/0/0接口下抓取报文
抓取到了两个报文,一个广播报文,一个单播单播报文。
先进行广播分析
上图中可以看到广播是一个请求报文,无论是2层中的MAC地址还是三层中的MAC地址都是全f,说明了主机1与主机2的通信是第一次,且主机1是不知道主机2的MAC地址的,因此就用广播的形式来寻找目标主机2.
在三层的信息中我们看到了目标ip地址是192.168.10.1,而不是像---“同一网段下测验”---中的那样,目标ip地址中显现目标主机2的ip地址,这是为什么呢?
‘
因为这是不同网段下的通信,路由器下的接口是主机设备的网关。一个ARP报文只能在同一个网段下发送,由于路由器将主机1与主机2的网段隔离,因此这时候主机1发送的广播请求报文的目标地址是路由器下接口的ip,也就是ARP报文发送者的网关。
注:
(1):先是主机1到路由器下的g0/0/0接口的是一个目标ip地址是192.168.10.1的ARP请求广播,
(2):然后数据帧有g0/0/0接口转到g0/0/2接口,APR请求报文是不能网络中通过的,但能在以太网中通过,。主机会主动请求网关的mac地址,由网关把数据中转出去。当路由器把数据转给对方的过程中会把mac地址替换掉。数据到g0/0/0时会把mac脱掉,然后从g0/0/2出口出来数据又重新封装了mac,这个时候数据帧上写的是g0/0/2的MAC地址,也就是
g0/0/2的MAC地址成为数据帧的源MAC地址了。
(3):最后是从g0/0/2接口道主机2的一条报文,这时的数据帧上的源MAC地址是192.168.20.1,目标ip地址是192.168.20.30了
-----------------------------------------------------------------------------------------------------------------------------
ARP报文在g0/0/2到目标主句2时的广播报文是由g0/0/2接口的网关发送的,所以我们再目标主机接口处抓取报文的时候,寻找的不在是ARP报文了,而是icmp协议的报文。
主机1与目标主机2通信
查看g0/0/2接口的MAC地址
上图中我们已经看到了目标主机2的MAC地址已经记存在ARP缓存表中了,因此我们可以得出主机1与目标主机2得到成功通信。
在图上我们看到了不仅仅是g0/0/2接口的MAC地址,而且还有主机1,主机2和路由器上的各个网关的MAC的地址,但是我们却没有发现主机3的MAC地址,这是为什么呢?
因为主机1与主机2的通信,主机2进行了数据帧的回包,所以路由器上记存了主机1和主机2的MAC地址。网关10.1 20.1 30.1 都在路由器上,所以路由器的ARP缓存表中本身就有它们的MAC地址。那么就是说想要主机3的网关,就要进行主机与主机3的通信,让路由器的缓存表记存主句3的MAC地址。
实验验证
主机1与主机3通信
这个时候我们看到路由器的缓存表中已经有主机3的MAC地址。实验验证正确。
让主机1与目标主机2通信,抓取报文
上图,我们抓取到了5条请求报文和5条回复报文。
查看请求报文
在数据链路层上我们看到了发送者的网关是g0/0/2的MAC地址和目标主机3的MAC地址。
所以我们很容易的就明白这个报文是在那一段上的。
但是网络层中看到的发送者和数据链路层中的发送者为什么不一样?
因为在数据链路层中显示的是现在报文的真实发送者和目标主机,但是网络层中显示的是数据链路层的报文是由网络层的地址延生过来的,实际的发送者是192.168.10.10目标地址是192.168.20.20。
分析回复报文
由抓取报文分析我们可以得出“不在同一网段的主机想要通信必须经过网关”
通过上面的ARP缓存表验证和报文分析验证都得到了同一个结论“不在同一网段的主机想要通信必须经过网关”。
四:ARP***与欺骗
1、ARP***的原理
一:***主机制造假的arp应答,并发送给局域网中除被***的主机之外的所有主机,arp应答中包含被***主机的ip地址和虚假的mac地址。
实验拓扑
过程:
1:主机2想要上internet,就要经过交换机和路由器
2:***主机1对路由网关不断的发送虚假ARP应答,路由器会不断更新自己的ARP缓存表。
3:这个时候网关想要对被***主机2通信,但是缓存表中已没有被***主机的MAC地址,只有虚假的MAC地址,而路由器又认为这是主机2的MAC地址,因此就发送数据给虚假MAC地址
4:***主机截获流量,查看它的机密文件
二:***主机制造的arp应答,并发送给被***主机,arp应答中包含除被***主机之外的所有主机的ip地址和虚假的mac地址
过程
1:主机发送虚假ARP给被***主机,告诉它我是网关
2:被***主机认为这是网关的MAC地址,就会回复它
3:***主机就会很容易的得到被***主机的秘密
看图片中案例。
2、ARP欺骗的原理
一般情况下,ARP欺骗并不是使网络无法正常通信,而是通过冒充网关或其他主机使到达网关或主机的流量通过***主机进行转发。通过转发流量可以对流量进行控制和查看,从而控制流量或得到机密信息。
ARP欺骗发送ARP应答给局域网中其他主机,其中包含网关的ip地址和进行arp欺骗、额主机mac地址;并且也发送arp应答给网关,其中包含局域网中所有主机的ip地址和进行arp欺骗的主机mac地址(有的软件不发送arp应答欺骗网关)。当局域网中主机和网关收到arp应答更新arp表后,主机和网关之间的流量就需要通过***主机进行转发以、是ARP欺骗网关和ARP欺骗主机
实验结束