机器学习在Web攻击检测中的应用研究

2019-10-21 07:45刘畅
科学导报·学术 2019年45期
关键词:字符分词阳性率

刘畅

1  引言

众所周知,信息社会早已进入Web2.0时代,Web应用的安全至关重要,部署Web应用防火墙(WAF)已经成为对Web应用进行安全防护的重要方法。传统的WAF,依赖规则和黑白名单的方式对Web攻击进行检测,该方式过分依赖安全人员的知识广度,针对未知攻击类型无可奈何。另一方面,即使是已知的攻击类型,由于正则表达式天生的局限性,以及shell、php等语言极其灵活的语法,理论上存在规则被绕过的可能。因此,误拦和漏拦是传统WAF与生俱来的缺陷,而提高检测准确性的代价就是添加更多精细化的规则,由此导致传统WAF陷入一个永无止境打补丁的漩涡,拖累了整体性能。

针对上述问题,目前工业界和学术界主要从机器学习方向着手展开研究。在本文中,我们首先介绍了Web攻击特征提取的三种常用方法以及各自的优缺点,然后选择其中效果最佳的分词方式,并基于该方式训练MLP模型,利用该模型对Web攻击进行检测,根据实验结果表明,使用该模型可以显著增强开源防火墙ModSecurity的检测精确性,最后总结了机器学习应用于Web攻击检测中还亟待解决的问题。

2  Web攻击特征提取

Web攻击检测问题中样本数据通常都是半结构化的基于文本的HTTP请求消息,这些消息用于从客户端向服务器传递信息。通过对常见的Web攻击类型进行分析,包括注入攻击、XXS攻击和命令执行等,可以发现Web攻击请求的特征大体上分为两类:威胁关键词特征和不规范结构特征。针对这两种类型,常用的特征提取方式包括:基于分词的代码片段特征提取、基于状态转换的结构特征提取和基于统计量的结构特征提取。

2.1基于分词的代码片段特征提取

该方式的普遍做法是根据特定的分词规则,将HTTP请求切片,利用TF-IDF进行特征提取,并保留具有区分能力的关键词组合特征。在这种方式中,如何“无损”地进行分词是特征工程的重点,并且与关键词组合的结构息息相关,需要结合后期模型的表现结果不断调整完善,这部分内容将在第三节进行重点讲述。

实际上,通过这种方式保留的特征都是Web攻击中常见的危险关键词以及字符组合,而这些关键词及字符组合是有限的,理论上,结合目前可获得的海量访问流量和充分的Web攻击样本,几乎能全部覆盖这些关键词及字符组合。

2.2基于状态转换的结构特征提取

该方式的普遍做法是将具有相似属性的字符泛化为一个状态,用一个固定的字符来代替。如:字母泛化为‘N、中文字符泛化为‘Z、数字泛化为‘0、分隔符泛化为‘F等。其核心思想是用不同的状态去表达不同的字符属性,尽可能让在Web攻击请求中具有含义的字符与其他字符区分开来,然后将一个payload转换成一连串的状态链去训练出一个概率转化矩阵。

然而,该方式存在一个显著的缺陷:从请求参数结构异常的角度去观察,结构体异常不一定都是Web攻击;结构体正常不保证不是Web攻击。

2.3基于统计量的结构特征提取

该方式的普遍做法是使用URL长度、路径长度、参数部分长度、参数名长度、参数值长度、参数个数,参数长度占比、特殊字符个数、危险特殊字符组合个数、高危特殊字符组合个数、路径深度、分隔符个数等统计指标作为特征,对HTTP请求进行特征提取。模型可以选择逻辑回归、SVM、集合数算法、MLP或者无监督学习模型。

若只拿单个域名的URL做验证该模型有尚可的表现,但是针对全站URL的模型区分效果较差,准确率也较低。实时上,即使有较良好的适配环境,相对单纯的场景,模型准确率也很难提升到90%以上。

3基于分词的特征提取和MLP模型

在本节中我们将介绍使用基于分词的特征提取方法对数据集CSIC2010进行特征提取,并利用提取的特征训练支持向量机MLP模型,最后使用该模型对某目标网站进行安全防护,实验结果表明使用该模型检测Web攻击的准确率达到97%。

3.1数据集介绍

