基于机器学习的Web应用入侵威胁检测–蓝队云

随着移动互联网的蓬勃发展,Web应用已经广泛深入各行各业。针对Web应用的攻击已成为企业面临的主要安全问题之一。面对日益增加的Web应用攻击,传统基于规则的安全产品难以实现对未知威胁的拦截,且随着规则的逐渐增加,将严重影响安全产品的性能。因此,研究多分类检测模型,实现模型对威胁数据的识别检测,并通过模型优化及真实环境数据进行对比验证。结果证明,基于随机森林及lightGBM算法构建的多分类模型,在多分类模型的评估指标上优于基于SVM的多分类检测模型,能够达到理想的检测效果。

近年来,随着移动互联网的蓬勃发展,Web应用已经广泛深入各行各业,承载着各大公司的关键、核心业务。现阶段,Web应用已成为网络安全攻击的主要目标。为了应对威胁攻击,传统基于规则的安全防护产品起到了至关重要的作用。但是,随着Web应用及组件漏洞的逐渐增加和攻击方式的逐渐演进,传统基于规则的安全产品难以实现对众多已知及未知威胁的有效拦截。所以,研究、探索新一代检测技术已经成为各大安全公司及科研究机构的重点研究内容。本文主要基于机器学习对Web应用入侵检测技术进行研究,构建了多分类Web应用入侵威胁检测模型,包括基于随机森林的多分类检测模型、基于lightGBM的多分类检测模型及基于SVM的多分类检测模型,并通过实验对比了3种不同机器学习算法的多分类检测模型。结果证明,基于随机森林及lightGBM算法构建的多分类模型,在多分类模型的评估指标上优于基于SVM的多分类检测模型,能够达到理想的检测效果。

一、国内外研究现状

Web应用的飞速发展,极大地方便了人们的日常生活,已经成为互联网时代最重要的基础设施之一。Web应用在给人们带来巨大便利的同时,也伴随着不可忽视的安全风险。用户爆炸性增长,使得新威胁和攻击不断出现。大量网站遭受攻击、用户数据泄露,给企业与用户造成了严重影响。Web应用入侵安全问题已成为企业面临的重要问题。

现有基于规则的Web应用入侵威胁检测、防护产品都存在误报率、漏报率高等问题,主要原因在于威胁在不断演进,但威胁规则更新不实时,无法抵抗0day漏洞攻击。

综上所述,将机器学习应用于Web应用威胁检测,国内外均有大量的研究基础。可见,将机器学习技术融入安全防护产品是威胁检测发展的必然趋势。

二、机器学习算法及特征工程

1.机器学习算法

随机森林

随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。通过组合多个弱分类器,最终结果通过投票或取均值使得整体模型的结果具有较高的精确度和泛化性能。随机森林算法模型,如图1所示。

图1随机森林算法

随机森林构建过程如下。

(1)随机抽样,训练决策树。N个样本的样本集,有放回地抽取N次,每次抽取1个,形成一个有N个样本的样本集,用来训练一个决策树,作为决策树根节点处的样本。

(2)选择节点分裂属性。当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,m应远小于M,然后从这m个属性中采用某种策略(如信息增益)来选择1个属性作为该节点的分裂属性。

(3)重复步骤2,直到不能分裂。决策树形成过程中每个节点都要按照步骤2来分裂。如果下一次该节点选出来的属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,不再继续分裂。需要注意,每棵树都会完整成长而不会剪枝。

(4)将生成的多棵分类数组成随机森林。如果是回归问题,则最后的输出是每个树输出的均值;如果是分类问题,则根据投票原则,确定最终的类别。

LightGBM

LightGBM(LightGradientBoostingMachine)是微软开源的实现GBDT算法的框架,支持高效率的并行训练。梯度提决策升树(GradientBoostingDecisionTree,GBDT)是一种基于迭代所构造的决策树算法,既可以做回归也可以做分类。它以分类回归树(ClassificationandRegressionTrees,CART)模型作为弱学习器,将新学习器建立在之前学习器损失函数梯度下降的方向,通过不断迭代来训练模型。迭代过程中,每一轮预测值和实际值有残差,下一轮根据残差再进行预测,最后将所有预测相加作为最终结论。因此,GBDT可以表示为决策树的加法模型,如式(1)所示:

式中,表示决策树,为决策树参数,M为树的个数。根据向前分步算法,第m步的模型可以表示为:

设定为第i个样本的真实值,为第i个样本的预测值,取损失函数为平方损失,那么损失函数可以表示为:

根据式(4)极小化损失函数可得到参数:

通过多次迭代,更新回归树可以得到最终模型。LightGBM使用基于直方图的分割算法取代了传统的预排序遍历算法,不仅在训练速度和空间效率上均优于GBDT,还能有效防止过拟合,更加适用于训练海量高维数据。

支持向量机

支持向量机(SupportVectorMachine,SVM)是在分类与回归中分析数据的机器学习算法。

SVM通过寻找一个满足分类要求的最优分类超平面,将实例表示为空间中的点。最优超平面将实例明显地间隔分开,通过判断实例在超平面的哪一侧来预测所属类别。理论上,SVM可以实现对线性可分数据的最优分类。

除了进行线性分类之外,SVM还可以使用核技巧将原空间的数据映射到高维特征空间,然后在高维特征空间进行线性分类模型训练,从而有效实现非线性分类。

2.特征工程

特征处理训练机器学习模型的数据集由于数据量通常很大,会存在数据不全(缺失值)、数据重复(冗余数据)及数据错误(异常值)等问题(如收入-15元,或身高1688cm)。

(1)缺失值可以采用局部数据的线性插值法进行补缺或使用一个全局常量或属性的平均值填充空缺值。如无法填充,则可考虑进行忽略。

(2)冗余数据数据集中的冗余数据,可以采用对数据去重、删除冗余的方式。

(3)异常值数据集中存在的错误数据,可以根据已有数据的规律及数据类型的特点进行修改,或者采用将错误数据移除数据集的方式。

特征提取

对于文本特征的处理国内外研究很多。罗燕等人针对词频-逆向文件频率(TermFrequency-InverseDocumentFrequency,TF-IDF)提取特征效率低、准确性差的问题,提出了一种基于词频统计的关键词提取方法。实验结果表明,基于词频统计的关键词提取方法的精确率、召回率等指标方面均优于传统的TF-IDF算法,且能提高关键词提取的效率;庞剑锋等人利用向量空间模型对3种分类方法进行研究,提出了文本分类系统模型。

本文对于特征提取方法采用TF-IDF模型,是一种用于信息检索与数据挖掘的常用加权技术。

逆文本频率(InverseDocumentFrequency,IDF)反映了一个词在所有文本(整个数据集)中出现的频率。如果一个词在很多文本中出现,那么它的IDF值应该低。反过来,如果一个词在比较少的文本中出现,那么它的IDF值应该高。常见的词如“是”“或”“好”等,IDF值应该低。如果一个词在所有的文本中都出现,那么它的IDF值为0。

TF-IDF的计算方式如下。

TF计算公式:

式中,是在某一文本中词w出现的次数,N是该文本总词数。

IDF计算公式:

式中,Y是文档总数,是包含词条w的文档数.需要说明的是,分母加1是为了避免w未出现在任何文档中从而导致分母为0的情况。

TF-IDF的是将TF和IDF相乘,即:

从以上计算公式可以看出,某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

三、威胁入侵检测模型构建

Web应用入侵通常通过在URL上构建恶意文本的方式进行,因此本文根据Web应用入侵的文本特征构建了基于TF-IDF特征提取的随机森林、LightGBM及SVM多分类模型。通过优化并比较3个模型,结合生产环境及搜集的开源数据,对3个模型进行优化及验证。通过多分类评估指标进行评估,可得出各模型的分类效果。

构造本研究中所提出的模型需要经历多个阶段的处理,包括数据集的收集及预处理、特征的提取和选定、机器学习模型的训练及模型的参数调优等。

1.数据收集及特征工程

(1)正常数据集搜集通过网页爬虫,选定某几个网站,对网站进行访问,爬虫自动获取网站访问的URL链接,以此作为正常访问数据;搜集生产系统中通过WAF访问并标记为正常的日志,提取访问URL。

(2)异常数据集搜集通过开源数据集进行搜集;搜集生产系统中通过WAF访问并标记为异常的日志,提取数据URL链接;基于开源软件生成。

总体训练数据包含7种类型,分别为XSS、SQL注入、LFI、命令执行、目录遍历、RFI以及正常的流量样本数据,数量如表1所示。总体搜集数据量为286951条。

表1训练数据类别及数量

特征工程

对搜集到的数据进行统一的格式化处理,以便能够进行特征工程。

正常数据。爬虫获取的数据,为单个URL完整的连接,因此需要对URL进行处理。根据URL的组成结构,恶意payload不会存在于protocol协议部分、hostname主机地址以及port端口部分(或域名)。所以,对于URL数据,只需提取URL中的path及parameter部分即可。将提取的结果逐行存储为json格式,并将文件命名为normal,作为正常数据的标签。WAF访问日志需要分析日志格式,批量进行日志筛选,提取WAF标记为normal的日志数据,再将日志数据中GET请求的URL(包含parameter)进行切分处理并存储于normal文件。如果为POST请求,则分别提取URL和parameter中的数据,存储于normal文件。

异常数据。开源数据集,根据数据集单条数据的标签对数据进行提取分类。不同标签数据类型存储于不同的文件,如sql.json。单条数据格式同样存储为json格式,以便模型提取训练。WAF访问日志筛选标记为攻击的数据,提取日志中attack字段,即为异常payload。同样,按照开源数据集的处理方式进行存储。开源软件生成,根据不同的开源软件类型生成的payload,按照异常数据类型进行存储。

(1)数据预处理

①异常值处理。删除训练集中所存在的空数据及其他异常数据。

②数据变换。Web攻击通常会存在变换Payload大小写、添加空字符、URLhtml编码以及base64编码等操作,以试图绕过安全防护产品的检测。所以,为了使机器学习模型能够达到更好的识别能力,需要将搜集的训练集中的数据进行变换操作,包括将每一条数据中的内容统一转为小写字符、解析样本数据中的URL编码、对html转义字符进行处理以及将样本中出现的数字统一替换为0等。字符类型的标签数据转换为数值类型,如标签为[xss,sqli,os_command],转换后为[0,1,2]。

以XSS为例,其他类型样本的处理流程一致,原始样本如下:d%3D375%22%3E%3Cscript%3Ealert%281337%29%3C/script%3E原始样本依次执行以下处理。

(1)样本转小写处理:id%3d375%22%3e%3cscript%3ealert%281337%29%3c/script%3e

(2)解析样本数据中的URL编码以及进行html转义字符处理:id=375">

(3)将样本中出现的数字统一替换为0:id=0">

(4)处理URL中的Schemes和地址等无效信息:示例样本无Scheme输出结果无变化

(5)字符类型的标签数据转换为数值类型:本样本标签是XSS,将标签“XSS”编码为0,作为模型训练的标签。经过数据预处理后的样本变为以下形式,如表2所示。

表2特征变换结果

③数据去重。经过异常值处理及数据变换后,存在部分冗余数据,如上一步示例中的处理结果。因此,需要对整个数据集数据进行去重处理。

(2)特征提取本文研究的内容为文本数据特征提取,包含样本分词、分词后的ngram处理及tfidf转换。

①样本分词。将样本数据以‘char’的粒度进行分词处理,如id=0&age=0分词后为,i,d,=,0,&,a,g,e,=,0。②Ngram处理。将分过词的样本进行ngram处理。ngram中n的取值范围是(1,2),n为1表示每条样本中分好的词不考虑前后组合,转换后,i,d,=,0,&,a,g,e,=,0的形式保持不变。n为2表示样本中分好的词进行前后相邻的两两组合,如i,d,=,0,&,a,g,e,=,0,处理后为id,d=,=0,0&,&a,ag,ge,e=,=0。ngram和分词的方法已封装在sklearn库中。

③tfidf转换。tfidf用于将非结构化的数据转换成结构化的数值矩阵。样本数据经过分词、ngram处理后进行去重,得到一个不重复的词集,在不限制特征数量的情况下,将词集中每个词作为一个特征形成一个词向量空间。每篇文档都会转化成一个向量,向量的维度等于词集中词的数量。假如有10000个文档,处理后有2000个不重复的词。这些文档将会转换成一个10000×2000的数值矩阵。矩阵中任意的第m行、第n列的取值表示n所对应的词在m对应的文本中的tfidf值。tfidf已封装在sklearn库中。

同样以XSS为例,经过数据预处理后为:

id=0">

以char为单位的分词:

i,d,=,0,",>,<,s,c,r,i,p,t,>,a,l,e,r,t,(,0,),<,>

ngram处理,组合方式是单个字符自成一组,以及进行两个相邻字符的两两组合:

i,d,=,0,",>,<,s,c,r,p,t,a,l,e,(,),d=",=0,0","">,><,,>a,al,le,er,rt,t(,(0,0),)<,

tfidf处理,将文本数据转换成数值矩阵,行表示样本数,每一列表示一个词,所有样本中有多少个不重复的词,矩阵就有多少列,并通过tfidf的取值反映出每个词在文档中的权重。

示例中只有1个样本,样本包含42个不同的词,所以输出是一个1×42的矩阵。经过特征工程后,可以利用算法进行模型训练,特征是一个1×42的矩阵,如表3所示。

表3tfidf结果

其他类型数据的处理步骤和XSS样本处理一致,只是不同的种类样本,标签对应不同的值,所有类型样本的特征的维度是固定的。比如,设定1000维,样本条数为n,那么特征就是一个n×1000的数值矩阵,标签就是一个n×1的矩阵。

2.多分类模型构建

训练环境说明模型构建编程语言为Python,版本为python3.6。训练模型用到的Python主要工具库以及功能描述如下。

re:Python正则表达式模块,用于数据预处理阶段,结合其他工具对数据进行处理;

URLlib:用于前期的数据预处理,对URL数据进行解析;

pandas:数据分析工具,用于数据读取、数据处理和分析;

sklearn:机器学习工具,用于特征工程、训练随机森林及SVM模型以及模型评估;

lightgbm:用于训练LightGBM模型。

模型训练分别基于sklearn及lightgbm库构建随机森林、LightGBM及SVM多分类模型。如图2所示。训练时,将特征和标签输入到算法进行训练,训练后得到模型。

图2多分类模型训练

预测时,输入新样本的特征到模型,模型预测出新样本的标签。

模型评估将原数据分为训练集和测试集。训练集训练模型,并根据测试集的特征做预测,将预测结果与测试集本身的标签进行对比。本文研究的模型为多分类模型。模型评估基于多分类模型的评估准则。评估指标是精确率、召回率和F值,这些数值在测试集上越高表示模型性能越好。以上评估方法已封装在sklearn库中。

四、实验及模型对比

1.实验数据准备实验使用数据286951条,类型分别为XSS、SQL注入、LFI、命令执行、目录遍历、RFI以及正常的流量样本数据。数据分布如图3所示。

图3实验数据分布

训练数据存储在csv文件中,每个csv文件代表一种类型的数据,文件中每一行代表一个样本。

按照8:2比例划分为训练集和测试集。

2.模型对比分析

随机森林通过训练及优化随机森林模型参数,当设置n_estimators参数为300,criterion设置为gini时,模型识别效果最好。最终在模型参数固定情况下,使用20%的数据为测试集,80%数据为训练集,重复执行多次得到随机森林的实验结果如表4所示。

表4随机森林多分类结果

观察多次实验结果,得到平均精确率为99.5%,平均召回率为99.2%,平均F1值为99.3%。从实验结果来看,多次实验结果相近,证明随机森林多分类效果稳定,同时分类结果各评估值均能达到理想的结果。

通过训练及优化LightGBM模型参数,当设置n_estimators参数为533、random_state设置为7时,模型识别效果最好。最终在模型参数固定情况下,使用20%的数据作为测试集,80%数据作为训练集,重复执行多次得到LightGBM的实验结果,如表5所示。

表5LightGBM多分类结果

观察多次实验结果,得到平均精确率为99.4%,平均召回率为99.2%,平均F1值为99.3%。从实验结果来看,多次测试结果指标稳定,分类准确率较高。

SVM通过训练及优化SVM模型参数,设定kernel参数为rbf、gamma设置为scale时,模型识别效果最好。最终在模型参数固定情况下,使用20%的数据作为测试集,80%数据作为训练集,重复执行多次得到SVM模型的实验结果,如表6所示。

表6SVM多分类结果

观察多次实验结果,得到平均精确率为99.1%,平均召回率为99.1%,平均F1值为99.1%。

综合对比分析综合结果可以分析出,在使用相同样本进行训练的情况下,基于随机森林算法和LightGBM算法的多分类模型,效果较SVM多分类模型更好。

随机森林分类模型在分类评估指标上同LightGBM分类模型指标接近,证明其分类效果相近。SVM由于径向基核函数,理论上会拟合任何数据分布,但是会不断给数据升维,增加特征数量,导致SVM训练效率非常低。同时,实验中发现,SVM模型的分类效率明显低于随机森林分类模型和LightGBM分类模型。

五、结语

本文研究了基于机器学习模型在Web应用入侵检测的可行性,并通过实验验证了基于随机森林及lightGBM算法构建的多分类模型,在多分类模型的评估指标上优于基于SVM的多分类检测模型,能够达到理想的检测效果。综上所述,将机器学习用于信息安全领域,在理论与实践中具有巨大意义。但是,由于机器学习模型检测效率较传统规则检测效率低,本文研究成果目前仅能与已有的安全防护软件进行融合(如WAF)进行离线威胁检测,通过检测结果补充已有的安全规则,提升安全产品的防护能力。所以,研究如何提升机器学习模型的威胁识别效率,实现模型的实时检测能力,替换传统的规则检测方式,将会是本文后续的研究工作。

