ARP协议
什么是MAC地址
MAC地址是固化在网卡上的网络标识,由Ieee802标准规定。
什么是广播
向同一个网段内的设备,发送数据包,广播IP地址是同网段最后一个IP地址。
认识ARP协议
ARP的全称是地址解析协议,我们通过ARP协议获取对方的MAC地址,PC机发送ARP协议包,通过交换机,到达目标IP地址的PC机,从而获取对方的MAC地址,但是ARP有一个限制,那就是必须在同一个网段内,也就是说交互地址信息的PC机是在一个局域网内。
ARP协议原理
ARP是请求包,只要是同一个网段的都可以收到。
ARP协议是TCP/IP模型网络层的协议,网络层是对传输层传下来的数据段进行封装,形成数据包,而对于数据包而言,它只关心IP地址,因为网络层是根据IP地址,确认这个数据包传给谁的。
而在网络的传输中,数据包在数据链路层被封装成以太网帧,而以太网帧是通过首部的MAC地址来寻找设备,所以,当我们向目标机器发送数据的时候,我们要先得到目标机器的MAC地址。
在数据链路层,以太网帧是根据前端的MAC地址,找寻到目标机器的网卡,从而向他交付数据包,目标机器在接收到数据包的时候,会判断数据包的MAC地址跟自己的MAC地址是不是一样的,一样的,就会向上传。
也就是说,当我们不知道目标机器的MAC地址的时候,我们是无法向它传递数据包的,这个时候,就用到了我们的ARP协议,也就是ARP请求,这个请求是一个广播包,它会询问同一个局域网内,目标机器IP地址,它的MAC地址是多少,当目标机器接收到这个广播包的时候,发现它的IP地址正是自己,这个时候,目标机器就会以单播的方式,返回一个数据包,这个数据包里,就有我们想要的目标机器的MAC地址。
ARP缓存
现在,我们知道了,当我们给一个PC机发送ARP请求的时候,它会通过广播的方式,询问目标机器的MAC地址,那如果,我们每次要向目标发送数据包的时候,都要ARP请求的话,就很麻烦了,这个时候,我们就想到了ARP缓存表,把之前获取到的IP地址和MAC地址对应起来,存储下来,当我们在下一次使用的时候,就可以直接调用ARP缓存表的数据,对目标IP地址进行访问。
通过对ARP缓存的使用,有效降低了网络拥塞,在一定程度上防止了ARP的大量广播,在一般情况下,ARP缓存不仅发送方会缓存MAC地址表,接收方也会,缓存下来的MAC地址,有一定的有效期,过了这段时间,缓存就无效了。
ARP协议拓展
根据ARP协议,还搞出了一个RARP协议,它的全称是逆地址解析协议,顾名思义,它的功能跟ARP协议是反过来的,它是通过MAC地址获得对方的IP地址,在这里,大家,会联想到DHCP协议,DHCP协议,就是用来自动分配IP地址的,它分配地址的原理,就是根据RARP协议,将MAC地址转成IP地址。
数据包结构
ARP协议包
实验环境:
PC1:物理机win10(IP:192.168.42.1)【在此启动虚拟机】
PC2:虚拟机kali(IP:192.168.42.128)
Wireshark(数据包流量捕获器)
根据我们使用的网卡选择对应的捕获选项,因为我们的Kali网络模式选择的是Nat模式,所以我们选择Vmnet8。
在物理机上执行Ping命令,并输出如下信息
在Wireshark中筛选出ARP协议,查看抓包记录
查看捕获的ARP数据包,第一个为ARP请求包
其中第一帧有着数据包的详细信息,其中包括包的发送时间、包的大小、包的类型
第二帧表示以太网帧头部信息,其中源MAC地址为00:50:56:c0:00:08(物理机),目标MAC地址为ff:ff:ff:ff:ff:ff(广播地址)
第三帧的内容为ARP协议内容,Request表示该包是一个请求包。请求包中的详细内容,如下所示
我们用同样的方式去分析ARP的响应包
其中,以下内容表示第一帧数据包的详细信息,其中包的大小为60字节
第二帧包含帧的头部信息,源MAC地址(00:0c:29:01:7d:67),目标MAC地址(00:50:56:c0:00:08),其中源MAC地址是Kali,目标MAC地址是物理机
第三帧,Reply表示该包是一个响应包
ARP协议与二层主机发现
二层主机发现
利用TCP/IP模型中链路层中的ARP协议,进行主机发现。好处就是ARP协议在局域网当中使用,局域网当中的数据包是不经过路由器,所以它的速度是比较快,而且数据包不会被过滤,因此能够保证我们的数据包能够到达我们的目标,而且接收到目标的响应,从而确认目标是否存在。坏处就是只能在一个子网中,进行二层发现。
Kali linux 自带工具Netdiscover可以针对特定子网进行多主机扫描。
netdiscover -h //查看帮助信息
-i指定你的网卡
-r扫描指定范围
-l加载一个文件,文件当中包含我们要扫描的范围
-p不发送任何的数据包,只做为嗅探,这样的一个过程,是不会被我们网络当中的设备发现,因为它只进行嗅探,将数据包发送到目标去,它就会确认当前主机是存活状态
-m扫描一个已知的MAC地址表或者是主机名
-f过滤,自定义过滤PCAP发送包的表达式
-s当我们发送arp请求时,我们每次休息几毫秒
-n表示一个节点,上一次IP的十进制来进行扫描
-c扫描的次数
-f快速扫描,来节约大量时间
-d忽略配置文件以及快速模式
-S在每一个请求过程中,开启休息时间
-p输出结果
-N不输出对应的头
-L一个输出模式,确定存活性扫描后,我们进行输出
我们选择一条命令试一下
netdiscover -r 192.168.42.1/24
这样子就证明了这些子网的IP地址是存活状态
ARP地址欺骗
正常情况下:连接出口路由器的靶机,访问外网时,会将数据发送给出口路由器,再由出口路由器将数据发送到外网。
不正常的情况下:攻击者欺骗靶机,告诉他出口路由器是我的MAC地址,靶机相信了他的话,把访问外网的数据包错误的发送给了攻击者的MAC地址,导致靶机收不到外网返回的数据包,导致断网,这就是ARP欺骗。
ARP地址欺骗过程
首先我们准备两台虚拟机,一台是Kali,用来做攻击机,另一台是Winserver2003,做为靶机,两台虚拟机网络模式,都采用Nat模式,处于同一个局域网下。
第一步,Netdiscover发现同一个网段中的主机,寻找攻击目标
netdiscover -r 192.168.42.1/24
192.168.42.1是本机的IP地址,192.168.42.2是虚拟机的网关、192.168.42.236是靶机的IP地址
第二步,确认攻击目标处于联网状态
然后在攻击机Kali上发起攻击
arpspoof -i eth0 -t 靶机Ip地址 靶机网关
arpspoof -i eth0 -t 192.168.42.236 192.168.42.2
//欺骗主机192.168.42.236,网关192.168.42.2的mac地址是kali虚拟机物理接口eth0的mac地址
看到靶机无法上网
然后再到攻击机Kali上停止攻击
ctrl+z
等待一段时间后,发现靶机恢复正常
ARP地址欺骗防护
上网的设备统一采用MAC地址静态绑定,同时上安全设备进行保护。
然后再到攻击机Kali上停止攻击
ctrl+z
[外链图片转存中…(img-TbIivika-1674869829051)]
等待一段时间后,发现靶机恢复正常
[外链图片转存中…(img-rLHSo3FH-1674869829051)]
ARP地址欺骗防护
上网的设备统一采用MAC地址静态绑定,同时上安全设备进行保护。
网络安全工程师企业级学习路线
这时候你当然需要一份系统性的学习路线
如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。
一些我收集的网络安全自学入门书籍
一些我白嫖到的不错的视频教程:
上述资料【扫下方二维码】就可以领取了,无偿分享