一、背景
在网络通讯过程中,主机到主机通信的数据包需要从下至下进行封装,封装完整后再向外发出。在局域网通信中,不仅需要封装源目IP,还需要封装源目MAC,而上层应用程序更多关心IP地址而不关心MAC地址,这时就需要通过ARP协议来获取MAC地址完成数据的封装。
二、定义及功能
ARP是英文‘Address Resolution Protocol’的缩写,叫做地址解析协议,用于实现IP地址到MAC地址的映射(通过IP找到对应的MAC地址),实现数据封装过程,属于网络层协议。
ARP协议被称为最不安全的协议,如网络扫描、中间人拦截、内网渗透、流量欺骗等,基本都和ARP脱不了关系。
三、原理
通过广播请求,单播回应的方式得到目标IP对应的MAC地址,将映射关系记录到MAC映射表中,广播请求的MAC地址为‘ff:ff:ff:ff:ff:ff’
arp -a #查看电脑的ARP缓存表
arp -d #删除(清除)ARP表项
广播数据包不能跨网段;(arp request无法发送到远端设备)
多网段通信中,ip地址不变mac地址变
同网段通信中,IP和MAC地址不变,跟谁通信用谁的MAC
四、字段解读
- Hardware Type:硬件类型,标识链路层协议
- Protocol Type:协议类型,标识网络层协议
- Hardware size:硬件地址大小,标识MAC地址长度,一般为6个字节(48bit)
- Protocol size:协议地址大小,标识IP地址长度,一般为4个字节(32bit)
- Opcode:操作代码,标识ARP数据包类型,1表示请求,2表示回应
- Sender MAC address:发送者MAC
- Sender IP address:发送者IP
- Target MAC address:目标MAC
- Target IP address:目标IP
五、ARP攻击原理
1.局域网中的电脑是如何通讯的
1.1. 当局域网中PC1需要与PC2通信时,PC1需要通过ARP请求包询问PC2的MAC地址(谁是PC2请把MAC地址告诉我一下),通过广播请求的方式进行询问(如果是交换机收到广播/组播/未知帧都会往其他接口泛洪)。
1.2. PC2收到请求包时进行单播回应(我是PC2我的MAC地址是XXX),其他电脑如PC3,PC4等收到请求包后知道不是询问自己,就直接丢弃掉不予回应。
1.3. PC1和PC2根据ARP的请求回应,将各自的ARP映射信息(IP-MAC)存储在本地的ARP缓存表中。
1.4. 交换机根据学习机制,记录MAC对应的接口信息(MAC-PORT),存储在CAM缓存表中(MAC地址表),交换机在收到数据包进行解封装时,就是根据目标MAC进行转发到对应的接口。
● 主机通讯需要查找ARP表(IP - MAC),而交换机通信需要查找CAM表(PORT - MAC)
● 交换机基于源MAC地址学习,基于目标MAC地址转发
● 同一局域网内,攻击者可根据主机的ARP广播请求来监听其IP和MAC信息,这里指被动监听
2. 如何发起Arp攻击
正常情况下若收到的ARP请求不是自己的,则直接丢弃,但如果是攻击者在监听之后发起了ARP回应,回应内容为:我就是IPxxx,我的MAC地址是xxx,发送了一个错误的ARP映射,就是通过发送这种错误映射的回应包来实现ARP攻击。