基于机器学习的XSS攻击检测方法转让专利

申请号 : CN202111159005.5

文献号 : CN113904834B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田新远

申请人 : 北京华清信安科技有限公司

摘要 :

本发明公开了一种基于机器学习的XSS攻击检测方法,其包括以下步骤:步骤一,数据收集和数据预处理;步骤二,XSS特征提取;其包括:扫描数据库中的样本数据,循环计算每个词的信息熵,以及使用TF‑IDF算法提取样本数据的TF‑IDF值;将满足关联规则的信息熵和TF‑IDF值形成XSS特征;步骤三,将所述步骤二提取的XSS特征送入SVM分类模型中进行训练,生成训练后的XSS攻击检测模型,对XSS攻击进行检测。本发明不仅可以在针对已有攻击数据的检测准确度中高达90%以上,而且能够大大提高对未知的XSS攻击数据的检测精准度和防御效果。

权利要求 :

1.一种基于机器学习的XSS攻击检测方法,其特征在于,包括以下步骤:步骤一,数据收集和数据预处理;其中,所述数据收集包括:

S1.1收集防御平台记录的日志数据,以及互联网上的公开数据集,并随机分成测试样本和训练样本;

S1.2通过构建转义及加密对照树,进行递归多次解码;并结合相识度算法匹配缺失部分机构的标签,直至还原到最原始文本;

步骤二,XSS特征提取;其包括:扫描数据库中的样本数据,循环计算每个词的信息熵,以及使用TF‑IDF算法提取样本数据的TF‑IDF值;将满足关联规则的信息熵和TF‑IDF值形成XSS特征;将支持度大于0.375的项集作为频繁项集,将各个样本中频繁项集的出现频次,作为XSS特征送入SVM分类模型中进行训练;所述步骤二中,还包括:通过Aprior算法从黑数据的分词结果中提取出频繁项,通过支持度(support)与置信度(confidence)提取出频繁项集,将各个样本中频繁项集的出现频次形成XSS特征;

步骤三,将所述步骤二提取的XSS特征送入SVM分类模型中进行训练,生成训练后的XSS攻击检测模型,对XSS攻击进行检测;所述信息熵通过以下步骤计算:步骤1,通过香农公式,循环计算每个词出现的频率;

步骤2,通过公式(Ⅰ)循环计算出信息熵;公式(Ⅰ)如下:

其中p(xi)表示第i个词出现的频率,N表示公有词的总数;

所述TF‑IDF值通过以下步骤计算:将数据库中的XSS攻击黑数据作为对照样本库,利用公式(Ⅱ)提取出每条日志数据的TF‑IDF矩阵;公式(Ⅱ)如下:其中,i表示单一词条,j表示全部词条,tfi,j表示词条i出现的频次,N表示数据库中的文档总数,dfi表示包含词条i的文档数+1;

所述支持度通过公式(Ⅲ)计算,公式(Ⅲ)如下:

其中,X,Y表示全部样本集中任意两个分词结果;词X与词Y的支持度则为项集X、Y同时发生的概率,所述置信度通过公式(Ⅳ)计算,公式(Ⅳ)如下:

其中,X,Y代表全部样本集中任意两个分词结果,项集X发生的情况下,则项集Y发生的概率为关联规则的置信度。

2.如权利要求1所述的基于机器学习的XSS攻击检测方法,其特征在于,所述步骤三中,还包括:使用SVM算法进行SVM分类模型训练后,通过安全组件对所述XSS攻击检测模型进行攻击测试,加入正常请求检测模型的准确率和召回率;当预测值低于预设值时,则将检测数据送进SVM分类模型继续训练,直至所述预测值等于大于预设值。

3.如权利要求1所述的基于机器学习的XSS攻击检测方法,其特征在于,所述步骤一中,所述数据收集具体为:收集防御平台记录的日志数据和互联网上的公开数据集。

4.如权利要求1所述的基于机器学习的XSS攻击检测方法,其特征在于,所述步骤一中,所述数据预处理包括:清除空值数据和异常数据;以及扩充数据集。

说明书 :

基于机器学习的XSS攻击检测方法

技术领域

[0001] 本发明涉及一种网络安全智能防御技术。更具体地说,本发明涉及一种基于机器学习的XSS攻击检测方法。

背景技术

[0002] 近些年,随着移动互联网的迅猛发展,客户端与服务端的交互变得越来越频繁。很多服务器后端从以前的单一设备访问,发展为现在的多设备访问。而这些不同设备的不同系统跟服务器交互,虽然交互变得更加便利且高效但同时也引发了更多的安全问题。而跨站脚本攻击(Cross‑Site Scripting,XSS)就是最常见且危害最广泛的一种Web攻击,严重威胁着Web系统的安全。
[0003] 而随着移动互联的发展,交互便利使得网络请求越来越复杂,参数更加多元化,从而导致网络攻击的复杂性增大,防御复杂性增大。目前,当前主流的XSS攻击检测以传统工具的静态防御为主,滞后性较强。比如一些传统的防御组件只针对一些变形的XSS攻击,除了防御规则的时效性外,还有很多攻击欺诈绕过风险,会产生很多漏报。并且伴随着当前网络请求的复杂性增加,一些常规的合法请求,由于其参数的复杂,容易与传统工具的防御规则发生冲突,导致了很多误报行为。

发明内容

[0004] 本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。
[0005] 本发明还有一个目的是提供一种基于机器学习的XSS攻击检测方法,其不仅可以在针对已有攻击数据的检测准确度中高达90%以上,而且能够大大提高对未知的XSS攻击数据的检测精准度和防御效果。
[0006] 为了实现根据本发明的这些目的和其它优点,提供了一种基于机器学习的XSS攻击检测方法,其包括以下步骤:
[0007] 步骤一,数据收集和数据预处理;
[0008] 步骤二,XSS特征提取;其包括:扫描数据库中的样本数据,循环计算样本数据的信息熵,以及使用TF‑IDF算法提取样本数据的TF‑IDF值;将满足关联规则的信息熵和TF‑IDF值形成XSS特征;
[0009] 步骤三,将所述步骤二提取的XSS特征送入SVM分类模型中进行训练,生成训练后的XSS攻击检测模型,对XSS攻击进行检测。
[0010] 优选的是,所述基于机器学习的XSS攻击检测方法还包括:在所述步骤二的特征提取前,数据预处理后,通过构建转义及加密对照树,进行递归多次解码,并结合相似度算法匹配缺失部分机构的标签,直至还原到最原始文本。现有的XSS攻击数据中往往会出现将字符串进行拼接转义的情况,例如“alert("hey!")pt>”会出现在url或者request_body等部位。本发明所述基于机器学习的XSS攻击检测方法针对目前XSS攻击数据极端复杂的现状,在特征提取时,选择将样本数据的信息熵和TF‑IDF值加入特征矩阵中,大大提高了分类准确率。
[0011] 优选的是,所述步骤二中,还包括:通过Aprior算法从黑数据的分词结果中提取出频繁项,通过支持度(support)与置信度(confidence)提取出频繁项集,将各个样本中频繁项集的出现频次形成XSS特征。
[0012] 优选的是,所述步骤二中,所述信息熵通过以下步骤计算:
[0013] 步骤1,通过香农公式,循环计算每个词出现的频率;
[0014] 步骤2,通过公式(Ⅰ)循环计算出信息熵;公式(Ⅰ)如下:
[0015]
[0016] 其中p(xi)表示第i个词出现的频率,N表示公有词的总数。
[0017] 优选的是,所述步骤二中,所述TF‑IDF值通过以下步骤计算:将数据库中的XSS攻击黑数据作为对照样本库,利用公式(Ⅱ)提取出每条日志数据的TF‑IDF矩阵;公式(Ⅱ)如下:
[0018]
[0019] 其中,i表示单一词条,j表示全部词条,tfi,j表示词条i出现的频次,N表示数据库中的文档总数,dfi表示包含词条i的文档数+1。
[0020] 优选的是,所述支持度通过公式(Ⅲ)计算,公式(Ⅲ)如下:
[0021]
[0022] 其中,X,Y表示全部样本集中任意两个分词结果;词X与词Y的支持度则为项集X、Y同时发生的概率,
[0023] 所述置信度通过公式(Ⅳ)计算,公式(Ⅳ)如下:
[0024]
[0025] 其中,X,Y代表全部样本集中任意两个分词结果,项集X发生的情况下,则项集Y发生的概率为关联规则的置信度。
[0026] 优选的是,所述步骤二中,将支持度大于0.375的项集作为频繁项集,将各个样本中频繁项集的出现频次,作为XSS特征送入SVM分类模型中进行训练。
[0027] 优选的是,所述步骤三中,还包括:使用SVM算法进行SVM分类模型训练后,通过安全组件对所述XSS攻击检测模型进行攻击测试,同时也会加入正常请求来检测模型的准确率和召回率;当预测值低于预设值时,则将检测数据送进SVM分类模型继续训练,直至所述预测值等于大于预设值。
[0028] 优选的是,所述步骤一中,所述数据收集具体为:收集用于模型训练的学习样本,其包括防御平台记录的日志数据和互联网上的公开数据集。
[0029] 优选的是,所述步骤一中,所述数据预处理包括:清除空值数据和异常数据;以及扩充数据集。
[0030] 本发明所述基于机器学习的XSS攻击检测方法包括以下步骤:
[0031] S1,数据收集
[0032] 收集防御平台记录的日志数据,以及互联网上的公开数据集,并实时更新样本数据库。
[0033] S2,数据预处理
[0034] 首先,将日志数据进行标准化处理,包括:
[0035] 将空值数据进行去除,以保证数据维度的一致性;
[0036] 将异常数据进行去除或变换,例如连接时间过长,url过长,访问浏览器版本过老,返回包过大等异常数据。这一类数据无论是访问异常,或者是日志记录出错,均会影响模型准确率。
[0037] 对自有记录的日志数据以及互联网上的公开数据集进行维度合并。
[0038] 其次,对数据集进行扩充,例如从公开网络请求数据集中提取数据进行补充。重复日志数据标准化处理,保证维度和日志维度一致,将数据集和日志数据进行拼接。并通过Fisher–Yates shuffle算法将数据进行离散化。由此,可以提高本发明所述XSS攻击检测模型的泛化能力。
[0039] S3,特征提取
[0040] 首先,从http请求中提取特殊字符个数、url长度、url复杂程度、request‑body复杂程度、url最长参数长度,url参数长度占比等特征,同时提取数字字符转换频次、request‑body长度、请求体中高风险词出现频次、请求体中中风险词出现频次、请求体中低风险词出现频次、频繁项出现次数、请求方法、外部url链接频次等特征;计算http请求的信息熵,和每条日志数据的TF‑IDF值;
[0041] 其次,对提取出的数值型数据特征进行标准化处理,使各个特征收放在一个标准区间。
[0042] 将频繁项出现次数、所述信息熵和TF‑IDF值等作为特征变量,加入整体的特征矩阵,形成XSS相关特征。
[0043] S4,模型训练
[0044] 将所述XSS相关特征送入SVM分类模型进行训练,其中,所述SVM分类模型选择高斯核函数,其中,C=9,gamma=6.5。C过大或过小,泛化能力会变差。gamma隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响所述SVM分类模型的训练与预测速度。经过研究分析,本发明选择C=9,gamma=6.5,实现了所述SVM分类模型的检测精准度。
[0045] S5,模型评估
[0046] 经过超参数调优,本发明还对所述XSS攻击检测模型进行多次测试。实现了其在测试数据集的准确率(accuracy)基本上保持在98%左右,召回率(recall)与精确率(precision)也可达到97%左右。在大数量验证集中,模型的召回率(recall)与精确率(precision)分别表现为92%与95%左右。
[0047] 本发明至少包括以下有益效果:本发明所述基于机器学习的XSS攻击检测方法,基于机器学习模型例如SVM分类模型对XSS攻击进行检测,大大提高了检测的准确性,并且针对未知XSS攻击的防御也能达到一个良好的防御效果。
[0048] 本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

