ARP(地址解析协议)简介及安全问题

禁止转载,欢迎交流,如有错误请务必指正。

背景

局域网通信除了需要IP地址还需要用到全球每个联网设备都唯一的MAC地址,过程简单来说大概是这样的:局域网中数据包传播的过程中,根据TCP/IP协议,应用层数据封装上传输层包头,IP包头后来到数据链路层加上帧头和帧尾,才能发送出去。这里的帧头包含三个信息,分别是目标MAC地址,源MAC地址,协议类型。其中目标MAC地址就要用到ARP协议来获得。

简介

ARP(Address Resolustion Protocol)地址解析协议作用是在局域网中根据IP地址获得MAC地址。每台联网设备中都会存有ARP表,它记录了已知的IP地址和MAC地址的对应关系。这个表通过不断地和其他人通信来完善,这样一来就不用每次通信都先询问对方的MAC地址。

工作流程

在未知对方MAC地址的情况下,首先设备会发送一个ARP请求报文,向局域网广播,请求目标主机回应,其中也包含了自己的IP地址和MAC地址。目标主机收到后确认是询问自己的MAC地址,便会发出单播应答告知对方。

如在192.168.0/24的网段中,192.168.0.1想与192.168.0.2通信时,192.168.0.1会像整个192.168.0网段所有设备发送ARP请求,每一台设备收到数据包后会检查这个报文中目标IP地址这一项和自己的IP地址是否一致,如果是便会回应对方,由于请求报文中已经包含了对方的MAC和IP,这个数据包就不再需要广播了。

安全相关问题

ARP协议并不是个安全的协议,ARP协议没有校验机制,也就是说收到的信息真伪并不能确定,错误的信息也会被记录,结果轻则无法上网,重则导致信息泄露,被监听,或者篡改。如果局域网中有恶意攻击者,那可能会发生下面的情况:

ARP欺骗:用户A想与用户B通信时会先广播发送ARP请求报文,那么坏人C也能收到这个报文,C并没有丢弃这个请求报文,而是以B的身份回给了A一条消息,把一个错误的MAC地址告诉A,由于ARP的保存机制是收到新的应答就会更新信息,所以只要C在B正常回答了A之后再伪装成B发送回复,A就保存下了错误信息。那么A发给B的数据B就不会收到了。

利用ARP欺骗的中间人攻击:还是上面三个人的情景,如果C回答给A的不是一个不存在的地址,而是C自己的MAC地址,那么A以后想发给B的数据都会给到C手上。如果C再同样的欺骗B,那么A和B的相互通信都会经过C,只要C收到之后再把数据转发给真正的接收方,A和B就能正常通信而且表面上并无异常。除了看到他们的通信数据,C还可以选择性的转发,或者篡改数据后再转发。

发表回复