多策略网页恶意代码检测算法的实现
2021-03-06张小萍黄海明
张小萍,黄海明
(广西大学 计算机与电子信息学院,广西 南宁 530004)
0 引言
信息时代由恶意代码引起的网络安全事件在网络安全事故中占据了很大的比例,但是针对这些恶意代码的检测技术却不能在很短的时间内发明出来,这就导致了恶意代码有机会在短时间内会造成了巨大的损失[1].尽管目前已有很多专家、学者对这方面做了大量研究,但是恶意攻击者技术也在不断提升,为躲避现有的检测方法的检测,他们编写的恶意代码越来越复杂,种类繁多,代码变异速度超过专家、学者提出检测方法的速度.在这种情况下,恶意代码仍会严重威胁着广大网络用户的电脑安全.
1 网页恶意代码
网页恶意代码就是指通过利用计算机的安全漏洞来执行网页内的ActiveX或者JavaScript脚本来达到某种恶意目的的代码.当这些恶意代码不小心被用户触发时,会造成用户主机可能会被入侵,系统中的资源可能会被盗取、删除,或系统注册表设置及程序配置被强制修改等危害[2].网页恶意代码编写者通过把代码插入到网页并发布出去传播.当有用户主动或者被动地访问这些恶意网页,网页里的恶意代码就可以利用用户浏览器的漏洞来植入病毒[3].根据近些年网页恶意代码的发展来看,它具有变化快,种类繁多等特点,因此防治网页恶意代码是一项长久的任务.
2 网页恶意代码攻击过程
通常恶意网页是采用被动攻击的模式在网上传播和实施攻击的[4].首先攻击者会绞尽脑汁、想法设法地获取服务器的控制权,方法有SQL注入、跨站脚本攻击(Cross Site Scripting)、利用服务器漏洞等.成功获取服务器控制权后,攻击者就可以在服务器上的网页中植入编写好的JavaScript恶意代码或者
1.用户访问服务器上已经被嵌入恶意代码的网页.
2.服务器收到用户请求后返回用户想访问的网页.
3.由于返回的网页已经被恶意攻击者嵌入了恶意代码,所以用户浏览器有可能会遭到攻击,或者网页经过重定向最终跳转到攻击者事先设好的恶意网页.
4.用户访问到包含恶意代码的恶意网页.网页对用户的系统环境进行检测,查看是否有漏洞可利用,从而实施攻击.
5.如果漏洞触发,攻击者就可以拿到用户计算机的控制权,任意做他想做的事情.
3 分类算法简述
3.1 支持向量机
支持向量机(Support Vector Machine,SVM)[5]是一个基于统计学习理论的经典的分类算法,由Corinna Cortes和Vapnik等人在1995年首先提出的.它是通过一种非线性映射,把样本数据从较低维映射到一个更高维的特征空间中,然后在高维空间内建立一个最大间隔超平面,分隔开不同类型的数据.
图1 支持向量机分类图
如图1所示,在这个二维的特征空间中,不同类别的样本被分隔在边界的两边.所以确定好决策边界就可以解决对样本分类的问题,即边界f:wx+b=0的问题.针对这个边界函数,如果我们确定了向量w和参数b,那边界f也可以确定,那样本分类的问题也将迎刃而解.所以支持向量机的分类难题在于寻找决策边界.
在特征空间中,决策边界往往不止一个,有可能有很多个,它们可能是相互平行的,也可能是不同方向的边界,为了尽可能保证对样本进行准确的分类,SVM要找出最佳的分离决策边界,这个边界要使得样本之间的边缘(margin)最大,从而达到更好的分类效果.
在支持向量机中,决策函数也被称为核函数.整个训练过程,除了提高训练效果之外,其实就是在确定一个最佳核函数,使模型达到最好的效果.
3.2 朴素贝叶斯
贝叶斯分类算法,是一类运用概率统计知识来分类的算法,其中较为经典的贝叶斯分类算法是朴素贝叶斯算法.朴素贝叶斯分类算法假设一个类中的各个特征之间互不影响、相互独立,即特征A是否存在与特征B、特征C等等其他特征是否在都无关.实际情况这样的设定通常很难成立.所以为了保证分类的准确率,就有了一些降低属性之间依赖关系的贝叶斯分类算法.
在朴素贝叶斯分类算法中,所有样本被设为用一个n维特征向量X来表示(其中X=x1,x2,x3,…,xn),这些数据样本可分为m个类,为C1,C2,C3,…,Cm.当预测一个新的数据样本X时,若这个分类方法将它标记为Ci,则表示X被分到i类时具最高后验概率,如公式(1)所示.
P(Ci|X)>P(Cj|X) 1≤j≤m,j≠i
(1)
根据贝叶斯定理,P(Ci|X)的计算方法如公式(2)所示.
P(Ci|X)=P(X|Ci)·P(Ci) /P(X).
(2)
在给定预测数据样本后,P(X)是常数,对数据样本分类不会有影响,因此要得到最大的P(Ci|X)就只需要计算出最大的P(X|Ci)·P(Ci)就行了.其中,P(Ci)和P(X|Ci)的计算方法分别如公式(3)和(4)所示.
P(Ci)=Si/S
(3)
在(3)式中,S为数据样本总数,Si为属于类别为Ci的数据样本数.
(4)
根据(4)可以计算出数据样本最终属于哪一类的概率.属于哪一类的概率比较大,最终数据样本就会被归类为哪一类.比如我们现在的网页恶意代码检测,含恶意代码的概率大于不含恶意代码的概率,那么被测网页就会被归类会恶意网页,反之归类为正常网页.
3.3 神经网络
人工神经网络(Artificial Neural Network,缩写ANN),简称神经网络(Neural Network,缩写NN)或类神经网络.它被用于对数据进行预测和分类,对有干扰能力的噪点数据具有很好的适应能力.
图2 神经网络示意图
人工神经网络模型大多为BP网络(Back Propagation Network,BP),一种反向传播学习算法.如图2所示,是一个三层神经网络,每一层都是由一些神经元构成的.除了输入层之外,它还有隐含层和输出层两层处理单元.当然一个神经网络模型不一定如图示一样只有一层隐含层,它可以有更多层隐含层.
该神经网络是向前反馈的,当输出层或隐含层收到反馈时,如果效果还未达标,就会修改权重来继续训练.通过不断收到反馈,对修改权重来减少误差,最终达到训练效果,完成学习任务.
4 多策略算法检测工作流程
检测网页的整体工作流程具体步骤如下:
1.接受待检测网页源代码文件.
2.使用正则表达式对网页源代码处理,提取