[0049] 图1为本发明其中一个实施例所述基于机器学习的XSS攻击检测方法的流程示意图。

具体实施方式

[0050] 下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
[0051] 应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不排除一个或多个其它元件或其组合的存在或添加。
[0052] 如图1所示,本发明提供一种基于机器学习的XSS攻击检测方法,包括以下步骤:
[0053] S1,数据收集
[0054] S1.1收集防御平台记录的日志数据,以及互联网上的公开数据集,并随机分成测试样本和训练样本。
[0055] S1.2通过构建转义及加密对照树,进行递归多次解码。并结合相似度算法匹配缺失部分机构的标签,直至还原到最原始文本。攻击者会把攻击进行转义拼接,甚至把转义的url进行再转义。这种过滤的绕过策略就是根据浏览器解析html页面时,在构建完DOM树之后会进行html的解码,因此攻击代码中的部分代码可以通过转移替换。本发明将收集到的数据进行递归多次解码,直至还原到最原始文本,以提高数据的精确度。
[0056] S2,数据预处理,其包括:
[0057] S2.1日志数据标准化处理:首先,对空值数据进行去除,以保证数据维度的一致性;其次,对日志数据异常值,例如连接时间过长,url过长,访问浏览器版本过老,返回包过大等异常数据进行清除。这一类数据无论是访问异常,或者是日志记录出错,均会影响模型准确率。
[0058] S2.2数据集扩充,其包括:从公开网络请求数据集中提取数据进行补充。重复步骤2.1,以保证维度和日志维度一致,将数据集和日志数据进行拼接,并通过Fisher–Yates shuffle算法将数据进行离散化。由此,可以提高本发明所述XSS攻击检测模型的泛化能力。
[0059] S3,特征提取
[0060] S3.1从http请求中提取特殊字符个数、url长度、url复杂程度、request‑body复杂程度、url最长参数长度,url参数长度占比等特征;
[0061] S3.2频繁项提取通过Aprior算法从黑数据的分词结果中提取出频繁项。通过支持度(support)与置信度(confidence)提取出频繁项集。其中,所述支持度通过公式(Ⅲ)计算,公式(Ⅲ)如下:
[0062]
[0063] 其中,X,Y表示全部样本集中任意两个分词结果;词X与词Y的支持度则为项集X、Y同时发生的概率。
[0064] 所述置信度通过公式(Ⅳ)计算,公式(Ⅳ)如下:
[0065]
[0066] 其中,X,Y代表全部样本集中任意两个分词结果,项集X发生的情况下,则项集Y发生的概率为关联规则的置信度。本发明把支持度大于0.375的项集作为频繁项集用作所述XSS相关特征的特征提取。
[0067] S3.3信息熵提取通过香农公式,先循环计算每个词出现的频率。再通过信息熵公式循环计算出信息熵,计算出具体的值作为特征变量;其中,信息熵通过公式(Ⅰ)计算:
[0068]
[0069] 其中p(xi)表示第i个词出现的频率,N表示公有词的总数。随着信息技术的发展,XSS攻击为了屏蔽waf规则,会将其url或body设计的极端复杂。攻击者往往也会将字符串进行拼接转义,甚至多次转义,例如:alert("hey!")pt>。本发明通过对比验证加入信息熵特征后其准确率均有明显增益。具体数据如下:
[0070]
[0071]
[0072] S3.4 TF‑IDF矩阵提取本发明将大量XSS攻击数据作为对照样本库。提取出每条日志数据的TF‑IDF矩阵。计算公式(Ⅱ)如下:
[0073]
[0074] 其中,i表示单一词条,j表示全部词条,tfi,j表示词条i出现的频次,N表示数据库中的文档总数,dfi表示包含词条i的文档数+1。本发明选择提取出样本的TF‑IDF值,并将提取的词向量降维,加入到整体的特征矩阵。
[0075] 本发明探索当前样本的关键词与黑数据的关联程度。例如选择10万份样本数据,进行分类算法实验。分别为加入TF‑IDF为特征变量,和未加入其准确率分别如下。
[0076]
[0077] 结果发现,加入了TF‑IDF提取的特征后,其分类准确率均有所增益。
[0078] S3.5将频繁项出现次数、所述信息熵和TF‑IDF值等作为特征变量,加入整体的特征矩阵,形成XSS相关特征。
[0079] S4,模型训练
[0080] 将所述XSS相关特征送入SVM分类模型进行训练,其中,所述SVM分类模型选择高斯核函数,本发明例如通过网格搜索法确定C=9,gamma=6.5。C过大或过小,泛化能力会变差。gamma隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响所述SVM分类模型的训练与预测速度。经过研究分析,本发明选择C=9,gamma=6.5,实现了所述SVM分类模型的检测精准度。
[0081] S5,模型评估
[0082] 本发明在每次训练结束后,会通过Appscan、Nessus、openvas等安全组件进行攻击测试,并加入正常请求来检测模型的准确率,和召回率。如发现准确率或召回率低于预设阈值,则将此次预测数据送进模型继续训练,直至达到预设的精准率及召回率阈值。
[0083] 经过超参数调优,本发明还对所述XSS攻击检测模型进行多次测试。实现了其在测试数据集的准确率(accuracy)基本上保持在98%左右,召回率(recall)与精确率(precision)也可达到97%左右。在大数量验证集中,模型的召回率(recall)与精确率(precision)分别表现为92%与95%左右。
[0084] 尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。