ARP协议

一. 什么是ARP 

                  ARP是地址转换协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,工作在OSI模型的第二层,在本层和硬件接口间进行联系,同时对上层

    (网络层)提供服务。

                   二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输以太网数据包的。也就是说IP数据包在局域网内

        部传输时并不是靠IP地址而是靠MAC地址来识别目标的,因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。

        Windows操作系统,在命令行窗口输入"arp -a"命令可查看本机当前的ARP缓存表,ARP缓存表保存的就是IP地址与MAC地址的对应关系,如下图所示:

        

二. ARP协议的工作原理

      

ARP数据包根据接收对象不同,可分为两种:
    1. 广播包(Broadcast)。广播包目的MAC地址为FF-FF-FF-FF-FF-FF,交换机设备接收到广播包后,会把它转发给局域网内的所有主机。
    2. 非广播包(Non-Broadcast)。非广播包后只有指定的主机才能接收到。

   ARP数据包根据功能不同,也可以分为两种:
    1. ARP请求包(ARP Request)。ARP请求包的作用是用于获取局域网内某IP对应的MAC地址。
    2. ARP回复包(ARP Reply)。ARP回复包的作用是告知别的主机,本机的IP地址和MAC是什么。

    广播的一般都是ARP请求包,非广播的一般都是ARP回复包。

    假设局域网内有以下两台主机,主机名、IP地址、MAC地址分别如下:
        主机名   IP地址          MAC地址
        A        192.168.0.1     AA-AA-AA-AA-AA-AA
        B        192.168.0.2     BB-BB-BB-BB-BB-BB

    当主机A需要与主机B进行通讯时,它会先查一下本机的ARP缓存中,有没有主机B的MAC地址。如果有就可以直接通讯。如果没有,主机A就需要通过ARP协议来获取主机B的MAC地址,具体做法相当于主机A向局域网内所有主机喊一嗓子:“喂~谁是192.168.0.2?我是192.168.0.1,我的MAC地址是AA-AA-AA-AA-AA-AA
。你的MAC地址是什么,快告诉我”,这时候主机A发的数据包类型为:广播-请求。

    当主机B接收到来自主机A的“ARP广播-请求”数据包后,它会先把主机A的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,然后它会给主机A发送一个“ARP非广播-回复”数据包,其作用相当于告诉主机A:“嘿,我是192.168.0.2,我的MAC地址是BB-BB-BB-BB-BB-BB”。当主机A接收到主机B的回复后,它会把主机B的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,之后主机A和B就可以进行通讯了。

    从上述局域网主机通讯过程可以看出,主机在两种情况下会保存、更新本机的ARP缓存表,
    1. 接收到“ARP广播-请求”包时
    2. 接收到“ARP非广播-回复”包时

    这种机制,或者说ARP协议的设计,会不会存在问题呢?


3. ARP欺骗/攻击原理

     根据2中讲述,主机在两种情况下会保存、更新本机的ARP缓存表,
    1. 接收到“ARP广播-请求”包时
    2. 接收到“ARP非广播-回复”包时

    从中我们可以看出,ARP协议是没有身份验证机制的,局域网内任何主机都可以随意伪造ARP数据包,ARP协议设计天生就存在严重缺陷。

    假设局域网内有以下三台主机(其中GW指网关),主机名、IP地址、MAC地址分别如下:
        主机名   IP地址          MAC地址
        GW       192.168.0.1     01-01-01-01-01-01
        PC02     192.168.0.2     02-02-02-02-02-02
        PC03     192.168.0.3     03-03-03-03-03-03

    在正常情况下,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表如下图所示:

    

当网络爱好者,主机PC03出现之后,他为了达到某种目的,于是决定实施一次ARP欺骗攻击。PC03首先向PC02发送了一个ARP数据包,作用相当于告诉PC02:“嘿,我是192.168.0.1,我的MAC地址是03-03-03-03-03-03”,接着他也向GW发送了一个ARP数据包,作用相当于告诉GW:“嘿,我是192.168.0.2,我的MAC地址是03-03-03-03-03-03”。于是,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表就变成如下图所示:


从上图我们可以看出,ARP欺骗之后,主机PC02与GW之间的所有网络数据都将流经PC03,即PC03已经掌控了它们之间的数据通讯。以上就是一次ARP欺骗的实施过程,以及欺骗之后的效果。

四. ARP欺骗的种类及其危害

       ARP欺骗根据欺骗对象的不用可以分为三种,
    1. 只欺骗受害主机。实施欺骗后效果如下:

        

    2. 只欺骗路由器、网关。实施欺骗后效果如下:

    

       3. 双向欺骗,即前面两种欺骗方法的组合使用。实施欺骗后的效果如下:


 ARP欺骗带来的危害可以分为几大类,
    1. 网络异常。具体表现为:掉线、IP冲突等。
    2. 数据窃取。具体表现为:个人隐私泄漏(如MSN聊天记录、邮件等)、账号被盗用(如QQ账号、银行账号等)。
    3. 数据篡改。具体表现为:访问的网页被添加了恶意内容,俗称“挂马”。
    4. 非法控制。具体表现为:网络速度、网络访问行为(例如某些网页打不开、某些网络应用程序用不了)受第三者非法控制。

    ARP欺骗根据发起个体的不同可以分为两类,
    1. 人为攻击。人为攻击的目的主要是:造成网络异常、窃取数据、非法控制。
    2. ARP病毒。ARP病毒不是特指某一种病毒,而是指所有包含有ARP欺骗功能的病毒的总称。ARP病毒的目的主要是:窃取数据(盗号等)、篡改数据(挂马等)。

    从目前的情况来看,ARP欺骗(不管是人为的还是ARP病毒)大多数是在网络异常后被发现的。请注意,精心策划的人为ARP欺骗、设计良好的ARP病毒,是不会造成网络异常的,所以网络没有出现异常并不代表不存在ARP欺骗问题!


本文转载自 http://www.antiarp.com/about.htm
01-02 133
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值