ARP协议
ARP协议
(Address Resolution Protocol 地址解析协议):是根据IP地址获取MAC地址(物理地址)的一个TCP/IP协议。 主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回信息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议时建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。 由此攻击者就可以向某一主机发送伪ARP应答报文,试其发送的信息无法到达预期主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可以用于查询本机ARP缓存IP地址和MAC地址的对应关系、添加或删除静态对应关系。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
主机通过ARP协议获取MAC地址 过程
在主机B中有一个ARP高速缓存表,其中记录了IP地址和MAC地址的对应关系,以及类型(动态or静态)。
- 动态:主机自动获取到的,生命周期默认为两分钟。生命周期结束时,该记录会自动删除。因为IP地址和MAC地址对应关系并不是永久性的。
- 静态:人为手工配置的,不同操作系统下的生命周期不同。
- 主机B向主机C发送数据包。主机B先在主机的ARP高速缓存表中查找是否有主机IP地址对应的MAC地址的条目。但当前主机B只知道主机C的IP地址不知道MAC地址。主机B在数据链路层封装MAC帧时,无法填写目标MAC地址!所以现在无法发送数据包给到主机C。
- 主机B发送ARP请求报文(广播)来获取主机C的MAC地址。请求报文中包含了主机B的IP地址、MAC地址和目标主机的IP地址。提供自己的IP地址和MAC地址是为了让主机C能够进行IP-MAC地址对应存储,并且能够返回给自己主机C的MAC地址。ARP请求报文是有具体格式的。ARP请求报文被封装在MAC帧中发送,目的地址位广播地址。主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧。
- 总线上的主机网卡接收到该广播帧后,将广播帧交付上层处理,上层的ARP进程解析ARP请求报文,如果发现IP地址不是自己则不会发送任何数据包回应,目标主机接收到才会进行响应。
- 主机C响应主机B。主机C先将主机B的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给主机B发送ARP响应,以告知自己的MAC地址。ARP响应报文内容为:主机C的IP地址和MAC地址。ARP响应报文被封装在MAC帧中发送,目的地址为主机B的MAC地址。主机C给主机B发送封装有ARP响应报文的单播帧。总线上的其他主机都能收到单播帧。
- 总线上主机的网卡接收到单播帧。非目标主机发现其目标的MAC地址与自己的MAC地址不匹配,直接丢弃该帧。主机B的网卡接收到该单播帧后,发现目标MAC地址和自己的MAC地址一样,把帧交付给上层处理,上层的ARP进程解析ARP报文,将其所包含主机C的IP地址与MAC地址记录到自己的ARP高速缓存表中。
- 主机B现在可以给主机C发送之前想发送的数据包了。
ARP报文类型:请求ARP、响应ARP、检查IP地址冲突的无故ARP(又称免费ARP) ARP协议没有安全验证机制!!!存在ARP欺骗或攻击等问题。
ARP攻击
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能够更改目标主机缓存中的IP-MAC条目,造成网络中断或中间人攻击。 ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”搜段截获所在网络内其他计算机的通信信息,并因此造成网内其他计算机的通信故障。