CSIC2010数据集是西班牙研究全国委员会(CSIC)于2010年开发的用于测试Web应用程序攻击保护系统所使用的数据集。该数据集被标记为“正常流量”和“异常流量”,是根据电子商务应用程序的实际请求自動化生成的。该数据集包含36000个用于训练的正常请求,36000个测试请求和25000个异常请求。为了产生异常流量,在本文中我们使用了包括Paros(后来成为OWASP ZAP)和w3af在内的多个工具。

3.2机器学习架构

如图1 所示,我们构建了一个解析器,用于解码URL编码格式的信息,因此机器学习算法可以处理真实信息。另一方面,过滤了对应于特定请求的请求头中所包含的信息,不应根据这些信息推断应用程序行为,例如cookie值或上次修改网页的时间戳。采取的特征化过程高度依赖于检测目标,在本文中,我们遵循了经典的“词袋”方法。在这种情况下,特征提取器仅使用空格来分割请求消息,这样会将特殊字符保留在参数值或者消息头当中。为了保留攻击中使用的特殊字符,特征提取器使用以下字符来分割请求消息:\r \t \n。学习架构的最后一个组成部分是多分类分类器。

监督学习方法需要使用标记样本为有效请求和攻击请求的样本的训练集,我们使用了一种多分类监督学习的变体,经过特征提取之后,每个请求都转换成了一个TF-IDF向量,以便计算请求中每个项的相应权重。在这种情况下,特征对应于我们词典中的词语,这些词语由特征提取过程生成。为了减少特征量,使用信息增益算法执行特征选择,以保证所有特征的信息增益都大于0,最后,我们使用Weka训练了MLP模型。

3.3实验结果分析

本小节主要对实验结果进行分析,结果将以精确度,召回率,真阳性率和假阳性率表示,真阳性率和假阳性率分别表示正确和错误地分类为攻击的请求的比率。表1的基准线一栏显示了ModSecurity使用未经任何配置的OWASP CRS规则集对数据集的检测结果,MLP一栏显示了在使用“词袋”方法对请求进行特征提取之后,MLP模型对数据集的检测结果,实验结果使用10次交叉验证以训练和测试模型。可以注意到,在对数据集的检测中,MLP模型在精度,召回率,TPR和FPR方面表现出良好的性能,尤其是在不增加漏报量的前提下显著降了误报量。

4结束语

在本文中,我们通过实验验证了使用机器学习技术可以显著提高ModSecurity的检测能力,减少假阳性率和增加真阳性率。尽管编写检测规则的任务对于人类专家来说可能是复杂的,但是结果表明机器学习算法可以很容易地根据训练数据集进行学习并生成决策边界。但是在研究过程中,我们也发现使用机器学习算法检测Web攻击面临的最大挑战就是缺少带有完整HTTP请求的公共标记数据集,在本文中我们仅使用了一个数据集,并且该数据集已经公布超过10年了,因此我们认为该数据集不能表示当前Web安全的发展态势,下一步我们将努力构建新的数据集。

的。该数据集包含36000个用于训练的正常请求,36000个测试请求和25000个异常请求。为了产生异常流量,在本文中我们使用了包括Paros(后来成为OWASP ZAP)和w3af在内的多个工具。

3.2机器学习架构

如图1 所示,我们构建了一个解析器,用于解码URL编码格式的信息,因此机器学习算法可以处理真实信息。另一方面,过滤了对应于特定请求的请求头中所包含的信息,不应根据这些信息推断应用程序行为,例如cookie值或上次修改网页的时间戳。采取的特征化过程高度依赖于检测目标,在本文中,我们遵循了经典的“词袋”方法。在这种情况下,特征提取器仅使用空格来分割请求消息,这样会将特殊字符保留在参数值或者消息头当中。为了保留攻击中使用的特殊字符,特征提取器使用以下字符来分割请求消息:\r \t \n。学习架构的最后一个组成部分是多分类分类器。

猜你喜欢
字符分词阳性率
破伤风抗毒素复温时间对破伤风抗毒素皮试阳性率的影响
视频宣教结合回授法对肺结核患者病原学阳性率的影响
Python实现图片转字符画
分词在英语教学中的妙用
破伤风抗毒素复温时间对破伤风抗毒素皮试阳性率的影响
正则表达式快速入门
图片轻松变身ASCⅡ艺术画
结巴分词在词云中的应用
结巴分词在词云中的应用
不同临床标本微生物检验的阳性率流行病学分布研究