ARP协议的缺陷分析
ARP主要是利用伪造的IP/MAC映射关系来骗取其他主机的信任.从而达到非法截获网络内其他主机之间的通信数据。
ARP协议的安全漏洞来源于协议自身设计上的不足.ARP协议被设计成一种可信任协议。缺乏合法性验证手段。
ARP协议是一个高效的数据链路层协议.但是设计初衷是方便数据的传输.设计前提是网络绝对安全的情况.ARP协议是建立在局域网主机相互信任的基础之上.ARP具有广播性、无状态性、无认证性、无关性和动态性等一系列的安全缺陷。
(1)ARP协议寻找MAC地址是广播方式的。攻击者可以应答错误的MAC地址.同时攻击者也可以不问断地广播ARP请求包.造成网络的缓慢甚至网络阻塞;
(2)ARP协议是无状态和动态的。任意主机都可以在没有请求的情况下进行应答.且任何主机只要收到网络内正确的ARP应答包.不管它本身是否有ARP 请求。都会无条件的动态更新缓存表;
(3)ARP协议是无认证的。ARP协议默认情况下是信任网络内的所有节点.只要是存在ARP缓存表里的IP/MAC映射以及接收到的ARP应答中的IP/MAC 映射关系.ARP都认为是可信任的.并没有对IP/MAC映射的真实性,有效性进行检验.也没有维护映射的一致性。
详细分析:
ARP实现分析
ARP的整个工作还有一些其它的一些函数,这些函数与本文的研究关系不大,因此不作说明。在ARP的工作过程中有以下几个方面安全问题值得关注:
(1)如果有一个伪造的ARP分组(这个分组中的发送者IP地址不是本机的IP地址,但发送者硬件地址是本机的,它伪造了一个IP—MAC映射),以太网接口输出处理函数只是构造一个以太首部封装此分组并把它放到输出队列,不判断该分组中的发送者IP—MAC映射是否与本机信息相符,因此,这个伪造分组不会被作为非法分组丢弃,从而可能造成伪造ARP 分组顺利发送,而伪造ARP分组会影响网络的运行和安全。当然,如果进行ARP分组的检查,则势必影响通信速度,在早期的可信网络中这种做法是多余的,所以ARP设计上没有
包检查的操作。ARP帧中以太网首部的以太网源地址等于ARP分组中的发送方硬件地址,这在设计上是重复的内容,黑客可以修改ARP分组中的发送方硬件地址为一个非法的硬件地址,但以太网接口输入函数在处理中并不进行此项验证,而是将一个不包含以太首部的分组放入ARP输入队列,这样就造成部分伪造包被送到ARP输入处理函数。
(2)通过ARP接收处理过程可以看到,如果收至UARP分组,只要其中的发送方IP地址在ARP高速缓存中能被搜索到,那么这个ARP结点的硬件地址信息就能被改写为新的硬件地址,而不管这个ARP分组中的发送者硬件地址是否有效,另外,虽然ARP高速缓存中没有相匹配的项,但如果本机是目的主机,那么也会创建一个ARP结点。这有以下三种可能:
①ARP的正常处理流程是创建一个新的ARP结点,保持待发送的数据,然后发送一个ARP广播请求,等待ARP单播应答到达之后,更新ARP结点并将保持的数据发送出去。很明显,等待期间,任何合适的应答都可以被接受,而这个应答也可以是伪造的。
②如果未发送ARP请求却收到一个ARP应答包,ARP处理中并不管是否发送过ARP 请求,只是判断发送发IP地址和目的IP地址,仍然允许根据此应答的信息修改ARP高速缓存中的信息,如果该ARP应答包的目标IP地址是本机IP地址,而且ARP高速缓存中没有此口的对应映射,则会创建新的ARP结点,但这种应答是伪造的。因此,如果收到来自两个不同主机的ARP应答包(其中的发送方口地址相同,但发送方硬件地址不同,其中有一个是伪造包),系统会首先对第一个ARP应答包进行响应,然后相应第二个包时则会修改该硬件地址。如果第一个为实际主机的硬件地址,那么则会被修改为伪造的硬件地址,而这个伪造的硬件地址有可能是其它主机的硬件地址,也可能是一个不存在的硬件地址。
③ARP协议实现在收到一个目的地址不是本机地址的ARP包,本机其实不是通信的另一方,但如果存在一个与此相匹配的ARP结点,而且此包中的发送方硬件地址发生了变化,那么原有的ARP结点信息会被更新,这样在一定程度上提高了通信效率,但同样造成了安全隐患。
总的来说,ARP协议及其实现中缺少检查ARP包被伪造包的处理,而且对ARP高速缓存的更新不严密,这两点造成了ARP协议的不安全。