webshell网站恶意代码检测的算法介绍

常用的网页恶意代码检测算法有三种:向量机、简单贝叶斯和神经网络。三种算法的检测效果不同,需要根据网页的安全管理要求进行选择。

outputo-20211015-100047-583-knut.png

(1)支持向量机。

支持向量机是一种常见的分类算法,广泛应用于恶意代码检测。该算法最早提出于1995年,由Vapnik等人设计。其原理是利用统计学习理论,采用非线性映射,将样本数据从低维映射到高维特征空间,在高维空间中构建间隔超平面,实现各类数据的有效分离。支持向量机的决策函数,又称核函数,只有在使用支持向量机的过程中确定最佳核函数,才能达到最佳的模型效果。


在支持向量机的二维特性空间中,边界两侧是各种类型样本的分隔。管理者可以通过确定决策边界来解决现有的样本分类问题,即f:w+b=0的边界问题。在边界函数中,如果可以确认向量w和参数b,可以确定边界f,解决分类问题。然而,在支持向量机的特征空间中,往往有许多平行或不同方向的决策边界。为了保证样本分类的准确性,SVM需要获得最佳的分离决策边界,以最大化样本边缘和最佳分类效果。


(2)朴素贝叶斯。

简单的贝叶斯是贝叶斯分类算法的算法模式之一。该算法基于概率统计理论,通过假设类别中的特征是独立的,相互不影响来确定数据样本的分类。但现实中,朴素贝叶斯设定的特征A、B、C的存在很难相互关联,因此一般采用减少属性依赖的方法来提高朴素贝叶斯的分类准确性。具体方法是将所有数据样本设置为n维度特征向量X表示,即X=1,2,3,4..,所有数字。根据样本可以分为m类,即C1、C2、C3、C4...Cm.在网页安全管理中,管理人员预测到新的数据样本X,并根据简单的贝叶斯分类方法将新的数据样本标记为Ci,表示X被分为I类,此时新的样本。数据具有最高的后验概率。


检测恶意代码的算法构建,检测恶意代码的算法以上述三种算法为基础,采用区块链技术,增加账户数据和本地访问。在区块链类型中,访问以哈希值的形式存储在块数据中。同时,由于块头上增加了账户根部,Time是时间戳,是矿工采矿的时间记录,Nonce是矿工计算的不超过要求值的哈希值,是矿工完成工作量的证明。从区块数据结构可以看出,在区块链中,PrevBlockHash是以前整个区块数据哈希运算后得到的哈希指针。这个哈希指针从结构中的前块指向后块,所以后块保留了前块的哈希值,也就是说每个区块都会保留上一块的哈希值,从而形成链结构。同时,轻型区块链也不可篡改。


因为下一个块需要记录上一个块的哈希值,如果任何一个块的前区块数据发生变化,就会引发数据冲突,后区块的PrevBlockHash会检查前区块的数据,避免访问中的数据错误。利用这种逐层计算访问哈希值的方法,检验访问本身的合法性。在运行区块链时,操作人员只需要计算访问中需要计算的访问数据和该区块中的其他访问。当发现疑似非法信息时,获取网页的源代码文件,然后进行检测。三种算法将使用正则表达式处理网页的源代码,提取两个标签之间的代码:iframe>和script>,并对提取的代码进行词频统计和词频量化,从中获取特征。获取特征后,用训练模型对网页进行分类,确定网页是正常网页还是恶意网页。当网页被三种算法中的两种认定为正常网页时,说明网页没有恶意代码。如果至少有两种算法认定网页是恶意网页,说明网页有恶意代码。


分享: