协议介绍
ARP(Address Resolution Protocol,地址解析协议)是一种用于在IP网络中解析物理地址的通信协议,它的作用是将IP地址转换为MAC地址以便在局域网中传输数据包,ARP协议通常运行在网络层和数据链路层之间,它通过广播查询请求和响应来实现IP地址到MAC地址的映射。当一个主机需要发送数据包时,它会先检查ARP缓存中是否已经存在目标IP地址对应的MAC地址,如果没有则发送广播查询请求,等待目标主机响应,然后将响应中的MAC地址存储到ARP缓存中以便下次使用,ARP协议是网络通信中必不可少的一部分,它可以帮助网络管理员快速解决网络故障和安全问题
协议类型
ARP协议主要有以下两种类型:
-
ARP请求:是一种广播消息,用于向网络中的所有主机询问一个特定IP地址对应的MAC地址
-
ARP响应:是一种针对ARP请求的单播消息,用于回复请求的主机该IP地址对应的MAC地址
在实际应用中还存在一些ARP相关的协议,比如:RARP(逆地址解析协议)和InARP(地址解析协议),它们主要用于在特定场景下解析物理地址,其中RARP协议是一种将MAC地址转换为IP地址的协议,主要用于在没有硬盘和操作系统的计算机中进行网络引导,而InARP协议则是一种在ATM网络中解析IP地址和ATM地址之间映射关系的协议
报文格式
ARP请求包
下图中的第一个数据包即为ARP请求数据包,从中我们可以看到该数据包的目的地址为Broadcast(ff:ff:ff:ff:ff:ff),所有发送到这个地址的数据包都会被广播到当前网段中的所有设备,这个数据包中以太网头的源地址就是我们的MAC地址
ARP头中主要包含以下内容:
-
Hardware type:占2字节,硬件类型,标识链路层协议
-
Protocol type:占2字节,协议类型,标识网络层协议
-
Hardware size :占1字节,硬件地址大小,标识MAC地址长度,这里是6个字节(48bit)
-
Protocol size:占1字节,协议地址大小,标识IP地址长度,这里是4个字节(32bit)
-
Opcode:占2字节,操作代码,标识ARP数据包类型,1表示请求,2表示回应
-
Sender MAC address :占6字节,发送者MAC
-
Sender IP address :占4字节,发送者IP
-
Target MAC address :占6字节,目标MAC,此处全0表示在请求
-
Target IP address:占4字节,目标IP
ARP响应包
下图中的第二个数据包即为ARP响应数据包,从中我们可以看到该数据包的目的地址为192.168.0.114(是一个单播地址),该响应数据包的主要作用是告诉192.168.0.1主机192.168.0.114主机对应的MAC地址
ARP响应报文和ARP请求报文类似,不同的是此时以太网头部帧头部分的目的MAC地址为发送ARP协议地址解析请求的MAC地址,而源MAC地址为被解析的主机MAC地址,同时操作类型为2表示是应答数据报文
-
Hardware type:占2字节,硬件类型,标识链路层协议
-
Protocol type:占2字节,协议类型,标识网络层协
-
Hardware size:占1字节,硬件地址大小,标识MAC地址长度,这里是6个字节(48bit)
-
Protocol size:占1字节,协议地址大小,标识IP地址长度,这里是4个字节(32bit)
-
Opcode:占2字节,操作代码,标识ARP数据包类型,1表示请求,2表示回应
-
Sender MAC address:占6字节,发送者MAC
-
Sender IP address:占4字节,发送者IP
-
Target MAC address:占6字节,目标MAC,此处全0表示在请求
-
Target IP address:占4字节,目标IP
ARP欺骗
原理介绍
ARP协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存,由此攻击者就可以向某一主机发送伪ARP应答报文使其发送的信息无法到达预期的主机或到达错误的主机,从而构成了一个ARP欺骗
简易示例
Step 1:在攻击主机上关闭端口转发
#终止
echo 0 > /proc/sys/net/ipv4/ip_forward
#允许
echo 1 > /proc/sys/net/ipv4/ip_forward
Step 2:在普通主机上查看当前ARP解析列表
192.168.204.2 00-50-56-fc-28-83 动态
Step 3:查看本地网卡网关地址信息
tep 4:在普通主机上向百度进行ping试
Step 5:之后在攻击主机上通过aprspoof进行断网攻击
Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
# 参数解释:
-i 指定使用的接口
-c 指定当还原arp配置时t使用的MAC地址,默认为使用原来的MAC(即当停止arpspoof命令后,默认取消毒化)
-t 指定要毒化的主机,如果不指定的话默认为局域网下所有主机
-r 双向毒化(host和target),从而双向扑捉数据(仅当同时指定 -t的时候才有效)
#执行示例:
arpspoof -i eth0 -t 192.168.204.132 192.168.204.2
同时使用wireshark进行抓包
Step 6:此时再次查看ARP地址信息,如下所示:
Step 7:wireshark抓包情况如下,可以看到有不断的向192.168.204.132地址发送的响应数据包,其内容主要是对192.168.204.2的MAC地址进行欺骗响应
文末小结
在本文中我们使用WireShark工具对ARP协议进行了分析,我们了解了ARP协议的作用以及其两种主要类型:ARP请求和ARP响应。通过分析抓包数据,我们可以清楚地看到ARP请求和响应的过程以及如何利用ARP协议来解析物理地址,掌握这些知识可以帮助他们更好地维护网络安全
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34372.html