ARP协议的概念
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
ARP数据包
请求包(广播):本机IP地址、mac地址+目标主机IP地址
应答包(单播):本机IP地址、mac地址+来源主机IP地址、mac地址
主机A和主机B通信过程:
(1)主机A先检查自己的缓存表中有没有主机B的IP地址和mac地址的对应关系,有就直接进行通信;如果没有,就在局域网广播一个arp请求包,包括主机A的IP地址、mac地址和主机B的IP地址。
(2)局域网内所有机器都会收到这个请求包,收到后与自己的ip地址对比一下,如果是自己的,就发送一个响应包,包括主机A的IP地址、mac地址和主机B的IP地址、mac地址;如果不是自己的,就丢掉。
注意:a.两台主机的IP地址不在同一网段,需要通过网关来转发
b.涉及两个arp缓存表,一个是主机中存放的,另一个是网关处路由器设备自己的arp缓存表
ARP欺骗
利用ARP协议的缺陷进行的一种非法攻击。
ARP欺骗原理
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了。
- 攻击主机B向网关C发送一个应答包,包括主机A的IP地址、主机B的mac地址。同时,向主机A发送一个应答包,包括网关C的IP地址,主机B的mac地址。
- 这个时候,网关C就会将缓存表里主机A的mac地址换成主机B的mac地址,而主机a就会将缓存表里网关C的mac地址换成主机B的mac地址。
- 所以,网关C发送给主机A的消息全被主机B接收,主机A发送给网关C的消息也全被主机B接收,主机B就成为主机A和网关C通信的“中间人”。
ARP欺骗攻击的检测与防御
检测:
1、网络频繁掉线
2、网速突然变慢
3、使用arp -a命令查看的网关mac地址与真实的网关mac地址不同
4、使用嗅探软件发现局域网内存在大量arp应答包
防御:
1、绑定mac地址
2、使用静态arp缓存表
3、使用arp服务器,通过服务器来查找arp转换表来响应其他机器的广播
4、使用arp欺骗防护软件
四、ARP欺骗的危害
1、使同一网段内其他用户无法上网
2、可以嗅探到交换式局域网中的所有数据包
3、对信息进行篡改
4、可以控制局域网内任何主机
拓扑图
- HACKER 黑客
- server服务器
- ISP运营商
-
基本配置
-
IP地址的配置 HACKER(config)#int e0/0 HACKER(config-if)#ip add 12.1.1.2 255.255.255.0 HACKER(config-if)#no sh ISP(config)#int e0/0 ISP(config-if)#ip add 12.1.1.1 255.255.255.0 ISP(config-if)#no sh ISP(config-if)#int e0/1 ISP(config-if)#ip add 13.1.1.1 255.255.255.0 ISP(config-if)#no sh ISP(config-if)#int e0/2 ISP(config-if)#ip add 14.1.1.1 255.255.255.0 ISP(config-if)#no sh PC(config)#int e0/0 PC(config-if)#ip add 14.1.1.4 255.255.255.0 PC(config-if)#no sh 静态路由的配置 HACKER(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.1 SERVER(config)#ip route 0.0.0.0 0.0.0.0 13.1.1.1 PC(config)#ip route 0.0.0.0 0.0.0.0 14.1.1.1
-
开启 ip ICMP功能
SERVER#debug ip icmp PC#debug ip icmp
检验是否能接收数据包
数据包
创建虚假网关
HACKER(config)#int lo0
HACKER(config-if)#ip add 13.1.1.3 255.255.255.0
ARP攻击
这个时候会PC和server会接收到大量数据包,占用CPU带宽
这个就是数据包欺骗
防范ARP攻击
启用和配置反向路径验证的功能
ISP(config-if)#ip verify unicast reverse-path