arp协议与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地址。

数据包结构

1657258133_62c7c09581d1ba75c5667

ARP协议包

实验环境:

PC1:物理机win10(IP:192.168.42.1)【在此启动虚拟机】

PC2:虚拟机kali(IP:192.168.42.128)

Wireshark(数据包流量捕获器)

根据我们使用的网卡选择对应的捕获选项,因为我们的Kali网络模式选择的是Nat模式,所以我们选择Vmnet8。

1657258161_62c7c0b1821c5d7dd32ac

在物理机上执行Ping命令,并输出如下信息

1657258180_62c7c0c436cd811761162

在Wireshark中筛选出ARP协议,查看抓包记录

1657258201_62c7c0d993eaa83385afd

查看捕获的ARP数据包,第一个为ARP请求包

1657258220_62c7c0ec52433c48d9e80

其中第一帧有着数据包的详细信息,其中包括包的发送时间、包的大小、包的类型

1657258236_62c7c0fc308ea39b0cdaf

第二帧表示以太网帧头部信息,其中源MAC地址为00:50:56:c0:00:08(物理机),目标MAC地址为ff:ff:ff:ff:ff:ff(广播地址)

1657258257_62c7c1111f5b62c7cc036

第三帧的内容为ARP协议内容,Request表示该包是一个请求包。请求包中的详细内容,如下所示

1657258276_62c7c1240a8a324d48f7b

我们用同样的方式去分析ARP的响应包

1657258293_62c7c135e91f669c17014

其中,以下内容表示第一帧数据包的详细信息,其中包的大小为60字节

1657258312_62c7c14806fbc7d13ba2e

第二帧包含帧的头部信息,源MAC地址(00:0c:29:01:7d:67),目标MAC地址(00:50:56:c0:00:08),其中源MAC地址是Kali,目标MAC地址是物理机

1657258334_62c7c15ec079b958bc4de

第三帧,Reply表示该包是一个响应包

1657258349_62c7c16da1dfd50956d8b

arp协议与二层主机发现

二层主机发现

利用TCP/IP模型中链路层中的ARP协议,进行主机发现。好处就是ARP协议在局域网当中使用,局域网当中的数据包是不经过路由器,所以它的速度是比较快,而且数据包不会被过滤,因此能够保证我们的数据包能够到达我们的目标,而且接收到目标的响应,从而确认目标是否存在。坏处就是只能在一个子网中,进行二层发现。

Kali linux 自带工具Netdiscover可以针对特定子网进行多主机扫描。

netdiscover -h    //查看帮助信息
1657258371_62c7c18304c6cef81bcab

-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
1657258393_62c7c199e33462b814443

这样子就证明了这些子网的IP地址是存活状态

ARP地址欺骗

1657258410_62c7c1aab1db1ccfab054

正常情况下:连接出口路由器的靶机,访问外网时,会将数据发送给出口路由器,再由出口路由器将数据发送到外网。

1657258427_62c7c1bb6a57cd4794241

不正常的情况下:攻击者欺骗靶机,告诉他出口路由器是我的MAC地址,靶机相信了他的话,把访问外网的数据包错误的发送给了攻击者的MAC地址,导致靶机收不到外网返回的数据包,导致断网,这就是ARP欺骗。

ARP地址欺骗过程

首先我们准备两台虚拟机,一台是Kali,用来做攻击机,另一台是Winserver2003,做为靶机,两台虚拟机网络模式,都采用Nat模式,处于同一个局域网下。

第一步,Netdiscover发现同一个网段中的主机,寻找攻击目标

netdiscover -r 192.168.42.1/24
1657258445_62c7c1cdca353b1202e46

192.168.42.1是本机的IP地址,192.168.42.2是虚拟机的网关、192.168.42.236是靶机的IP地址

第二步,确认攻击目标处于联网状态

1657258461_62c7c1dda558dc922e9d1

然后在攻击机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地址
1657258480_62c7c1f02aadba285df82

看到靶机无法上网

1657258494_62c7c1fe72d1363e1c72d

然后再到攻击机Kali上停止攻击

ctrl+z
1657258511_62c7c20f3435bbcc3c670

等待一段时间后,发现靶机恢复正常

1657258525_62c7c21d6c6434dcc77e5

ARP地址欺骗防护

上网的设备统一采用MAC地址静态绑定,同时上安全设备进行保护。

本文作者:山兔1234, 转载请注明来自FreeBuf.COM

主题测试文章,只做测试使用。发布者:1869,转转请注明出处:https://community.anqiangkj.com/archives/20218

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月19日 上午10:48
下一篇 2022年7月19日 上午10:52

相关推荐