基于威胁情报和多分类器投票机制的恶意URL 检测模型∗
2020-10-14肖治华
杨 杉 肖治华 张 成
(国网湖北省电力公司信息通信公司 武汉 430077)
1 引言
近年来,随着各种智能型移动设备的普及应用,互联网规模也得到了极大地扩张,已经渗透进了民众生活的各个层面。在多种类型的网络服务中,万维网一直是最重要的内容,也是信息传输量最大的应用种类。根据CNNIC 发布的报告显示,万维网已经成为了用户登录网络并使用应用服务的最主要途径,在这一过程中,统一资源定位符URL 起到了至关重要的作用[1]。URL 的推出,使得各种异构站点可以采取一种统一的标准格式来向用户提供具体到某一页面的定位功能,并通过大量的超链接实现多个页面以及多个站点之间的便捷跳转。但与此同时,包括计算机病毒、流氓软件、广告推送等恶意内容也纷纷以Web 页面为平台,以URL 为推广工具,进行大范围的传播与破坏,极大地干扰了各类信息系统的正常运维工作,也给用户造成了大量的损失[2]。恶意URL 被定义为用户非自愿访问的站点地址,通过伪装成正常服务的方式诱导用户点击并进入相关页面,从而实施各种恶意行为[3]。卡巴斯基2017年推出的安全公报指出,目前通过恶意URL 进行的网络攻击占所有网络非法行为的75%以上,包括各种恶意脚本、漏洞攻击和可执行的病毒文件等[4]。因此,为针对陌生URL进行快速检测,判别其所定位的页面是否具有恶意内容具有着重要的研究意义。
目前恶意URL 检测工作分为两个主要的研究方向,其一是应用较为广泛的黑名单机制,即根据以往记录的恶意URL 与待检测的URL 进行对比,如Chrome 浏览器的采用的Safe Browsing 机制[5]就属于这一类型。从检测模式方面分析,黑名单机制属于一种被动检测方法,因此本身存在一些固有的缺陷,例如只能针对名单中的URL 进行对比,而无法对新增加的恶意页面进行检测,且随着黑名单的不断增多,其检测效率也会日益下降,对网络传输的实时性能造成影响;第二类方法为主动检测方法,即利用机器学习来对URL 进行快速检测,其中具有代表性的方法有决策树、支持向量机SVM 和Kmeans等[6]。该类方法主要是采用各种算法,提取恶意URL 的特征,并同待检测URL 进行比对,例如常采用的URL 字符长度、分隔符数量以及一些常见的关键词等。Samtani 等[7]提出针对URL 字符串进行分解,分别从主机定位与词义表达两个方面来提取特征;林海伦等[8]针对URL 字符串中的域名、路径名和文件名进行分析,从中总结出了部分恶意URL 的词项排列规律,并建立相关的检测模型。Alrwais 等[9]提出采用图论方法针对一些已知的恶意主机进行扩展检测,从而将检测的对象从页面转变为了主机IP,有效地减少了算法的计算规模;Liang等在文献[10]中针对网页HTML 代码标签进行分析,指出绝大部分的恶意网页均会隐藏其标签,因此可根据待检测网页中标签的可见程度来判别该URL是否存在内嵌恶意代码的可能。
虽然基于网页内容的检测方法在检测准确度方面具有明显的优势,但其缺点也是非常明显的,即需要大规模的采集网页内容,而对于飞速扩张的互联网站点规模而言,这一方式显然会受到极大的制约,其耗费的时间也将会不断增长。本文提出将威胁情报技术融入到恶意URL 检测工作中,利用其庞大的数据资源,结合URL 的结构特征和敏感词特征,并采用多分类器投票机制来完成检测方案的自我修正,在确保检测精度的同时,极大地提高检测方法的执行效率,同时实现了威胁情报库的自动更新。
2 恶意URL威胁特征的提取
如上节所述,由于互联网站点规模的不断增大,目前针对页面进行检测的技术基本无法解决检测时延过长的问题,因此本文也将研究的对象放在恶意URL 字符串方面,借助威胁情报平台的信息库,深入分析URL 字符的结构特征与敏感词特征,从而为后续的检测算法的设计工作奠定基础。
2.1 结构特征的提取
首先从结构方面对URL 进行分析与特征提取。结合以往的研究经验,URL可提取的特征包括字符中的点数、字符串长度、大写字母、特殊符号以及是否包含跳转的IP 地址等。以下分别进行分析。
1)URL字符串中的点数
众所周知,URL 中“·”的个数是域名分配机制所采用的分隔符号,能够准确地反映出该URL 中包含的域名的细分程度。一般正常的域名最多为四级,即包含的点数一般不超过三个,但相当一部分恶意URL 为了引诱用户点击而故意在真实域名中仿造知名站点的域名,因此点的个数越多,该域名包含恶意行为的概率就越高[11]。为了避免数值较高的特征所带来的局部峰值效应,本次采用min-max 标准化对采样的点数执行归一化处理,并设置最大点数为10。得到式(1):
2)URL字符串长度
根据大量恶意URL 案例的统计结果显示,随着URL 字符长度的增加,该URL 最终被归类为恶意URL 的可能性就越大。因此本文此处仍旧采取min-max 对长度特征进行归一化处理,从而平均特征样本的影响程度,设置长度的max值为60。得到式(2)。
3)URL字符串中包含的大写字母
在大多数正常的URL 格式中,很少会出现大写字母与小写字母混同出现的情况,因为Http协议本身和所有的Windows 服务器均是大小写不敏感的,只有在运行着Apache 的Unix 系统中才存在大小写敏感的设定,因此可以认为,若URL 存在大小写混合的情况,则此页面可能在一定程度上存在恶意内容,据此设定正则表达式(3):
4)URL字符串中包含的特殊字符
多数URL 处于迷惑用户的目的,特意在其字符串中添加大量的特殊字符,从而降低其可读性,使用户不易分辨其结构特征,如“~”、“&”、“#”、“∧”等,此处同样采取正则表达式对该特征进行分类,如式(4)所示:
5)URL字符串中包含的IP地址
部分恶意URL 为了规避DNS 检测机制的审核,将其字符串中的域名部分采用IP 地址来代替,这也成为了恶意URL 的一个显著特征,因此本文采用正则表达式来滤出含有IP 地址的URL,其特征值设定如式(5):
2.2 敏感词特征的提取
敏感词意指被大多数恶意URL 所使用且出现频率较高的词汇。通过对敏感词的统计与提取,可实现对恶意URL 的快速检索。本文借助了威胁情报平台的数据优势,从其URL 信息库中统计得到了如表1 所示的一系列敏感词。其提取方法为:首先选择库中信誉度为黑色(即信誉度最差,可基本等价认定其包含恶意内容)的URL[12],将这些URL字符串中的协议标识、顶级域名等字符去除,随后根据剩余部分中的分隔符(如“·”、“/”和“-”等符号)将字符串分词,统计各个词段中敏感词出现的频率,最后按照该频率的高低顺序删选出位居前16 名的词汇作为最终认定的恶意URL 常使用的敏感词。
表1 恶意URL常见敏感词
得到了敏感词汇表之后,在后续的检测过程中,首先将待测URL 执行分词操作,并将其与表中词汇进行比对,若发现其中存在敏感词汇,则将该特征值置为1,否则为0。
3 多分类器投票检测模型的设计
在威胁情报平台的辅助下提取URL 结构特征和敏感词特征之后,即可进入到检测算法设计环节。本文采用决策树算法、朴素贝叶斯算法和SVM算法来构建动态的机器学习分类器模型。其流程如图1 所示,首先对待测URL 进行预处理,标注其所述类别,随后根据上文所述的方法提取结构特征和敏感词特征,再通过三种不同的分类算法对构建相应的分类器模型,分别判定该URL 是否包含恶意内容。
图1 分类器训练流程
3.1 三种分类器模型的构建
1)决策树分类器
决策树算法是一种成熟的分类算法,其采用自上而下的递归策略,由不同的特征属性决定各个节点处的分支,并最终构建一棵树状结构的特征分布图。将待测样本置于根节点处,即可通过属性特征在每个节点的分支选择,最终到达叶子节点,该节点即为决策树算法的最终结果[13]。由此可见,对该算法影响程度最大的就是决策树模型构建的合理性,即各个节点的判定依据是否有效。本文将信息增益率作为判定的度量,由信息论可知,随着信息增益的增大,样本的确定性也会不断增高。现设D为数据类别的划分,则其熵可由式(6)来描述:
上式中i为类别序号,n为类别数量,pi表示第i 类在数据集中出现的概率。例如,对数据集中的某个样本的属性X 进行分类,则其期望值应根据式(7)得出:
将以上两式相减即可得到关于属性X 的信息增益值,即有:
当采用Gain(X)作为属性选择的度量标准时,往往会导致拥有更多值的属性常以较高概率被选中的情况发生,因此本文采用分裂信息的方法来对Gain(X)执行规范化操作:
利用式(9)对Gain(X)进行规范,可得到关于属性X的增益率为
根据式(10)分别计算出待测URL 的结构特征值与敏感词特征值所对应的增益率,然后以此为度量标准,选择出拥有最大增益率的属性作为当前分裂属性,并按照此方法继续计算得到树中各个分支节点的分裂属性,最终构建出整个决策树分类器模型。
2)贝叶斯分类器
朴素贝叶斯算法假设各个分类的条件相互独立,即分类的结果中不会出现同属于两类以上样本的情况。通过分类项对待测样本进行分析,并分别计算出该样本可能出现在这些分类中的概率,最终选取最大概率的分类项作为该样本的归类结果[14]。其算法可描述为
(1)设某待测样本有m 个属性,可采用m 维特征向量来描述,即:W={w1,w2,…,wm},其中wi为W的特征属性集中一个属性,同时设类别个数为n,同样采用向量形式表述为C={y1,y2,…,yn},同理yi为其中某一种类别。
(2)针对该特征向量,计算其在C 中每个yi项中出现的条件概率,如式(11)所示:
(3)针对一个待测样本W,若有P(yk|W)=max{P(y1|W),P(y2|W),…,P(yn|W)},则W ∈yk。
通过以上的三个步骤来对待测URL 执行特征提取操作,即可将该URL 的结构特征和敏感词特征进行有机结合,从而形成多维特征向量,并按照式(11)给出的方法分别计算出不同类别对应的出现概率,完成贝叶斯分类器的训练任务。
3)SVM分类器
SVM 机制是一种典型的二元化分类方法。其基本思路是构造一个最优化的分类超平面,记为ω ⋅x+b=0,并按照该平面将样本群分为两类,保证这两类样本与超平面之间的最小距离之和最大,从而凸显两类样本之间的区分,而确定最优超平面的过程也可转化为求解带约束条件函数的最优值的过程[15]。引入Lagrange乘子,如式(12)所示:
上式中的εi为方程的误差约束条件,C 为惩罚系数,对上式求解可得式(13)和式(14):
结合以上两式可得分类决策函数如式(15)所示:
当分类决策函数f(x)=+1 时,则判定该URL 正常;当f(x)=-1 时,认定该URL 将指向含有恶意内容的页面。
3.2 多分类器投票模型
在完成了以上三种分类器的训练之后,下一环节即是结合三种分类结果进行综合评价,并最终给出对待测URL 是否具有恶意内容的检测结论。目前常用的投票表决方式往往采用“一人一票”的原则,并没有很好地考虑到不同分类器的运行特征,也没有充分兼顾到各种检测场合对分类器的适应程度,以及不同类型的样本对分类算法的侧重差异,由此导致各种分类器在结合检测时易出现相互冲突的问题,从而影响到最终检测结果的可靠性[16]。本文提出采用构建混淆矩阵的方式对每个分类器的识别情况进行综合解析,并据此得到最终的组合结果,从而显著提高了检测结果的识别率和置信度。
首先根据每个分类器针对大规模样本群的分类结果,构建对应的混淆矩阵,假设有K 种不同的分类器,则其识别结果统计情况如式(16)所示:
根据式(17)可以求得分类器ek针对来自第i类样本Ci检测的结果为Cj概率为
当混淆矩阵CMk规模足够大,包含的样本信息足以反映其所对应的检测空间的概率分布时,则可根据ek的检测结果将CMk引入到投票机制中,作为先验知识,起到重要的参照效果,即以条件概率P(x ∈Ciek(x)=j)作为投票表决时的得票数,而某一分类项目Ci最终得票数可通过式(19)计算得出。
将各个分类器的识别性能作为先验知识参与到投票机制中,同时考虑到不同的检测环境对于表决阈值设定环节的影响,设计出的投票表决机制如式(20)所示:
上式中的Tj即为表决阈值,该参数可根据待测对象的不同,通过以下方法训练得到。
首先为Tj赋初始值:
其中Nj为Cj类型包含的样本规模。在训练过程中,若类型实际为Cz的某个样本x被多分类器投票表决判定为Cj类,且z ≠j ,则需要对Tj的值进行修改,可分为以下两种情况:
1)若j=M+1,则表明对x 无法识别,则修正值ΔTj如式(22)所示:
2)若j≠M+1,则表明检测结果出现偏差,则修正值 ΔTj如式(23)所示:
以上两式中的α 和 β 分别为学习步长,且均为大于0 的常数。为了保障检测机制的稳定性,可使α 和β 在每轮训练中单调减少,从而合理控制因调整阈值而带来的对检测结果的波动影响。
3.3 检测模型的设计
以多分类器投票机制为核心,借助威胁情报平台提供的信息支持,本文设计的针对恶意URL 的主动检测模型框架如图2所示。
图2 恶意URL检测模型
该方案的具体执行流程主要包括以下几个步骤。
Step1:首先从威胁情报平台中调取URL 信息库,并将待测URL 与该库中保存的信息进行比对,若存在该URL 的信誉度,则可直接据此判定其是否指向存在恶意内容的页面,结束检测并输出判定结果,否则执行Step2;
Step2:对待检测的URL 提取结构特征,并根据表1比对其是否具有恶意URL常用的敏感词特征;
Step3:通过威胁情报平台提供的大量信息训练决策树分类器、贝叶斯分类器和SVM 分类器,并将取得的特征值组成特征向量,置于三种分类器中进行检测;
Step4:通过威胁情报库中的大规模数据对投票机制进行训练,得出符合恶意URL 检测需求的阈值,并分配各个分类器的权重,据此得出最终组合检测的表决结果;
Step5:输出检测结果,同时将该结果传输至威胁情报平台,实现对URL信息库的扩充与更新。
4 结语
本文围绕恶意URL 的检测需求,对目前存在的检测方法进行了研究,剖析了目前的主流方法-黑名单机制和机器学习方法各自存在的不足之处,提出充分利用威胁情报平台的数据资源,在提取了URL的结构特征和敏感词特征的条件下,结合多种分类器各自的优势,并通过权重可调节的投票机制构建组合检测模型的设计思路。分别研究了决策树分类器、贝叶斯分类器和SVM 分类器各自的特性,借助威胁情报平台的大规模数据,构建了基于混淆矩阵方法的投票表决模型,并同时将检测结果反馈回威胁情报平台,实现了对信息库的自动更新。