概述
- Address Resolution Protocol地址解析协议,制定了由IP地址获取MAC地址的标准。
- RARP(Reverse Address Resolution Protocol) 反向地址解析协议(逆地址解析协议),制定了由MAC地址获取IP地址的标准。
- 相同网络下主机通信依靠MAC地址定位,不同网络下主机通信依靠IP地址定位;
- ARP协议工作在网络层;
- ARP数据包会被路由器拦截,ARP数据包不能跨网络传输;
命令
- 查看主机MAC表
arp /a - 清空主机MAC表信息
arp /d - 添加MAC条目(绑定静态MAC)
arp /s 目标IP 目标MAC
netsh interface ip add neighbors "网卡名称" 目标IP 目标MAC
工作原理
同网络下
- 192.168.102.176主机向192.168.102.145主机发送数据过程:
- 发送主机:检查自己的MAC表中是否存在目标IP(192.168.102.145)的MAC信息,如果不存在,发送
广播ARP请求(who has 192.168.102.145); - 交换机:检查源MAC是否存在于自己的MAC表中,如果不存在,则将该数据来源的物理接口与数据包的源MAC建立对应关系写入到自己的MAC表中,检查数据包目的MAC地址,发现为广播地址
FF-FF-FF-FF-FF-FF,则将该数据包从所有物理接口转发; - 其它主机:收到交换机转发的广播数据包后,检查自己的IP是否为目标IP,不是,则丢包;
- 接收主机:收到交换机转发的广播数据包后,检查自己的IP是否为目标IP,是,会
单播形式发送ARP响应数据包,该响应数据包会携带自己的MAC地址; - 交换机:收到ARP响应数据包后,检查源MAC地址是否存在于自己的MAC表中,如果不存在,则将数据包来源的物理接口与数据包的源MAC地址建立对应关系写入到自己的MAC表中,检查目标MAC地址是否存在于自己的MAC表中,如果存在,则将该数据包通过对应物理接口进行转发;
- 接收主机:将ARP响应数据包中IP地址与MAC地址对应结果写入到自己的MAC表中
不同网络下
- 192.168.102.176主机向22.33.44.55主机发送数据过程:
- 发送主机:检查目标IP与自己是否属于相同网络,如果不是,获取网关IP,检查自己的MAC表中是否存在网关IP(192.168.102.1)的MAC信息,如果不存在,发送
广播ARP请求(who has 192.168.102.1); - 交换机:检查源MAC是否存在于自己的MAC表中,如果不存在,则将该数据来源的物理接口与数据包的源MAC建立对应关系写入到自己的MAC表中,检查数据包目的MAC地址,发现为广播地址
FF-FF-FF-FF-FF-FF,则将该数据包从所有物理接口转发; - 其它主机:收到交换机转发的广播数据包后,检查自己的IP是否为目标IP,不是,则丢包;
- 网关:收到交换机转发的广播数据包后,检查自己的IP是否为目标IP,是,会
单播形式发送ARP响应数据包,该响应数据包会携带自己的MAC地址; - 交换机:收到ARP响应数据包后,检查源MAC地址是否存在于自己的MAC表中,如果不存在,则将数据包来源的物理接口与数据包的源MAC地址建立对应关系写入到自己的MAC表中,检查目标MAC地址是否存在于自己的MAC表中,如果存在,则将该数据包通过对应物理接口进行转发;
- 发送主机:将ARP响应数据包中网关IP地址与MAC地址对应结果写入到自己的MAC表中,将要发送到外网的数据源MAC设置为自己MAC地址,目标MAC设置为网关MAC,源IP设置为自己的,目标IP设置为目标主机(22.33.44.55)
数据包字段
Hardware type: Ethernet (1) 物理地址类型,1表示以太网(Ethernet)
Protocol type: IPv4 (0x0800) 逻辑地址类型(协议地址类型),0x0800表示IPv4
Hardware size: 6 物理地址大小,MAC地址占6字节
Protocol size: 4 逻辑地址大小,IPv4地址占4字节
Opcode: request (1) 操作类型码,1表示ARP请求,2表示ARP响应,3表示RARP请求,4表示RARP响应
Sender MAC address: 8c:16:45:ef:68:75 发送方物理地址(MAC)
Sender IP address: 192.168.102.176 发送方IP地址
Target MAC address: 00:00:00:00:00:00 目的物理地址(MAC)
Target IP address: 192.168.102.1 目的IP地址
ARP攻击与欺骗
攻击
- 攻击主机向靶机伪造ARP响应数据包,告诉靶机攻击主机为网关,靶机会将攻击主机的MAC地址以网关身份写入到自己的MAC表中,当靶机要与外网通信时,会将数据包发送给网关,由于网关IP对应的MAC地址为攻击主机的,故数据实际会发送给攻击主机,攻击主机收到数据可以进行靶机外网数据监听,但由于数据包未成功发送到外网,则靶机不会收到外网响应数据,会造成靶机无法访问互联网;
欺骗
- 在攻击基础上,攻击主机开启
数据转发功能,将收到的靶机数据转发给真实网关,真实网关将数据发送给互联网中目标主机,目标主机将响应数据发送给网关,靶机可以正常接收到互联网响应数据,则靶机可以正常访问互联网
ARP攻击与欺骗实验
环境
- 靶机:win10
- 攻击主机:kali
攻击
-
下载dsniff
apt-get install dsniff
-
使用命令发送ARP攻击数据(持续伪造ARP响应数据),停止攻击
ctrl+c
arpspoof -i 攻击主机网卡名称 -t 靶机IP 网关IP
arpspoof -i eth0 -t 192.168.126.141 192.168.126.2
欺骗
开启数据转发功能(/proc/sys/net/ipv4/ip_forward):0表示关闭,1表示开启
echo 1 > /proc/sys/net/ipv4/ip_forward
ARP攻击与欺骗研判
攻击
-
现象:不能访问互联网
-
排除网络本身问题:查看同网络下其它主机是否能正常访问(正常),查看当前主机网络配置是否正常:网卡是否正常工作(正常)、IP配置信息是否正常(正常)
-
排除网关问题:检查是否能够跟网关正常通信
-
ARP攻击可能异常现象:
-
查看网关IP对应MAC地址是否存在其它IP记录,如果存在,则可能遭受ARP攻击;
-
快速清空MAC表,触发网关ARP请求发送,并查询新的MAC表信息,如果前后网关的MAC不一致,则可能遭受ARP攻击;
欺骗
- 利用
tracert实现路由跟踪功能,查看追踪结果第一跳设备IP是否为网关IP,如果不是,则可能遭受了ARP欺骗;
ARP攻击与欺骗防御
- 第三方工具:360局域网防护
- 设置静态MAC地址