首先先简述一下数据传输必须要有目标以及我自己的Mac地址和IP地址,
由于需要保护主机以及节省网络资源,IP地址是方便路由用的地址下一跳的地址随时在变化,Mac地址是为了精准的找到目标。就像是寄快递你,从杭州寄到上海的快递,ip就是你可以根据拥堵路段随时换一个路线,Mac确定路线后帮你定位到目标在哪,也就是说ip你知道了往那个方向走但是具体到哪里还是需要有Mac地址确定。
其次,ARP 协议就是一个确定目标Mac地址的协议,是网络层的协议,但是工作在数据链路层。
一、工作原理
1、介绍
- ARP(地址解析协议),将一个已知的IP地址解析为MAC地址
- 同网段通信,解析的是目的主机的MAC地址
- 不同网段通信,解析的是自己网关的MAC地址
2、原理
-
源主机发送ARP广播报文,目的主机收到广播报文后,拆开ARP报文中的内容记录发送方主机的IP地址和MAC地址记录到自身的ARP缓存表中,进行ARP单播回应
#Windows操作系统对arp缓存表的命令
arp -a #查看本机的ARP缓存表,缓存表记录的是本网段的IP和MAC对应关系
arp -d #清空ARP缓存表
#Linux操作系统
arp -n #以数字形式显示IP地址
arp -d #需要指定删除的记录
-
路由器会阻挡ARP报文(路由器是不会去转发ARP报文,因为路由器是根据网络层的目的IP地址来进行转发的)
3、ARP报文内容
-
使用win10-1去ping win10-2,ping使用的是icmp协议通信
-
由于10-1不知道10-2的MAC地址,所以在icmp通信之前会首先发送ARP广播请求去请求10-2的MAC地址
一般情况下,网络中的第一个报文都是ARP报文
-
Hardware type: Ethernet (1):物理类型,目前计算机网络物理网卡都是以太网卡
-
Protocol type: IPv4 (0x0800):协议类型,目前使用的网络都是IPv4网络
-
Hardware size: 6:物理长度,一个以太网MAC地址占48位,6字节
-
Protocol size: 4:协议长度,一个IPv4地址占32位,4字节
-
Opcode: request (1):操作代码,在arp报文中只有两种报文(request为1,replay为2)
-
Sender MAC address: :发送方的MAC地址
-
Sender IP address:发送方的IP地址
-
Target MAC address: 00:00:00:00:00:00:接收方的MAC地址,因为是一个广播请求的ARP报文,源主机不知道目的MAC地址,所以这里使用全0做填充
-
Target IP address: 接收方的MAC地址,源主机请求的目标主机IP
二、ARP攻击和欺骗
1、ARP攻击
- 攻击主机向靶机发送ARP应答报文,携带的是虚假的MAC地址(不存在),从而靶机去访问网络时会将数据交到虚假的MAC地址上,造成靶机无法访问网络
2、ARP欺骗
- 攻击主机向靶机发送ARP应答报文,携带的是攻击主机真实的MAC地址,从而靶机去访问网络时会将数据交到攻击主机上,如果在攻击主机上开启了转发,靶机上网正常,攻击主机就可以截获靶机的流量(达到中间人攻击效果)
不管是ARP攻击还是ARP欺骗都是基于ARP应答报文来实现的
3、ARP攻击和欺骗实验场景
-
一台kali:攻击主机
-
一台win10:靶机
-
在kali上安装dsniff工具,向靶机持续发送ARP应答报文,达到欺骗效果
4、ARP攻击和欺骗研判
-
ARP攻击研判
-
ARP攻击会造成目标主机无法访问网络
-
排查主机网络问题
-
检查主机的网络物理连接
-
检查主机是否具有正确的IP地址
-
使用主机去访问网关,测试连通性
-
如果网关无法访问,访问本网段其他主机
-
如果测试与本网段其他主机可以互通,但是无法和网关互通,检查arp缓存表,查看是否有一个MAC对应多个IP地址,去网关上查看网关是否配置了多个IP地址
-
如果网关没有配置多个IP地址,在主机上持续访问网关,同时清空arp缓存表,查看通信情况
-
-
-
ARP欺骗研判
-
ARP欺骗不会造成目标主机断网
-
使用路由跟踪查看第一跳设备是否是网关的IP地址
-
在主机上清空arp缓存表,再多次查看arp缓存表,发现网关的IP对应的MAC地址发生变化
-
三、防御
1、ARP静态绑定
-
arp缓存表默认是动态学习的,通过静态绑定后,攻击主机再发送虚假的ARP应答报文,从而靶机就不再相信
。