一种恶意url阻断方法
技术领域
1.本发明涉及数据通信领域,具体地说是一种恶意url阻断方法。
背景技术:2.随着互联网技术的快速发展,人们在工作中、生活中对互联网的使用也越来越广泛。维护网络安全,为网络使用者提供安全的网络环境,是网络运维人员、安全设备厂商始终要考虑的重要问题。网络安全是一个很大的话题,涉及到很多的领域,但是最影响上网体验的是网址访问的问题。比如,使用互联网时经常遇到这样的问题,当浏览网页或者下载资源的时候,经常会弹出一些广告页面、不明网络链接等,有时候一不小心点中了某个链接,会导致网络使用者在不知情的情况下,下载安装了一些插件、留下各种包含不良信息的历史记录等,甚至会给网络使用者造成系统瘫痪等严重故障。上述就是用户访问了恶意 url(uniform resource locator,统一资源定位器)造成的影响。url格式: scheme://domain-name:port/path-to-resource?parameters#anchor。例如 http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#somewhereinthedocument。
3.多数恶意url是某些网站强行推送或是用户在不知情的情况下误点击访问的,并且有些推送信息还会在局域网内蔓延。因此,网络管理员会寄希望于安全设备具有拦截恶意url 的功能。大多数安全设备在实现恶意url阻断功能时,采用的方法是:在设备内部维护一张恶意url列表,对每个http报文的url做查询,如果命中了列表中的恶意url则丢弃该报文,从而实现阻断功能。其中恶意url列表是由专业技术人员负责维护、定期更新,然后放置在指定网站上的,开发人员可以自行取用。恶意url库的量级一般是几十万、上百万的,而且还在持续增加中。url一般是比较长的字符串组成的,平均长度一般在100 字节以上。http报文在现网流量中占比大概30%-40%,且绝大多数访问的是正常的url,只有少数的请求会访问恶意url。
4.综上,实现恶意url阻断需要面临的问题是:1)要查询的恶意url库体量大,且在持续增长;2)url是由长字符串组成,查询比对非常耗性能;3)现网环境中http请求报文量大,即携带url的报文总量大,但是携带恶意url的报文量很少,大多数都是正常访问的url。
5.目前大多数恶意url阻断功能的实现方法是:先从每个http请求报文中提取url,然后将获取到的url送去恶意url库做查询,看是否是恶意url。这种通用的处理方法最大的问题就是查询效率低。因为大多数去恶意url库做查询的url都是非恶意url,只有极少数的url是恶意的。所以针对这种总量多、单条查询又慢的恶意url库做查询时,大量的非恶意url查询非常耗费性能,而且是在做无用功。
技术实现要素:6.本发明的目的在于提供一种恶意url阻断方法,能快速放行大部分非恶意url,减少进入耗性能的恶意url库做检查的url总量,避免检查大量非恶意url造成的性能损失。
7.我们认为通常情况下,互联网上大多数流量是良性流量。基于此,可以通过白名单
方式,预先过滤掉大部分的良性流量,使这部分良性流量不需要再进入耗时的全量恶意url 库做检测。所以本发明的技术方案的基本思路:既然查询总的恶意url库耗性能,那么就先设置一个查询效率高的白名单表项,快速对所有要查询的url做预分类。通过高效的预分类匹配,过滤掉一部分良性流量,剩下的部分再做耗性能的全量恶意url库匹配,即用高效的白名单匹配方式替换了大部分耗性能的url查询操作,从而达到性能提升的效果。
8.为实现上述目的,本发明提供以下技术方案:
9.一种恶意url阻断方法,其特征在于,包括以下具体步骤:
10.s1、在恶意url库中,从每个url中提取几个字节的字符串作为特征,做成url特征字符串集合;
11.s2、制作url特征字符串集合的补集;
12.s3、用哈希表保存url特征集合的补集,在查询恶意url库之前先查询此哈希表,快速放过非恶意url;
13.s4、步骤s3中没有匹配中的url,需要去全量恶意url库做查询。
14.所述步骤s1具体包括以下内容:
15.本发明的技术方案以提取3个字节url特征为例做后续详细描述,3个字节的特征字符串是从恶意url的域名中选取的,域名信息大多数形如“www.baidu.com”、“test.find-phone.in”、“210.39.38.5”等等由数字、字母、“.”组成的,其中一级域名是“www”有很多,因此不具备代表性,所以特征选取方式为:
16.如果一级域名是“www”的,则从二级域名开始取连续3个字符作为特征字符串;
17.如果一级域名不是“www”的,则从一级域名开始取连续3个字符作为特征字符串;此步url的特征字符取得越少(粗略),则其补集总量越少,查询速度越快,但是过滤掉的非恶意url就越少;反之,url的特征字符取得越多(精细),则其补集总量越多,查询速度越慢,而过滤掉的非恶意url会比较多,因此特征字符个数要根据设备类型、流量场景斟酌选取。
18.本发明针对的是企业网关级别的ips设备,流量较小、设备硬件资源配置不高,因此选取3个字符做特征,其他级别设备可适当调整字符个数。
19.所述步骤s2具体包括以下内容:
20.要取特征字符串集合的补集,先要说明下特征字符串全集的概念,以3个字符的特征字符串为例,全集是指可以组成特征的所有的3字节字符串的全体,本发明中3个字符的特征字符串,是取的url的一级、二级域名的前3个字符,可能的组合形式是:第一位是 26个小写字符和0-9十个数字字符;第二位、第三位是26个小写字符、0-9十个数字字符和“.”,所以全集总数是36*37*37,补集就是从全集中去掉url特征集合之后剩余的字符串集合。
21.因此制作url特征集合补集的过程是:用全集中的每个字符串与url特征集合做比较,匹配中的去掉,留下所有没有匹配中的就是url特征集合的补集。
22.所述步骤s3具体包括以下内容:
23.本发明的查询方式,相比较之前的查询方式,增加了一个快速查询的表项,就是上述url特征集合的补集做成的哈希表;url特征集合的补集最极端的最大数量是36*37*37=49,284个3字节的字符串,相对量级很小、查询速度快,因此先查此哈希表,过滤掉部分非恶意url,剩余的部分再查,先用http请求报文中解析出来的url的一级域名或者二级域名(一级域名是“www”的用二级域名,否则用一级域名)开始的连续前3 个字符,在此哈希表中查
询,查中的就是非恶意的url,可直接放行,没有查中的可能是恶意url和可能是非恶意url,需要进一步验证,因为非恶意url占比较大,用一种快速、高效的查询方式,先行分流出来一部分非恶意url,剩余的url再去做耗性能的查询,可以提升整体查询效率。
24.所述步骤s3中“url特征补集哈希表”制作、使用方法概述如下:
25.①
制作方法:从恶意url库的每个url的域名中提取几个字符做为此url的特征,获取所有恶意url的上述特征做成集合,再取其补集,如果将恶意url库看成一个黑名单集合,那么这个取补集之后的url特征集合,就是相对于此黑名单集合的一个白名单集合的子集。这个白名单集合的子集中,每个元素只有几个字节且元素总量很少,因此可以用此白名单子集做成查询效率高的表项,将此表项设置在恶意url库查询之前,为总的需要做查询的url做预分类。
26.②
使用方法:匹配中这个表项的url是非恶意url,可直接放行,没有匹配中的url 有恶意的url也有非恶意的url,需要再去做全量恶意url查询,查看是否是恶意url。
27.所述步骤s4具体包括以下内容:
28.经过步骤3中过滤掉的(匹配中的)url,全部是非恶意url;没有过滤掉的(没有匹配中的)url,一部分是非恶意url,一部分是恶意url;对于步骤3中没有过滤掉的url,需要做后续查找,来确定是否是恶意url,因此,没有过滤掉的url还需要继续到全量恶意url库做查询,此查询过程与目前常见实现方式一致,不做详细叙述,查询匹配中的既是恶意url,需要做阻断操作;没有匹配中的是非恶意url,直接放行。
29.与现有技术相比,本发明有益效果如下:
30.本发明提出的方法,首先,构造url特征集合的补集,补集的元素只有3字节,元素总量极端情况最多49284个,所以其查询速度很快;然后,在耗性能的恶意url全量匹配查询之前,用此补集先过滤掉大部分非恶意url,然后再对剩余的url做全量查询,可以大大减少耗性能的操作,从而提升整体查询效率。
附图说明
31.图1为传统url匹配方法与本发明url匹配方法对比图;
32.图2为本发明提取3个字节url特征的流程图;
33.图3为本发明url特征集合取补集的流程图;
34.图4为本发明url匹配流程图。
具体实施方式
35.为阐明技术问题、技术方案、实施过程及性能展示,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释。本发明,并不用于限定本发明。以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
36.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
37.另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。
本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
38.实施例1
39.一种恶意url阻断方法,其特征在于,包括以下具体步骤:
40.s1、在恶意url库中,从每个url中提取几个字节的字符串作为特征,做成url特征字符串集合;
41.s2、制作url特征字符串集合的补集;
42.s3、用哈希表保存url特征集合的补集,在查询恶意url库之前先查询此哈希表,快速放过非恶意url;
43.s4、步骤s3中没有匹配中的url,需要去全量恶意url库做查询。
44.如图2所示,所述步骤s1具体包括以下内容:
45.本发明的技术方案以提取3个字节url特征为例做后续详细描述,3个字节的特征字符串是从恶意url的域名中选取的,域名信息大多数形如“www.baidu.com”、“test.find-phone.in”、“210.39.38.5”等等由数字、字母、“.”组成的,其中一级域名是“www”有很多,因此不具备代表性,所以特征选取方式为:
46.如果一级域名是“www”的,则从二级域名开始取连续3个字符作为特征字符串;
47.如果一级域名不是“www”的,则从一级域名开始取连续3个字符作为特征字符串;此步url的特征字符取得越少(粗略),则其补集总量越少,查询速度越快,但是过滤掉的非恶意url就越少;反之,url的特征字符取得越多(精细),则其补集总量越多,查询速度越慢,而过滤掉的非恶意url会比较多,因此特征字符个数要根据设备类型、流量场景斟酌选取。
48.本发明针对的是企业网关级别的ips设备,流量较小、设备硬件资源配置不高,因此选取3个字符做特征,其他级别设备可适当调整字符个数。
49.如图3所示,所述步骤s2具体包括以下内容:
50.要取特征字符串集合的补集,先要说明下特征字符串全集的概念,以3个字符的特征字符串为例,全集是指可以组成特征的所有的3字节字符串的全体,本发明中3个字符的特征字符串,是取的url的一级、二级域名的前3个字符,可能的组合形式是:第一位是 26个小写字符和0-9十个数字字符;第二位、第三位是26个小写字符、0-9十个数字字符和“.”,所以全集总数是36*37*37,补集就是从全集中去掉url特征集合之后剩余的字符串集合。
51.因此制作url特征集合补集的过程是:用全集中的每个字符串与url特征集合做比较,匹配中的去掉,留下所有没有匹配中的就是url特征集合的补集。
52.如图4所示,所述步骤s3具体包括以下内容:
53.本发明的查询方式,相比较之前的查询方式,增加了一个快速查询的表项,就是上述url特征集合的补集做成的哈希表;url特征集合的补集最极端的最大数量是 36*37*37=49,284个3字节的字符串,相对量级很小、查询速度快,因此先查此哈希表,过滤掉部分非恶意url,剩余的部分再查,先用http请求报文中解析出来的url的一级域名或者二级域名(一级域名是“www”的用二级域名,否则用一级域名)开始的连续前3 个字符,在此哈希表中查询,查中的就是非恶意的url,可直接放行,没有查中的可能是恶意url和可能是非恶意url,需要进一步验证,因为非恶意url占比较大,用一种快速、高效的查询方式,先行分流出来一部分非恶意url,剩余的url再去做耗性能的查询,可以提升整体查询效率。
54.所述步骤s3中“url特征补集哈希表”制作、使用方法概述如下:
55.①
制作方法:从恶意url库的每个url的域名中提取几个字符做为此url的特征,获取所有恶意url的上述特征做成集合,再取其补集,如果将恶意url库看成一个黑名单集合,那么这个取补集之后的url特征集合,就是相对于此黑名单集合的一个白名单集合的子集。这个白名单集合的子集中,每个元素只有几个字节且元素总量很少,因此可以用此白名单子集做成查询效率高的表项,将此表项设置在恶意url库查询之前,为总的需要做查询的url做预分类。
56.②
使用方法:匹配中这个表项的url是非恶意url,可直接放行,没有匹配中的url 有恶意的url也有非恶意的url,需要再去做全量恶意url查询,查看是否是恶意url。
57.所述步骤s4具体包括以下内容:
58.经过步骤3中过滤掉的(匹配中的)url,全部是非恶意url;没有过滤掉的(没有匹配中的)url,一部分是非恶意url,一部分是恶意url;对于步骤3中没有过滤掉的url,需要做后续查找,来确定是否是恶意url,因此,没有过滤掉的url还需要继续到全量恶意url库做查询,此查询过程与目前常见实现方式一致,不做详细叙述,查询匹配中的既是恶意url,需要做阻断操作;没有匹配中的是非恶意url,直接放行。
59.如图1所示,图(a)是传统的url匹配方法,所有的url都直接去全量恶意url库中做查询;图(b)是本发明提出的方法,比图(a)多了绿色的预查询表“url特征补集哈希表”,这个表项就是上述查询效率高的白名单表项,先用这个表项预先过滤掉大部分良性流量,剩余的url再去全量恶意url库中做匹配,查看是否是需要阻断的恶意url。
60.本发明实施时可以根据如下步骤操作:
61.步骤1:获取恶意url库全集,提取域名字段,存入url-domain.txt文件,每行一个域名。
62.步骤2:提取3个字节url特征,流程图见图1。按行遍历,查看前3个字符是否是“www”。如果是,则越过一级域名,从二级域名中取前三个字符;如果不是,则从一级域名中取前3个字符。将取到的所有3个字符的特征按行存入3byte-url.txt文件中。
63.步骤3:为2中生成的3个字节url特征集合取补集,流程图见图2。1)按照选取的 3字节字符串的所有可能组合生成特征集全集。此处选取的是url一级或者二级域名开始的前3个字符,因此第一位可能的字符为小写字母a-z、数字0-9;第二、三位可能的字符为小写字母a-z、数字0-9和符号“.”。所以全集是这些字母、数字、字符的3个字节的排列组合,总数量是:36*37*37=49,284。2)在全集中去掉3byte-url.txt文件中已经存在的,就是url特征集合的补集。3)将得到的url特征集合的补集存入 negative-3byte-url.txt文件中。
64.步骤4:在需要支持恶意url阻断功能的设备中,读取negative-3byte-url.txt文件中3字节字符串,生成适合做字符串查询的哈希表。
65.步骤5:从http请求报文中解析出url做预查询,决定放行还是阻断。报文中解析出来的url,先在上步中生成的哈希表中做查询。查中的说明一定是非恶意url,可直接放行;没查中的可能是非恶意url,也可能是恶意url。
66.步骤6:对上步中没有查中的url,需要做进一步查询,这部分url需要用全量恶意 url库做查询,查中的就是恶意url,需要阻断;没有查中的是非恶意url,需要放行。
67.步骤5和步骤6的流程图见图3。
68.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
技术特征:1.一种恶意url阻断方法,其特征在于,包括以下具体步骤:s1、在恶意url库中,从每个url中提取几个字节的字符串作为特征,做成url特征字符串集合;s2、制作url特征字符串集合的补集;s3、用哈希表保存url特征集合的补集,在查询恶意url库之前先查询此哈希表,快速放过非恶意url;s4、步骤s3中没有匹配中的url,需要去全量恶意url库做查询。2.根据权利要求1所述的一种恶意url阻断方法,其特征在于,所述步骤s1具体包括以下内容:本发明的技术方案以提取3个字节url特征为例做后续详细描述,3个字节的特征字符串是从恶意url的域名中选取的,域名信息大多数形如“www.baidu.com”、“test.find-phone.in”、“210.39.38.5”等等由数字、字母、“.”组成的,其中一级域名是“www”有很多,因此不具备代表性,所以特征选取方式为:如果一级域名是“www”的,则从二级域名开始取连续3个字符作为特征字符串;如果一级域名不是“www”的,则从一级域名开始取连续3个字符作为特征字符串;此步url的特征字符取得越少(粗略),则其补集总量越少,查询速度越快,但是过滤掉的非恶意url就越少;反之,url的特征字符取得越多(精细),则其补集总量越多,查询速度越慢,而过滤掉的非恶意url会比较多,因此特征字符个数要根据设备类型、流量场景斟酌选取。本发明针对的是企业网关级别的ips设备,流量较小、设备硬件资源配置不高,因此选取3个字符做特征,其他级别设备可适当调整字符个数。3.根据权利要求1所述的一种恶意url阻断方法,其特征在于,所述步骤s2具体包括以下内容:要取特征字符串集合的补集,先要说明下特征字符串全集的概念,以3个字符的特征字符串为例,全集是指可以组成特征的所有的3字节字符串的全体,本发明中3个字符的特征字符串,是取的url的一级、二级域名的前3个字符,可能的组合形式是:第一位是26个小写字符和0-9十个数字字符;第二位、第三位是26个小写字符、0-9十个数字字符和“.”,所以全集总数是36*37*37,补集就是从全集中去掉url特征集合之后剩余的字符串集合。因此制作url特征集合补集的过程是:用全集中的每个字符串与url特征集合做比较,匹配中的去掉,留下所有没有匹配中的就是url特征集合的补集。4.根据权利要求1所述的一种恶意url阻断方法,其特征在于,所述步骤s3具体包括以下内容:本发明的查询方式,相比较之前的查询方式,增加了一个快速查询的表项,就是上述url特征集合的补集做成的哈希表;url特征集合的补集最极端的最大数量是36*37*37=49,284个3字节的字符串,相对量级很小、查询速度快,因此先查此哈希表,过滤掉部分非恶意url,剩余的部分再查,先用http请求报文中解析出来的url的一级域名或者二级域名(一级域名是“www”的用二级域名,否则用一级域名)开始的连续前3个字符,在此哈希表中查询,查中的就是非恶意的url,可直接放行,没有查中的可能是恶意url和可能是非恶意url,需要进一步验证,因为非恶意url占比较大,用一种快速、高效的查询方式,先行分流出来一部分非恶意url,剩余的url再去做耗性能的查询,可以提升整体查询效率。
5.根据权利要求4所述的一种恶意url阻断方法,其特征在于,所述步骤s3中“url特征补集哈希表”制作、使用方法概述如下:
①
制作方法:从恶意url库的每个url的域名中提取几个字符做为此url的特征,获取所有恶意url的上述特征做成集合,再取其补集,如果将恶意url库看成一个黑名单集合,那么这个取补集之后的url特征集合,就是相对于此黑名单集合的一个白名单集合的子集。这个白名单集合的子集中,每个元素只有几个字节且元素总量很少,因此可以用此白名单子集做成查询效率高的表项,将此表项设置在恶意url库查询之前,为总的需要做查询的url做预分类。
②
使用方法:匹配中这个表项的url是非恶意url,可直接放行,没有匹配中的url有恶意的url也有非恶意的url,需要再去做全量恶意url查询,查看是否是恶意url。6.根据权利要求1所述的一种恶意url阻断方法,其特征在于,所述步骤s4具体包括以下内容:经过步骤3中过滤掉的(匹配中的)url,全部是非恶意url;没有过滤掉的(没有匹配中的)url,一部分是非恶意url,一部分是恶意url;对于步骤3中没有过滤掉的url,需要做后续查找,来确定是否是恶意url,因此,没有过滤掉的url还需要继续到全量恶意url库做查询,此查询过程与目前常见实现方式一致,不做详细叙述,查询匹配中的既是恶意url,需要做阻断操作;没有匹配中的是非恶意url,直接放行。
技术总结本发明提供了一种恶意URL阻断方法,其特征在于,包括以下具体步骤:S1、在恶意URL库中,从每个URL中提取几个字节的字符串作为特征,做成URL特征字符串集合;S2、制作URL特征字符串集合的补集;S3、用哈希表保存URL特征集合的补集,在查询恶意URL库之前先查询此哈希表,快速放过非恶意URL;S4、步骤S3中没有匹配中的URL,需要去全量恶意URL库做查询;本发明的一种恶意URL阻断方法,能快速放行大部分非恶意URL,减少进入耗性能的恶意URL库做检查的URL总量,避免检查大量非恶意URL造成的性能损失。避免检查大量非恶意URL造成的性能损失。避免检查大量非恶意URL造成的性能损失。
技术研发人员:张广兴 姜海洋 景阳 梁帅 夏可强 涂楚 何旭
受保护的技术使用者:江苏省未来网络创新研究院
技术研发日:2022.06.28
技术公布日:2022/11/1