THE END
1.人工智能论文研究探索机器学习与深度学习的前沿应用在当今这个快速发展的时代,人工智能(AI)已经成为科技领域的一个热点话题。随着AI技术的不断进步,它在各个行业和领域中的应用日益广泛,从而激发了大量关于AI论文的研究。以下是对一些最新的人工智能论文研究进行的概述。 机器学习与数据分析 在过去几年中,机器学习技术得到了巨大的发展,这主要归功于大数据和云计算服务https://www.206sk8xl.cn/xing-ye-zi-xun/627985.html
2.机器学习:开启智能未来的钥匙腾讯云开发者社区在风控方面,银行通过大数据技术,监控账户的交易参数,分析持卡人的用户行为,从而判断该持卡人的信用级别。机器学习算法可以分析大量的交易数据,识别异常交易模式,及时发现欺诈行为,保护金融机构和客户的利益。 (四)自然语言处理、图像和视频处理、医疗保健、金融和商业、交通运输、农业等多领域应用 https://cloud.tencent.com/developer/article/2478495
3.物理学中的机器学习:从数据到发现的新范式机器学习(ML)是人工智能(AI)的一部分,致力于开发能够从数据中学习、无需明确编程便能做出预测或决策的算法。过去几十年里,机器学习已经成为多个领域的强大工具,改变了医疗、金融和零售等行业。在物理学中,机器学习的应用正在产生深远影响,它提高了数据分析的效率,推动了模式识别、预测建模,甚至新理论的发现https://baijiahao.baidu.com/s?id=1814759329987375988&wfr=spider&for=pc
4.机器学习算法的进步:从传统到现代机器学习(Machine Learning)是人工智能(Artificial Intelligence)的一个分支,它涉及到计算机程序能够自动学习和改进其表现的方法。机器学习的目标是使计算机能够自主地从数据中学习,而不是被人们明确编程。这种技术已经广泛应用于各个领域,例如图像识别、自然语言处理、推荐系统等。 https://blog.csdn.net/universsky2015/article/details/135809767
5.2020届计算机科学方向毕业设计(论文)阶段性汇报深度学习在视频分析中的应用 在本次汇报中,我将介绍毕设课题选定的视频分析具体任务:时序动作检测(Temporal Action Proposal)的相关内容,包括任务背景、最近研究成果、数据情况以及切入点等。我还将汇报过去一阶段的工作内容和下一阶段的工作计划。 范舟 基于强化学习的推荐与广告合并算法设计 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
6.从零开始:机器学习的数学原理和算法实践本书从数学基础知识入手,通过前3章的介绍,帮助读者轻松复习机器学习涉及的数学知识;然后,通过第4~第13章的介绍,逐步讲解机器学习常见算法的相关知识,帮助读者快速入门机器学习;最后,通过第14章的综合实践,帮助读者回顾本书内容,进一步巩固所学知识。 本书适合对机器学习感兴趣但数学基础比较薄弱的读者学习,也适合作为https://www.epubit.com/bookDetails?id=UB77b8ad3a2522b
7.4种方法教你利用Python发现数据的规律python这样我们就可以发现数据的规律,例如哪些因素会影响购买决策等。需要注意的是,这只是一个简单的示例,实际应用中需要根据具体问题选择合适的机器学习算法和特征工程方法。 到此这篇关于4种方法教你利用Python发现数据的规律的文章就介绍到这了,更多相关Python数据规律内容请搜索脚本之家以前的文章或继续浏览下面的相关文章https://www.jb51.net/article/278111.htm
8.人工智能技术导论——机器学习与知识发现51CTO博客而分别基于这三个要素, 就可以对机器学习进行分类。例如,由于信息有语言符号型与数值数据型之分, 因此基于信息,机器学习可分为符号学习和数值学习; 而基于知识的形式,机器学习又可分为规则学习和函数学习等; 若基于发现的逻辑方法, 则机器学习可分为归纳学习、演绎学习和类比学习等等。 这样的分类也就是分别从“https://blog.51cto.com/u_15127700/4561036
9.Python机器学习基础教程如何衡量应用是否成功? 机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的? 从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现没有解决正确的问题。 当深入研究机器学习的技术细节时(本书https://www.ituring.com.cn/book/tupubarticle/19667
10.机器学习及其应用通过脑部扫描发现肿瘤 自动分类新闻 论坛自动标记恶评 基于多性能指标来预测公司下一年的收入 对应用语音命令做出反应 … 机器学习算法基本类型 常见算法 按是否在人类监督下训练分类 监督学习 在监督学习中,用来训练算法的训练数据包含了答案,称为标签。 分类就是一个典型的监督学习,例如垃圾邮件过滤器一些回归算法也可https://www.jianshu.com/p/11d1323d028e
11.算法岗还是工程岗?关于职业选择的一点小思考职业发展以机器学习平台研发工程师-Data进行举例,首先你至少要精通或者熟悉一门编程语言(重点,不要贪杯),其次就是数据结构与算法要学好(这里所谓的学好并不是说你在某某平台刷了多少题,更重要的是要了解算法在生活中的应用场景,比如对于栈这种数据结构,大家在学校里可能就只知道栈可以解决括号匹配问题,但你是否知道你在日常https://ac.nowcoder.com/discuss/995242?type=9&order=0&page=1
12.数字化观察(100)华夏银行吴永飞等:数字金融领域小样本学习技术然而,产业数字金融风控所使用的数据要素情况不同于以往,特别是对公客户场景化、生态化细分后,数据样本量很小,难以满足风控建模的需要;而小样本学习目前在机器学习与数据挖掘领域仍属世界性难题。本文从小样本学习技术创新入手,深入探索数字经济时代下面向产业数字金融的小样本学习应用研究与实践。https://bank.hexun.com/2022-05-31/206058282.html
13.《常用算法之智能计算(三)》:机器学习计算从更广泛的意义上来看,机器学习是人工智能的一个子集。人工智能旨在使计算机更加智能化,而机器学习已经证明如何做到这一点。简而言之,机器学习是人工智能的应用,通过应用从数据中反复学习得到算法,可以改进计算机的功能,而无需进行明确的编程。 在给出机器学习计算各种算法之前,最好是先研究一下什么是机器学习和如何对http://www.kepu.net/blog/zhangjianzhong/201903/t20190327_475625.html