贾 丽,王 冕
(1. 桂林信息科技学院信息工程系,广西 桂林 541004;2. 桂林电子科技大学,广西 桂林 541004)
互联网时代下,客户端软件类型逐渐增多,在给人们带来便捷性的同时,网络安全问题也成为制约其发展的因素。其中,病毒数量的剧增导致传统病毒防御方法无法及时检测和防御,对客户端的安全造成严重威胁。现阶段360安全卫士、腾讯管家等提出了一些防御模式。例如,防火墙是最早的防御工具,能够结合通信需求设计启发规则,若数据满足规则要求则允许通过防火墙,反之被阻挡。杀毒软件是较为主流的防御方法,根据互联网中存在的病毒基因特性对当前数据进行识别,判断是否存在病毒,并及时将威胁清除。在流量增多的条件下,上述两种方法的性能会有所降低,为进一步改善杀毒能力,引入包过滤技术,采用迭代规则对数据包源头进行分析,判断每个协议内容,提高杀毒性能。但上述防御策略均属于被动模式,需等到病毒暴发后才能启动杀毒软件,这样会造成客户端部分数据遭到破坏,严重时数据会丢失,带来不可估量的损失。
基于此,相关学者进行了大量研究。芦天亮[1]等人将密码算法应用在病毒防御中。将病毒加壳、通信加密与加密勒索三种技术相结合,结合经典案例确定加密算法与病毒攻击流程,针对加密恢复提出对应的防御对策。蔡星浦[2]等人将多阶段博弈理论应用至网络攻击防御中,对电力网络中的虚假信息注入攻击行为进行分析,根据分析结果,设计一种多阶段动态防御方法对攻击方与防御方进行多阶段防御。然而上述方法当病毒种类较多时,防御性能受到影响,不能准确判断出数据包的合法性,存在病毒检测漏报率与误报率较高的问题。
随着人工智能技术的进步,针对机器学习的病毒检测受到广泛关注。为此,本文利用一种人工智能算法来实现互联网客户端病毒防御。将机器学习方法用在病毒检测中,能够精准地发现恶意病毒,因为该方法可从已有的数据中提取关联模式,再通过这些模式进行相似性查找,及时发现有类似特征的病毒,并对其阻止,提高了客户端网络安全。
由于客户端数据量较大,会生成极大的运算量,因此在进行分类训练之前需对其进行预处理,也就是特征提取。特征提取的主要作用是确保决策与条件属性在相互依赖关系[3]不变的情况下,实现决策表约简,达到特征向量降维的目的。
本文利用Gain-Ratio方法进行特征提取,已知编码集合S,在信息论中对S的熵可描述为:熵能够体现出S中某成员分类所需的进制位数。例如P+为1,客户端可得知样本为正,因此无需发出消息,这时熵值等于0;若P+为0.5,则需通过二进制位表明样本为正还是负。因此,S的熵值可通过下述公式表示
(1)
测试当某个特征A减少时,造成的熵减少程度为IG(S,A),通过该值判断A的信息涵盖量[4],计算公式如下
(2)
公式中,E代表信息增益,V代表包括特征A的全部可能取值。
如果通过信息增益来判断属性的重要程度,选取重要的属性添加到集合中,则该属性集合即为决策系统的约简。
IG体现出特征值具有多样性,所以属性集合中的特征向量存在高互异性。为避免此种现象,综合考虑特征向量存在的信息量GR,得到如下公式
(3)
(4)
式中,Si代表集合S内,特征值为d的特征子集。利用上述方法即可实现数据的降维处理,获取病毒数据的特征。
贝叶斯分类是人工智能领域的有效手段,可以很好地解决分类问题,根据上述提取的特征向量,通过构建贝叶斯网络,即可学习特征向量分布,进而实现准确分类。
贝叶斯网络分类器的实质是对某变量遵循的概率分布特征进行表示。其模型可描述为:假设U={X,C}表示变量有限集合,且X={X1,X2,…,Xn}为属性变量集合,其中,C指变量,取值区间是{c1,c2,…,cn},xi代表属性Xi的取值,也是ci的概率,则根据贝叶斯理论能够得出
=αP(cj)P(x1,x2,…,xn,|cj)
(5)
式中,P(cj)代表类cj的后验概率[5],P(x1,x2,…,xn|cj)则为类cj有关xi的似然,α属于正则化因子。结合概率链式规则得出
P(cj|x1,x2,…,xn)=αP(cj)P(x1,…,xi-1,xi+1,…,xn,cj)
(6)
已知训练样本集合为D={u1,u2,…,uN},分类的最终目的是对该集合进行分析,并找出映射函数[6]f:(x1,x2,…,xn)→C,确保对所有未知类别xi=(x1,x2,…,xn)设定标签。引入贝叶斯算法中的最大后验定理,已知某个类别xi=(x1,x2,…,xn),选取后验概率P(cj|x1,x2,…,xn)最大当作该类别标签。
通过贝叶斯网络进行分类的实质就是利用该网络对式(6)进行求解,为获取P(x1,…,xi-1,xi+1,…,xn,cj)的值,需明确变量集合的条件概率分布。如果U={X1,X2,…,Xn}是构成贝叶斯网络的概率分布编码,其二元组形式描述为B=(G′,Θ),G′为某节点上与变量X1,X2,…,Xn相对应的有向无环图,有向边体现着不同变量存在的关联性;二元组中的Θ表示概率分布集合,其中的任意一个元素均代表在pa(xi)∈Pa(Xi)条件下全部可能出现的概率。Pa(Xi)为Xi在G′内的变量集,pa(xi)是集合Pa(Xi)中的某个元素。则网络B在U中存在唯一的概率分布
(7)
因此,通过贝叶斯网络学习可描述为:在已知定义在U上的样本集合D=(u1,u2,…,uN),找出与D匹配度最高的网络B。
若将上述贝叶斯网络模型直接用于病毒检测中,其特征独立性的要求有时将无法满足。为此,本文对其改进,建立一个新的病毒检测模型。
变体公式[7]确定:如果F′与F′′分别代表不相交的特征子集,结合贝叶斯变体表达式得出
(8)
(9)
以上变体表达式能缩小独立性假设范围,且确定F″为限制特征子集合。
规则匹配度[8]:若R={R1,R2,…,Rr}表示规则集合,F={F1,F2,…,Fn}是病毒数据的特征集合。则任意一条规则Ri的特征集合表示为RFi={Fi1,Fi2,…,Fim}。将规则和病毒的匹配程度当作病毒在Ri中存在的特征数量:num(RFi∩F)。因此和病毒匹配性最强的规则Ri符合下述要求
(10)
通过上述的改进,基于贝叶斯分类器的病毒检测过程如下:
步骤一:选取训练样本,对其执行贝叶斯算法,获得规则集合R;
步骤二:在集合R内找出符合病毒分类的相关规则,并利用此规则完成病毒分类;如果没有找到规则则进行步骤三;
步骤三:在集合R内找出和待分类病毒相似度最高的规则Rk;
步骤四:确定待分类病毒在规则集合内具有的特征集合F″;
步骤五:将F″包含的样本当作贝叶斯训练样本,再使用式(9)完成病毒检测。
图1为客户端病毒防御架构图。
图1 客户端病毒防御架构图
结合病毒防御架构图可知,当完成最为关键的病毒检测程序后[9],如果发现有病毒入侵,防御模块会及时阻断入口端口,同时也不会接受任何服务请求。在防御机制的设计中,若攻击依旧存在,则流表项[10]会有很高的命中率,这是由于每个病毒均会命中流表项。本文通过计算命中率,再将该值和合法数据流的流表项对比,进一步达到防御目的。完整的防御过程如下:
步骤一:遍历全部合法数据流产生的流表项,利用下述公式获取平均命中率。
(11)
步骤二:利用下述公式获取被禁止的流表项命中率
(12)
(13)
式中,λ为设置的合理阈值。
假设入侵者以速度p1传输病毒数据包,入侵时间为t1,而合法用户以p2的速度传输数据包,且自病毒入侵后需要时间t2完成端口恢复。结合这一假设,将式(13)变换为式(14)
(14)
再将式(14)进行简化处理
(15)
通常而言,若客户端网络对时间较为敏感,则将λ值设置的较大,以此减少防御时间;若网络是相对安全敏感的,则该值应设置的较小,最大程度确保网络安全。
为了使仿真更具说服力,在实验中引入多种类型病毒,病毒名称与攻击原理分别如下。
端口扫描病毒:向客户端主机的所有端口均发送病毒数据包,判断端口是否开放,如果处于开放状态则向其注入病毒。
IP扫描病毒:寻找目标网络,并向其发送病毒数据包,以此确定哪个目标可以被攻击。
Smurf病毒:向目标主机发送伪造地址,此时主机需对虚假源主机进行回复,导致不能及时处理合法数据包。
Neptune病毒:向客户端发送虚假报文,主机需对每个报文进行确认,造成大量端口被非法占用。
Apache2病毒:服务器接收大量请求,降低服务器处理速度,甚至消耗全部资源。
病毒检测是病毒防御的重中之重,检测结果直接影响病毒防御效果。在仿真进行到第20分钟时向客户端同时注入端口扫描病毒与Apache2病毒。此外,在实验40、70与90分钟时,分别注入IP扫描病毒、Smurf病毒以及Neptune病毒。利用密码算法、多阶段博弈理论方法与本文方法进行病毒检测,得到的检测结果如图2所示。
图2 不同方法病毒检测结果对比图
由图2能够看出,共向客户端发送了五种类型病毒,本文方法并没有检测出端口扫描病毒,而是在同一时间检测到了Apache2病毒;密码算法检测出了除Apache2病毒之外的所有病毒。但是经过对端口扫描数据包的分析得出,此种病毒每秒只能触发一个小数据包,不能对客户端造成实质性危害。相比之下,Apache2病毒的危害性更强,能够在释放连接时造成非法信息大量爆发。因此,表明文本方法可以分清主次,对危害性较强的病毒可优先检测、优先处理。
本文将漏报率与误报率作为性能评价指标,并使用混淆矩阵来实现性能的可视化描述。该矩阵的每一列表示预测标签,行代表真实种类标签,其实质就是对所有类标签的结果作出统计与分析。本文构建的混淆矩阵如表1所示。
表1 混淆矩阵表
表1中,Positive表示正元组,是某种特定的病毒数据,Negative是负元组,指病毒数据之外的其它样本数据。此外,TP与TN分别表示被正确分类的正样本与负样本;FP指负样本被分类成正样本,FN则是正样本被分类成负样本。
如果在仿真中对三种不同方法进行相同次数的测试,利用这些数据对测试结果进行分析,并通过误报率FAR与漏报率MAR两个指标进行体现,得到的测试结果如图3和4。其中误报率是指算法是否能够让合法数据包顺利执行,漏报率表示该算法能否成功防御所有病毒入侵。
(16)
(17)
图3 不同方法误报率测试结果
图4 不同方法漏报率测试结果
由图3和4可知,随着病毒类型的增多,三种方法的误报率与漏报率均呈现出上升趋势。而本文算法在多项指标中均表现突出,并没有出现大幅度上升。这是因为贝叶斯机器学习分类方法通过有效的学习过程,构建了最优分类网络模型,同时设置合理的规则匹配度,使病毒数据特征与实验数据能够很好地匹配,只有提高病毒检测精度,才能从根本上提高病毒防御能力。
互联网飞速发展的同时,病毒入侵方式也日新月异,已经严重影响客户端网络的安全运行。再加上互联网的开放性与多样性,网络安全已经引起人们重视。为此,本文运用人工智能中的贝叶斯机器学习方法对病毒进行防御,同时通过实验证明该方法能够全面检测出病毒类型,有效提高客户端网络安全。但实验中的训练样本有限,该算法对病毒的判断还需进一步提高,在今后研究中增加样本数量,使分类模型广泛涵盖病毒类型,提高算法的推广性。