针对ARP欺骗的多级检测和防御方法
技术领域
本发明涉及针对ARP欺骗的检测和防御方法,尤其涉及一种针对ARP欺骗的多级检测和防御方法。
背景技术
ARP(Address Resolution Protocol)地址解析协议,是一种将IP地址转化成物理(MAC,Media Access Control)地址的协议。ARP为早期的网络协议,RFC826于1980年出版。早期的互联网采取的是信任模式,不考虑网络安全问题,因此导致了ARP欺骗问题的出现。因为ARP协议并不只在发送了ARP请求才接收ARP应答,当主机(计算机)接收到ARP应答数据包的时候,就会无条件对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存表中。具体而言,当局域网中的一个主机(例如主机B)向网关发送一个自己伪造的ARP应答,即IP地址为另一个主机(例如主机A)的IP,而MAC地址是伪造的,当网关接收到主机B伪造的ARP应答后,就会更新本地的ARP缓存表,这样在网关看来主机A的IP地址没有变,而它的MAC地址已经不是原来那个了。
目前虽然有多种网关ARP欺骗防御方法,但是都或多或少存在一些缺陷。例如,对于IP地址和MAC地址静态绑定法,其使用不方便,适应性和灵活性比较差。内网主机多或DHCP的时候,管理和维护很麻烦。还有一种防御方法,网关对免费ARP不予理睬,只处理响应自己之前发送的ARP请求的ARP应答包,这种方式误判率很高,会导致用户数据流时断时续,基本无使用价值。还有一种防御方法,网关下面的主机以一定的频率广播自己正确的ARP信息,这是目前ARP防火墙常用的方法,其缺陷是没有从根本上解决问题,仍然会导致用户数据时断时续的。
发明内容
本发明要解决的技术问题在于针对现有技术中检测ARP欺骗过程中数据通信时通时断且检测准确度不高的缺陷,提供一种针对ARP欺骗的多级检测和防御方法。
本发明解决其技术问题所采用的技术方案是:一种针对ARP欺骗的多级检测和防御方法,包括:
初始化步骤:初始化ARP缓存表中主机的MAC地址的可信度;并向每个所述MAC地址以冗余模式发送数据包;
检测步骤:对所述MAC地址执行至少两次基于所述MAC地址的可信度的伪造检测,以确定所述MAC地址是否为伪造的MAC地址;
防御步骤:停止向所述伪造的MAC地址发送所述数据包。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,在所述初始化步骤包括将全部所述MAC地址的可信度设置为非零值以信任全部所述MAC地址。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述伪造检测是ARP请求数据包检测、TCP数据包检测、ping请求数据包检测、已知服务端口检测或ARP广播检测。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述ARP请求数据包检测包括步骤:
向所述MAC地址发送ARP请求数据包,如果没有收到所述MAC地址针对所述ARP请求数据包的回应,则设置该MAC地址的可信度为零值以确定为伪造的MAC地址;否则,所述MAC地址的可信度保持不变。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述TCP数据包检测包括步骤:
判断从所述MAC地址接收的TCP数据包是否携带有回应包,如果有,则所述MAC地址的可信度递增1;否则,所述MAC地址的可信度保持不变;
将所述MAC地址的可信度与可信度阈值进行比较,如果其中一个所述MAC地址的可信度大于所述可信度阈值,则将全部所述MAC地址的可信度减半以获得新的可信度;否则继续判断从所述MAC地址接收的TCP数据包是否携带有回应包;
判断所述MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述ping请求数据包检测包括步骤:
发送绑定MAC地址的ping请求数据包;
如果接收到所述绑定的MAC地址的回应,则所述MAC地址的可信度保持不变;否则所述MAC地址的可信度减半以获得新的可信度;
判断所述MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述已知服务端口检测包括步骤:
发送绑定MAC地址的TCP连接握手数据包;
如果接收到所述绑定的MAC地址的回应,则所述MAC地址的可信度保持不变;否则所述MAC地址的可信度减半以获得新的可信度;
判断所述MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述ARP广播检测包括步骤:
累计所述MAC地址发送ARP广播的次数;
将累计的次数与次数阈值进行比较,如果大于所述次数阈值,则所述MAC地址的可信度减半以获得新的可信度;否则所述MAC地址的可信度保持不变;
判断所述MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述防御步骤包括:
判断是否有从所述伪造的MAC地址接收绑定所述伪造的MAC地址的TCP数据包,并判断所述TCP数据包是否携带有回应包;如果有,则所述伪造的MAC地址的可信度递增1;否则所述伪造的MAC地址的可信度保持不变;
间隔地向所述伪造的MAC地址发送ARP请求数据包,如果接收到针对所述ARP请求数据包的回应,则所述伪造的MAC地址的可信度递增1;否则所述伪造的MAC地址的可信度保持不变;
当所述伪造的MAC地址的可信度为零值的时间超过预设时间时,删除所述伪造的MAC地址;当所述伪造的MAC地址的可信度为非零值时,重新开始向所述MAC发送冗余数据包。
在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,所述防御步骤包括:如果只有一个MAC地址的可信度为非零值,则直接向可信度为非零值的所述MAC地址发送数据包。
本发明产生的有益效果是:在依据本发明的针对ARP欺骗的多级检测和防御方法中,采用冗余模式发送数据包,使得在对MAC地址进行检测的过程中能确保主机数据流的通畅,而不会出现通信时通时断的情况。另外,在判断MAC地址是否为伪造的MAC地址的过程中,对MAC地址执行两次或两次以上的伪造检测,该伪造检测的次数、种类和顺序可以任意组合,因此,相比于单次伪造检测,可以提高检测的准确度。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是依据本发明实施例的针对ARP欺骗的多级检测和防御方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了依据本发明实施例的针对ARP欺骗的多级检测和防御方法的流程图,下面将结合图1按步骤对该针对ARP欺骗的多级检测和防御方法进行描述。
S100、初始化步骤:初始化ARP缓存表中主机的MAC地址的可信度;并向每个MAC地址发送冗余数据包。具体而言,此处所述的ARP缓存表既可以是网关的ARP缓存表,也可以是网络中任一主机的ARP缓存表。因此,依据本发明实施例的检测和防御方法既可以是针对网关受到ARP欺骗的解决方案,也可以是针对主机受到ARP欺骗的解决方案。下面将以网关的ARP缓存表为例。网关的ARP缓存表中存储了某一主机(下面将以主机A表示)的IP地址和其对应的MAC地址。单个IP维护多个MAC地址映射记录,每个映射记录都包含一个可信度字段,基于此对MAC地址设置可信度。当网关没有受到ARP欺骗时,主机A的IP地址在网关的ARP缓存表中存储的情况如表1所示。从网关的ARP缓存表可以看出,主机A的IP地址为192.168.1.2,对应的真实MAC地址为02-02-02-02-02-02,此时该MAC地址的可信度为1。在本发明中,设置MAC地址的可信度只要为非零值,即可信任该MAC地址。当网络中其它主机对网关进行了ARP欺骗,伪造了主机A的MAC地址,那么网关中的缓存表则如表2所示。从表2可以看出,此时主机A的IP地址仍为192.168.1.2,因此网关认为主机A的IP地址没有发生变化。但是该IP地址对应多个MAC地址,包括01-01-01-01-01-01、02-02-02-02-02-02、03-03-03-03-03-03以及04-04-04-04-04-04。其中有些MAC地址为伪造的,但是攻击刚开始时,网关无法分辨那些MAC地址为伪造的,因此在该初始化步骤中,将全部MAC地址的可信度设为非零值,例如此处设为1,从而认为可以信任全部的MAC地址。与此同时,因为无法分辨那些MAC地址是伪造的,但是又要确保主机A的数据流的通畅,将用于主机A通信的数据包(IP包)按照MAC地址的个数复制多份,例如,表2中有4个MAC地址,则将数据包复制4份,分别绑定缓存表中不同的MAC地址发送出去。网关采用这种冗余模式向主机A发送数据包,可以确保主机A数据流的通畅。
表1正常的ARP缓存表
IP地址 |
Mac地址 |
可信度 |
192.168.1.2 |
02-02-02-02-02-02 |
1 |
表2受到ARP欺骗后的ARP缓存表
IP地址 |
Mac地址 |
可信度 |
备注 |
192.168.1.2(主机A) |
01-01-01-01-01-01 |
1 |
初始可信度为1 |
192.168.1.2(主机A) |
02-02-02-02-02-02 |
1 |
初始可信度为1 |
192.168.1.2(主机A) |
03-03-03-03-03-03 |
1 |
初始可信度为1 |
192.168.1.2(主机A) |
04-04-04-04-04-04 |
1 |
初始可信度为1 |
S200、检测步骤:对MAC地址执行至少两次基于MAC地址的可信度的伪造检测,以确定MAC地址是否为伪造的MAC地址。在该检测步骤中,为了判断缓存表中那些MAC地址是伪造的,对这些MAC地址执行两次或两次以上的伪造检测。上述伪造检测是ARP请求数据包检测、TCP数据包检测、ping请求数据包检测、TCP连接握手数据包检测或ARP广播检测等,以上所列出的伪造检测方法仅用作举例,并不是对本发明的限制,在依据本发明实施例的针对ARP欺骗的多级检测和防御方法中,还可采用其它的能够检测MAC地址是否为伪造的任何伪造检测方法。在检测步骤中,可以使用多种伪造检测方法的组合,例如,可以首先采用ARP请求数据包检测对MAC地址就行第一次伪造检测,筛选出一些伪造的MAC地址;随后采用ping请求数据包检测对第一次伪造检测后剩余的MAC地址就行第二次伪造检测,进一步筛选出其中伪造的MAC地址。当然,可能的组合还有多种,可以对执行伪造检测的次数就行选择,和/或对伪造检测的种类就行选择,和/或对伪造检测的顺序就行检测等等。
在本发明的一个实施例中,采用两次伪造检测,第一次检测采用ARP请求数据包检测,首先筛选出一些伪造的MAC地址,随后就行第二次检测,第二次检测采用TCP数据包检测,对通过第一次检测的MAC地址就行第二次检测,进一步筛选出伪造的MAC地址。
具体而言,在第一次伪造检测(即ARP请求数据包检测)中,针对MAC地址构造4个特定的ARP请求数据包,如表3所示,该ARP请求数据包中的内容例如为“who-has 192.168.1.2”,然后将上述特定的ARP请求数据包发送至每个MAC地址。对于普通的ARP欺骗工具,其只会不停地发送ARP欺骗包,而不会对真正的ARP请求数据包做出回应。因此,如果没有收到MAC地址针对该ARP请求数据包的回应,则设置该MAC地址的可信度为零值,并认为其为伪造的MAC地址。例如表4中的MAC地址“04-04-04-04-04-04”没有针对ARP请求数据包做出回应,则将其可信度设为零值(即可信度为0),该MAC地址“04-04-04-04-04-04”为伪造的MAC地址。如果收到MAC地址针对该ARP请求数据包的回应,则将MAC地址的可信度保持不变,如表4所示的其它3个MAC地址,可信度保持不变,仍取值为1。从表4可以看出,通过第一次检测(即ARP请求数据包检测),筛选出MAC地址“04-04-04-04-04-04”为伪造的MAC地址,剩余的3个MAC地址通过该次测试,可暂时信任这3个MAC地址。
表3 ARP请求数据包
ARP请求包编号 |
请求包内容 |
ARP请求包的目的MAC地址 |
ARP请求包1 |
who-has 192.168.1.2 |
01-01-01-01-01-01 |
ARP请求包2 |
who-has 192.168.1.2 |
02-02-02-02-02-02 |
ARP请求包3 |
who-has 192.168.1.2 |
03-03-03-03-03-03 |
ARP请求包4 |
who-has 192.168.1.2 |
04-04-04-04-04-04 |
表4ARP请求数据包检测后的ARP缓存表
仅采用一次伪造检测是不够的,因此在本实施例中,对剩余的3个MAC地址执行第二次伪造检测,可例如采用TCP数据包检测。在通信过程中,网关将不断地收到来自IP地址为“192.168.1.2”的主机的带MAC地址的TCP数据包,判断从MAC地址接收的TCP数据包是否携带有回应包,如果有,则将该MAC地址的可信度递增1;否则,MAC地址的可信度保持不变。因为网关不断收到TCP数据包,因此MAC地址的可信度将不断增加,为此,设置可信度阈值,例如表5中采用的可信度阈值为100,当然也可以为其它值,如50,或200等等。将MAC地址的可信度与可信度阈值进行比较,如果其中任一个MAC地址的可信度大于该可信度阈值,则将全部MAC地址的可信度减半以获得新的可信度。具体如表5所示,MAC地址“02-02-02-02-02-02”通过与网关进行了99次TCP数据交互后,可信度从原来的1递增到100,已达到可信度阈值。随后将全部MAC地址的可信度减半(即将可信度除以2)以得到新的可信度。在该次伪造检测(即TCP数据包检测)中,MAC地址“01-01-01-01-01-01”在与网关进行TCP数据交互的过程中,因发往网关的TCP数据包没有携带回应包,因此可信度的值保持不变,仍为原来的值1,通过减半后变为零值,则由此判断MAC地址“01-01-01-01-01-01”为伪造的MAC地址。而MAC地址“03-03-03-03-03-03”的可信度减半后变为10,仍为非零值,则仍可信任该MAC地址。另外,如果MAC地址的可信度没有超出可信度阈值,则继续判断从MAC地址接收的TCP数据包是否携带有回应包,并基于此对MAC地址的可信度进行管理,直至有一个MAC地址的可信度大于可信度阈值。从表5可以看出,通过第二次伪造检测(即TCP数据包检测),确定MAC地址“01-01-01-01-01-01”为伪造的MAC地址,可信任通过该次检测的其它两个MAC地址。
在实际操作过程中,可以不断重复上述的伪造检测,也可采用其它的伪造检测方法。例如,还可采用ping请求数据包检测,该检测方法中,首先发送绑定MAC地址的ping请求数据包;如果接收到绑定的MAC地址的回应,则该MAC地址的可信度保持不变;否则该MAC地址的可信度减半以获得新的可信度;判断MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址,否则通过该次测试,仍可信任该MAC地址。
表5TCP数据包检测后的ARP缓存表
又例如,还可采用已知服务端口检测,真实主机通常会开放某些TCP端口,而ARP欺骗伪造的主机则不会。因此可构造TCP连接握手包,绑定不同的MAC地址发送出去。该检测中,首先发送绑定MAC地址的TCP连接握手数据包;如果接收到绑定的MAC地址的回应,则MAC地址的可信度保持不变;否则MAC地址的可信度减半以获得新的可信度;判断MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址,否则通过该次测试,仍可信任该MAC地址。
又例如,还可采用ARP广播检测方法,通常ARP欺骗工具会以一定频率不断发送自己的ARP欺骗广播,可利用此特点来进行检测。该检测中,累计MAC地址发送ARP广播的次数;将累计的次数与次数阈值(例如设置为20或10等)进行比较,如果大于所述次数阈值,则MAC地址的可信度减半以获得新的可信度;否则MAC地址的可信度保持不变;判断MAC地址的新的可信度是否为零值,如果是,则确定为伪造的MAC地址,否则通过该次测试,仍可信任该MAC地址。
从以上可以看出,在该检测步骤中,通过两次或两次以上的伪造检测方法,可以筛选出伪造的MAC地址。其中,这些伪造检测方法基于MAC地址的可信度管理,通过可信度的值来判断是否为伪造的MAC地址。如果可信度为非零值,则可信任该MAC地址,如果可信度为零值,则认定该MAC地址为伪造的MAC地址。另外,在检测步骤中,可以对伪造检测方法种类、次数和/或顺序进行任意组合,只要能更加精确地筛选出伪造的MAC地址即可。
S300、防御步骤:停止向伪造的MAC地址发送所述数据包。在该步骤中,对于S200检测步骤中确认的伪造的MAC地址,立即停止该伪造的MAC地址发送数据包。除此之外,当MAC地址的可信度变为零值后,认为是一次ARP欺骗,给用户告警,并将该MAC地址加入黑名单。
为了避免在检测步骤中将信任的MAC地址确定为伪造的MAC地址,对于检测步骤中确定的伪造的MAC地址不会马上删除,而是预留一个观察期。期间,可判断是否有从伪造的MAC地址接收绑定该伪造的MAC地址的TCP数据包,并判断该TCP数据包是否携带有回应包;如果有,则该伪造的MAC地址的可信度递增1;否则伪造的MAC地址的可信度保持不变,仍为零值。随后,间隔地(每隔一定时间,例如每隔10秒)向伪造的MAC地址发送ARP请求数据包,如果接收到针对ARP请求数据包的回应,则该伪造的MAC地址的可信度递增1;否则伪造的MAC地址的可信度保持不变。随后,当伪造的MAC地址的可信度为零值的时间超过预设时间(例如60秒)时,删除伪造的MAC地址;当伪造的MAC地址的可信度为非零值时,重新开始向MAC发送数据包,以保证主机数据流的畅通。另外,如果在防御步骤中检测到只有一个MAC地址的可信度为非零值,则直接向可信度为非零值的MAC地址发送数据包,不再以冗余模式发送数据包。
依据本发明实施例的针对ARP欺骗的多级检测和防御方法并不是一直执行,每隔一段时间(默认300秒或其它时间),或缓存表内ARP项总数超过阀值(默认10000)时,***内ARP缓存表全部清空,重新开始下一轮的检测和防御。
从以上可以看出,在依据本方面的针对ARP欺骗的多级检测和防御方法中,采用冗余模式发送数据包,使得在对MAC地址就行检测的过程中能确保主机数据流的通畅,而不会出现通信时通时断的情况。另外,在判断MAC地址是否为伪造的MAC地址的过程中,对MAC地址执行两次或两次以上的伪造检测,该伪造检测的次数、种类和顺序可以任意组合,因此,相比于单次伪造检测,可以提高检测的准确度。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。