数据来源
一、广播与广播域概述
1、广播域广播域
广播:将广播地址做为目标地址的数据帧
广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,这样通信效率更高)
下图每个圈都是一个广播域,说明了交换机隔离不了广播域,路由器可以隔离广播域(物理隔离)
2、MAC地址广播
广播地址为:FF-FF-FF-FF-FF-FF
3、IP地址广播
255.255.255.255
广播IP地址为IP地址网段的广播地址,如:192.168.1.255 /24
二、ARP协议概述
1、什么是ARP协议
Address Resolution Protocol,地址解析协议,是一个内网协议,工作在内网,跑不出当前局域网,会被路由器隔离
作用:将一个已知的IP地址解析成MAC地址
原理:1)发送ARP广播请求
ARP报文内容:我的IP是:10.1.1.1 我的MAC地址是:AA
谁是10.1.1.3 ? 你的MAC地址:?
2)接收ARP单播应答
我是10.1.1.3 我的MAC地址:BB
2、ARP把IP解析MAC地址的过程如下(两个步骤一问一答):
1)PC1发送数据给PC2,查看缓存没有PC2的MAC地址
2)PC1发送ARP请求消息(广播)
3)所有主机收到ARP请求消息
- PC2回复APR应答(单播)
- 其他主机丢弃
4)PC1将PC2的MAC地址保存到缓存中(关机就会消失),发送数据
文字详细解析:
步骤一:ARP广播请求,内网广播(通过目标ip询问目标MAC地址)
1)如:A与B两台PC通信,A的ip是10.1.1.1,B的ip是10.1.1.3,A向B发送一条消息“老铁,今天拉屎没呀”,然后A这台PC就要把消息“老铁,今天拉屎没呀”封装成数据帧(IT的最小传输数据的单位就是帧,也只有封装成数据帧消息才能发送出去)。
帧结构图:
MAC子层(帧头)构成:目标MAC地址(6字节),源MAC地址(6字节),类型(2字节),总的大小=6+6+2 = 14 字节
FCS(帧尾):提供了一种错误检测机制,用来验证帧在传输过程中的完整性(4个字节)
数据帧的封装过程:
- 5层应用层的软件输入了数据:“老铁,今天拉屎没呀”
- 4层传输层的防火墙封装TCP/UDP头
- 3层网络层的路由器封装IP包头
- 2层数据链路层的网卡封装帧头和帧尾
2)到这2层封装帧头就会卡住了数据发不出去,因为帧头包括了源MAC地址和目标MAC地址,但是现在A不知道B的MAC地址(目标MAC地址),这时RP协议就站出来了,说这个问题我能解决,然后就会回到网络层(3层)的ARP协议上交给ARP协议处理。
ARP协议处理过程:ARP协议会生成一个独立的报文(全称:ARP请求解析报文,简称:ARP请求报文)。ARP请求报文的内容就两句话:1. 我是的IP的10.1.1.1,MAC地址是某某某(表名自己身份)2. 谁是10.1.1.3(目标ip),你的MAC地址是__?___(让别人填空)
3)ARP协议生成这两句话之后(请求报文)就会发送给2层数据链路层的网卡(A的网卡),网卡收到请求报文之后说你这是请求报文是吧,我要让所有人听到你的心声!
这时A的网卡就会给请求报文前面加帧头和帧尾,帧头的源MAC地址就写自己的,目标MAC地址就写FF-FF-FF-FF-FF-FF(12个F),这时ARP请求报文就鸟枪换全地图炮变成了ARP请求广播报文(帧结构)
4)然后网卡就会把这个帧(ARP请求广播报文)传给交换机,交换机就会读取帧头的目标MAC地址,发现目标MAC地址是12个F的(MAC广播地址),就会把帧向所有的端口(和交换机连接的接口)广播出去,所有端口的设备都能收到这个帧,除了目标ip地址与本机相同的才会做出响应,其他的设备都会丢弃这个帧(黑客除外)。
步骤二 :目标ARP单播应答(收到了询问,响应MAC地址)
5)其他设备(pc)收到数据帧的大概反应:帧传到数据链路层(2层)的网卡的时候首先查看帧头(MAC子层)的目标MAC地址,发现是12个F,然后再查看帧头类型字段发现不是0800(IP协议),而是0806(ARP协议),然后网卡就明白了这个帧是ARP请求广播报文,然后就解封装(把帧头和帧尾拿掉),送到网络层(3层)的ARP协议上,ARP协议就会读取帧的内容,发现是找IP10.1.1.3的,就会进行比较我这台设备的IP是10.1.1.3?
不是,干掉
是(那就是来到了B这台PC),ARP协议查看报文内容,发现这是A这台PC发送过来的报文,目的是询问我的MAC地址,然后B这台PC就把自己的MAC地址(如:CC)在请求报文上填上去,传给数据链路层(2层)的网卡,网卡又开始他的骚操作,封装数据加帧头和帧尾,组成数据帧。这里帧头的源MAC地址是B自己的MAC地址,目标MAC地址是A的(A的请求报文包含里自己的MAC和IP地址)
网卡处理完之后就把数据帧传给交换机,交换机查看帧头目标MAC地址是A这台PC的,就直接把数据转发过去,A收到了B的ARP单播应答之后就知道了目标MAC地址,然后就会把地址存储在ARP缓存内(在这之后向B发送请求,就不需要进行广播,而是读缓存),存储完成之后继续完成之前没发送出去的数据帧,数据帧就会给交换机,由交换机读取帧头的目标MAC地址把数据转发出去。
ARP把IP解析MAC地址的过程现实中都是自动完成的,了解即可
Windows 系统中的ARP命令
arp -a # 查看ARP缓存命令
arp -d # 清除ARP缓存命令(关机也会消失,开机就会自动学习)
arp -s # ARP绑定
让ARP开始工作便捷的方法就是直接使用命令:ping 目标地址
三、ARP攻击或欺骗
- 欺骗其他所有的计算机
- 欺骗被攻击计算机
原理:通过发送伪造虚假的ARP报文(广播或单播),来实现的攻击或欺骗。
攻击的报文内的MAC地址是假的,目的是为了中断通信/断网。
欺骗的报文内的MAC地址是攻击者自己的MAC地址,目的是为了监听、窃取、篡改、控制流量,但不中断通信
对于ARP广播发起请求这一方来说,ARP单播应答是谁后到就学习谁的,就是最后到达的才是最后能生效的,后到的ARP单播应答会不断更新掉前面到达的,所以就很容易被欺骗,我用软件随便编造一个目标MAC地址一直给他ARP单播应答,他就一直获取不到正确的地址,最后获取到的地址是我给他的,之后他的数据都会发给我的电脑,这就能实现数据监听。
攻击:
通过单播应答攻击:
上面说的ARP把IP解析MAC地址的过程都是双方处于同一网段的情况下 ,如果我要访问外网比如www.baidu.com呢 ?
1)PC还是会发起ARP广播发起请求,不过报文的内容有些变化:1. 我是的IP的10.1.1.1,MAC地址是某某某(表名自己身份)2. 谁是10.1.1.254(网关ip地址),你的MAC地址是__?___(让网关填空)
2)网关收到ARP的广播请求后,把自己的MAC地址(如:BB)填到报文内,然后把这个请求报文(帧)给到交换机,交换机根据帧头的目标MAC地址单播应答转发给PC,之后PC就会把之前要发送的数据帧发送给网关,也就是路由器,PC连接外网必须通过路由器。
3)如果这时有人使用ARP攻击,就是伪造虚假的ARP报文和虚假的MAC地址,给PC单播应答,这个虚假的帧内的目标MAC是ee,但真实网关是BB,这样以后pc的数据帧都到不了网关(路由器),都发给虚假的MAC地址ee了,这样PC就无法连接外网,就断网了(当然攻击者除外)。
通过广播报文攻击:
攻击方的PC发起ARP广播发起请求,报文的内容有些变化:1. 我是的IP的10.1.1.254(伪造的),MAC地址SSS(表名自己身份)2. 谁是10.1.1.10(目标ip地址),你的MAC地址是__?___
这个时候在10.1.1.0这个网段的所有PC都会收到这个请求报文,虽然这些PC可能都不是10.1.1.254,甚至10.1.1.254可能都不存在,ip虽然匹配不上,PC不会做出响应,但是这些PC很贪婪,还是会把这个请求报文中的IP和MAC地址记录在缓存中,以后这些PC访问网关时,他们这10.1.1.0的网段的网关刚好是10.1.1.254,那他们以后发送给网关的请求都有可能发送到我伪造的MAC地址(SSS)上
欺骗:
ARP欺骗演示:
- ARP欺骗主机(同一局域网成员 )
1)PC1发起ARP广播发起请求,报文的内容有些变化:1. 我是的IP的10.1.1.2,MAC地址CC(表名自己身份)2. 谁是10.1.1.3(目标ip地址),你的MAC地址是__?___
2)这里设:这个局域网中10.1.1.3这个IP就是李四用的电脑,但是这时张三站出来了,他把他的IP伪造成10.1.1.3,这一过程中李四的电脑可能也回应了,但是没有用,对于ARP广播发起请求这一方来说,ARP单播应答是谁后到就学习谁的,张三的电脑一直在伪造IP和MAC地址一直在单播应答。
3)最后PC1启用的MAC地址大概率都是张三MAC地址,PC1就会把数据都发到张三的电脑上,张三这时就可以查看这些信息过滤出有价值或直接篡改数据(原来PC1可能就发个问候语,张三就改成问候祖宗的),然后再把数据转发给数据真正的主人李四(这个过程中原来报文内的MAC地址CC,已经被改成张三的伪造的MAC,交换机转发只认MAC地址),李四会回复消息给PC1也会发送到张三的电脑上,张三又可以过滤有价值的信息,再转发给PC1,在这过程中他们都是可以正常上网的,如果没学过这方面的知识的人是很难发现他们之间的通信多出个中间人,如下图:
详细示意图
- ARP欺骗网关
甚至张三直接截取PC1获取李四的上网数据,监听他们上网都在干啥。
实现:
在PC1和李四寻找谁是网关的时候,张三又站出来了张三把自己的IP伪造成网关,网关的MAC是他自己,张三窃取完数据(包括他们的游戏数据还是在看视频),再转发给真正的网关。(每次PC重启ARP缓存都会清空,PC要上网就会查缓存,没找到进行ARP广播,张三的机会就来了),如下图:
总结:
看到这里会发现,ARP攻击和ARP欺骗原理都是一样的,都是通过发送虚假的ARP报文,但是报文内容不一样,
实战测试更新中。。。
四、ARP协议没有验证机制
只要收到ARP报文无论是真是假,都会学习,然后都会把报文中的MAC地址存储到ARP缓存内