一种基于机器学习的WEB恶意请求深度检测系统及方法转让专利

申请号 : CN201811331941.8

文献号 : CN109547423B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邹福泰张庆儒赵铭华张恒瑞张子瑄

申请人 : 上海交通大学

摘要 :

本发明公开了一种基于机器学习的WEB恶意请求深度检测系统及方法,涉及计算机网络安全技术领域。系统包括数据库模块、分类器训练模块、流量检测模块;数据库模块存放网关WEB流量数据,分类器训练模块被配置为进行分类训练,以得到第一分类器和第二分类器,流量检测模块包括正则匹配模块、内外网请求分类模块、内网请求检测模块、非内网请求检测模块。网关WEB流量数据经正则匹配和流量类别划分处理后,分为内网请求流量数据和非内网请求流量数据,前者被送入第二分类器检测,后者被送入第一分类器检测,检测结果全部被存入数据库模块。本发明使用了多模型的深度检测技术,成功实现了对网关恶意流量的检测,具有错检率和漏检率低,数据集适应性强等优势。

权利要求 :

1.一种基于机器学习的WEB恶意请求深度检测系统,其特征在于,包括数据库模块、分类器训练模块、流量检测模块;所述数据库模块被配置为存放网关WEB流量数据,所述分类器训练模块被配置为进行分类训练,以得到第一分类器和第二分类器,所述数据库模块中存放的网关WEB流量数据被传送给流量检测模块,经正则匹配和流量类别划分处理后,分为内网请求流量数据和非内网请求流量数据,所述非内网请求流量数据被送入所述第一分类器进行检测,所述内网请求流量数据被送入所述第二分类器进行检测,检测结果全部被存入所述数据库模块;

所述数据库模块包括待检测流量数据存放区和检测结果数据存放区;

所述分类器训练模块包括第一分类器训练子模块和第二分类器训练子模块,所述第一分类器训练子模块基于N‑gram、TF‑IDF特征提取进行训练,得到所述第一分类器,所述第二分类器训练子模块基于隐马尔可夫HMM模型进行训练,得到所述第二分类器;

所述流量检测模块包括正则匹配模块、内外网请求分类模块、内网请求检测模块、非内网请求检测模块;

所述第一分类器训练子模块的具体训练过程包括以下步骤:步骤101、利用从Github的公开数据集中获取已标记好的129万条正常流量和5万条异常流量;

步骤102、对数据集的每一行先用N‑gram分词,再用TF‑IDF算法进行处理,最终得到URL‑TFIDF矩阵,所述矩阵是m×n维矩阵,其中m是不同URL子串的个数,n是URL的个数;

步骤103、利用Scikit‑learn下的Logistic Regression 工具进行Logistic回归,将URL子串的TF‑IDF值作为特征,URL是否异常作为标记,进行训练,得到一个二分类的分类器模型Logistic Model,将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化为一个python类,作为所述第一分类器,并使用pickle库将训练好的所述第一分类器保存到本地,以便后续检测时使用;

所述第二分类器训练子模块的具体训练过程包括以下步骤:步骤201、从已有的网关流量日志中的内网WEB服务器访问流量中人工提取3000条良性请求作为良性样本并做好标记;

步骤202、使用python的第三方工具包hmmlearn对所述良性样本进行基于隐马尔可夫HMM模型的训练,得到所述第二分类器;

所述非内网请求检测模块被配置为利用所述第一分类器进行检测,所述内网请求检测模块被配置为利用所述第二分类器进行检测。

2.一种基于机器学习的WEB恶意请求深度检测方法,其特征在于,包括以下步骤:步骤301、将网关WEB流量数据作为全部待检测流量存放到所述数据库模块中的所述待检测流量数据存放区;

步骤302、将所述全部待检测流量输入正则匹配模块进行初步匹配,得到筛选后的剩余流量数据;

步骤303、将所述剩余流量数据输入内外网请求分类模块,以进行流量类别划分,得到内网请求流量数据和非内网请求流量数据;

步骤304、将所述内网请求流量数据输入所述内网请求检测模块,经训练好的第二分类器进行检测,将所述非内网请求流量数据输入所述非内网请求检测模块,经训练好的第一分类器进行检测,得到检测结果;

步骤305、将所述检测结果存入所述数据库模块的所述检测结果数据存放区中;

所述第一分类器训练子模块的具体训练过程包括以下步骤:步骤101、利用从Github的公开数据集中获取已标记好的129万条正常流量和5万条异常流量;

步骤102、对数据集的每一行先用N‑gram分词,再用TF‑IDF算法进行处理,最终得到URL‑TFIDF矩阵,所述矩阵是m×n维矩阵,其中m是不同URL子串的个数,n是URL的个数;

步骤103、利用Scikit‑learn下的Logistic Regression 工具进行Logistic回归,将URL子串的TF‑IDF值作为特征,URL是否异常作为标记,进行训练,得到一个二分类的分类器模型Logistic Model,将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化为一个python类,作为所述第一分类器,并使用pickle库将训练好的所述第一分类器保存到本地,以便后续检测时使用;

所述第二分类器训练子模块的具体训练过程包括以下步骤:步骤201、从已有的网关流量日志中的内网WEB服务器访问流量中人工提取3000条良性请求作为良性样本并做好标记;

步骤202、使用python的第三方工具包hmmlearn对所述良性样本进行基于隐马尔可夫HMM模型的训练,得到所述第二分类器。

3.如权利要求2所述的基于机器学习的WEB恶意请求深度检测方法,其特征在于,所述步骤302的具体过程为,从网关服务器的检测点上获取利用HTTPDUMP收集的网络流量,并且过滤掉Alexa排名前10000排名的公认良性流量,同时使用ModSecurity提供的规则集进行正则表达式匹配,对恶意流量进行初步的识别和检测,将已知攻击类型的请求筛选出来,得到筛选后的剩余流量数据。

4.如权利要求2所述的基于机器学习的WEB恶意请求深度检测方法,其特征在于,所述检测结果包括良性请求判定结果和恶意请求判定结果。

说明书 :

一种基于机器学习的WEB恶意请求深度检测系统及方法

技术领域

[0001] 本发明涉及计算机网络安全技术领域,尤其涉及一种基于机器学习的WEB恶意请求深度检测系统及方法。

背景技术

[0002] WEB恶意请求指用于窃取信息、攻击应用程序等恶意行为的WEB请求。WEB恶意请求具有隐蔽性与突然性,有多种多样的攻击方式(如SQL注入、跨站脚本攻击等),给网络安全
带来极大的威胁。相关学者为了拦截恶意请求提出过很多方案,包括规则匹配技术,单一化
的机器学习算法检测等技术,但都存在各自的局限。
[0003] 传统的规则匹配技术只能用于检测已知类型的攻击,面对日新月异的层出不穷的恶意请求抵抗能力较弱,且容易被人工伪装的恶意请求“欺骗”,因此使用的场景较为局限。
近些年来,随着机器学习技术的发展,一些机器学习算法开始被应用到恶意请求的检测上
来。一些有监督分类模型,如逻辑回归,支持向量机(SVM),通过选取合适的特征,在一些数
据集上取得了不错的效果。另外的一些无监督聚类算法,通过生成恶意流量模板,也有较好
的效果。但是单一的机器学习模型过于宽泛,没有考虑到不同流量类型的特异性,同时缺乏
实时性,难以用于实时检测。
[0004] 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串
的一种过滤逻辑。正则表达式可以用于检测出有某些已知特征的WEB请求,达到过滤的效
果。
[0005] 隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,它用来描述一种含有未知参数的马尔可夫过程,它需要从可观察的参数中确定该过程的隐含参数。然后利
用这些参数来做进一步的分析,如模式识别。
[0006] N‑gram技术曾被广泛地用来进行文本压缩、检查拼写错误、加速字符串查找、文献语种识别。目前N‑gram是自然语言处理中非常重要的技术,常常被用来评估两个字符串之
间的差异长度,也是模糊匹配中常用的一种手段。
[0007] TF‑IDF(词频‑逆文档频率)算法是一种统计方法,用以评估一个字词在一篇文章,一个语料库的重要程度。字词的重要性随着它在文章中出现的次数成正比增加,但同时会
随着它在语料库中出现的频率成反比下降。该算法在数据挖掘,文本处理和信息检索领域
得到了广泛的应用,其中最常见的用途是从一篇文章中找出它的关键词。
[0008] Logistic Regression(逻辑回归)是一种非常常用的分类算法,它是一种广义线性回归模型,它使用Sigmoid函数将线性回归值转换到(0,1)区间内,然后与阈值进行比较
得到分类的结果。
[0009] 因此,本领域的技术人员致力于开发一种基于机器学习的WEB恶意请求深度检测系统及方法,以实现对网关恶意流量的检测,并且相较于传统WEB请求恶意检测系统使用的
字符串匹配技术和普通的机器学习技术,具有更低的错检率和漏检率,以及更高的数据集
适应性。

发明内容

[0010] 有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何克服单一的机器学习模型过于宽泛,没有考虑到不同流量类型特异性以及缺乏实时性的缺点,将访问流量
分为内网WEB服务器访问流量和外网WEB服务器访问流量,根据两种流量各自的特性和独有
的模式,以及内外网服务器安全等级的不同,去做有针对性和侧重性的检测模型,以实现对
网关恶意流量的实时检测,并且保证系统具有低错检率和漏检率。
[0011] 为实现上述目的,本发明提供了一种基于机器学习的WEB恶意请求深度检测系统,包括数据库模块、分类器训练模块、流量检测模块;所述数据库模块被配置为存放网关WEB
流量数据,所述分类器训练模块被配置为进行分类训练,以得到第一分类器和第二分类器,
所述数据库模块中存放的网关WEB流量数据被传送给流量检测模块,经正则匹配和流量类
别划分处理后,分为内网请求流量数据和非内网请求流量数据,所述非内网请求流量数据
被送入所述第一分类器进行检测,所述内网请求流量数据被送入所述第二分类器进行检
测,检测结果全部被存入所述数据库模块。
[0012] 进一步地,所述数据库模块包括待检测流量数据存放区和检测结果数据存放区。
[0013] 进一步地,所述分类器训练模块包括第一分类器训练子模块和第二分类器训练子模块,所述第一分类器训练子模块基于N‑gram、TF‑IDF特征提取进行训练,得到所述第一分
类器,所述第二分类器训练子模块基于隐马尔可夫HMM模型进行训练,得到所述第二分类
器。
[0014] 进一步地,所述流量检测模块包括正则匹配模块、内外网请求分类模块、内网请求检测模块、非内网请求检测模块。
[0015] 进一步地,所述第一分类器训练子模块的具体训练过程包括以下步骤:
[0016] 步骤101、利用从Github的公开数据集中获取已标记好的129万条正常流量和5万条异常流量;
[0017] 步骤102、对数据集的每一行先用N‑gram分词,再用TF‑IDF算法进行处理,最终得到URL‑TFIDF矩阵,所述矩阵是m×n维矩阵,其中m是不同URL子串的个数,n是URL的个数;
[0018] 步骤103、利用Scikit‑learn下的Logistic Regression工具进行Logistic回归,将URL子串的TF‑IDF值作为特征,URL是否异常作为标记,进行训练,得到一个二分类的分类
器模型Logistic Model,将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化为一
个python类,作为所述第一分类器,并使用pickle库将训练好的所述第一分类器保存到本
地,以便后续检测时使用。
[0019] 进一步地,所述第二分类器训练子模块的具体训练过程包括以下步骤:
[0020] 步骤201、从已有的网关流量日志中的内网WEB服务器访问流量中人工提取3000条良性请求作为良性样本并做好标记;
[0021] 步骤202、使用python的第三方工具包hmmlearn对所述良性样本进行基于隐马尔可夫HMM模型的训练,得到所述第二分类器。
[0022] 进一步地,所述非内网请求检测模块被配置为利用所述第一分类器进行检测,所述内网请求检测模块被配置为利用所述第二分类器进行检测。
[0023] 本发明还提供一种基于机器学习的WEB恶意请求深度检测方法,包括以下步骤:
[0024] 步骤301、将网关WEB流量数据作为全部待检测流量存放到所述数据库模块中的所述待检测流量数据存放区;
[0025] 步骤302、将所述全部待检测流量输入所述正则匹配模块进行初步匹配,得到筛选后的剩余流量数据;
[0026] 步骤303、将所述剩余流量数据输入所述内外网请求分类模块,以进行流量类别划分,得到所述内网请求流量数据和所述非内网请求流量数据;
[0027] 步骤304、将所述内网请求流量数据输入所述内网请求检测模块,经训练好的所述第二分类器进行检测,将所述非内网请求流量数据输入所述非内网请求检测模块,经训练
好的所述第一分类器进行检测,得到检测结果;
[0028] 步骤305、将所述检测结果存入所述数据库模块的所述检测结果数据存放区中。
[0029] 进一步地,所述步骤302的具体过程为,从网关服务器的检测点上获取利用HTTPDUMP收集的网络流量,并且过滤掉Alexa排名前10000排名的公认良性流量,同时使用
ModSecurity提供的规则集进行正则表达式匹配,对恶意流量进行初步的识别和检测,将已
知攻击类型的请求筛选出来,得到筛选后的剩余流量数据。
[0030] 进一步地,所述检测结果包括良性请求判定结果和恶意请求判定结果。
[0031] 与现有技术方案相比,本发明的有益技术效果在于以下三方面:
[0032] 第一,考虑到了网关流量日志的特殊性,将访问流量分为内网请求流量和非内网请求流量,根据两种流量各自的特性和独有的模式,以及内外网服务器安全等级的不同,进
行有针对性和侧重性的检测,大大降低了错检率和漏检率;
[0033] 第二,对于内网服务器,由于本发明采用了基于良性样本的隐马尔可夫HMM算法,提取了良性请求的特征和模式,只要请求不符合正常的模式,便将它标定为恶意请求,这
样,对内网WEB服务器提供了更高级别的保护;
[0034] 第三,相比于传统WEB请求恶意检测系统使用的字符串匹配技术和普通的机器学习技术,本发明基于多模型的WEB恶意请求的深度检测系统不仅成功实现了对网关恶意流
量的检测,便于后续的网络漏洞分析和恶意请求的实时拦截,而且具有错检率和漏检率低、
数据集适应性强等优势。
[0035] 以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

[0036] 图1是本发明的一个较佳实施例的系统结构及工作流程示意图;
[0037] 图2是本发明的一个较佳实施例的分类器训练流程示意图;
[0038] 图3是本发明的一个较佳实施例的流量检测模块工作过程示意图。

具体实施方式

[0039] 以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限
于文中提到的实施例。
[0040] 在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。
[0041] 如图1所示,为本发明的一个较佳实施例的系统结构及工作流程示意图。本发明提供了一种基于机器学习的WEB恶意请求深度检测系统,包括数据库模块3、分类器训练模块
1、流量检测模块2;所述数据库模块3被配置为存放网关WEB流量数据,所述分类器训练模块
1被配置为进行分类训练,以得到第一分类器和第二分类器,所述数据库模块3中存放的网
关WEB流量数据被传送给流量检测模块2,经正则匹配和流量类别划分处理后,分为内网请
求流量数据和非内网请求流量数据,所述非内网请求流量数据被送入所述第一分类器进行
检测,所述内网请求流量数据被送入所述第二分类器进行检测,检测结果全部被存入所述
数据库模块3。
[0042] 数据库模块3包括待检测流量数据存放区和检测结果数据存放区,待检测流量数据存放区存放全部待检测流量数据,检测结果数据存放区存放检测结果。
[0043] 分类器训练模块1包括第一分类器训练子模块和第二分类器训练子模块,所述第一分类器训练子模块基于N‑gram、TF‑IDF特征提取进行训练,得到所述第一分类器,所述第
二分类器训练子模块基于隐马尔可夫HMM模型进行训练,得到所述第二分类器。
[0044] 所述流量检测模块2包括正则匹配模块、内外网请求分类模块、内网请求检测模块、非内网请求检测模块。非内网请求检测模块被配置为利用第一分类器进行检测,内网请
求检测模块被配置为利用第二分类器进行检测。
[0045] 如图2所示,为本发明的一个较佳实施例分类器训练流程示意图。包括基于N‑gram,TF‑IDF特征提取的第一分类器的训练与基于隐马尔可夫HMM模型的第二分类器的训
练。本系统针对网关流量日志的两种不同的流量特征使用了两种机器学习算法,从而达到
深度检测的效果。训练模块则使用人工标注的数据集以及公开的数据集完成对两个分类器
的训练任务。
[0046] 第一分类器训练过程包括以下步骤:
[0047] 步骤101、利用从Github的公开数据集中获取已标记好的129万条正常流量和5万条异常流量;该数据集经过结构化后得到一个n×2维的矩阵,n是流量的个数,2维分别是
URL以及流量的标签,即是异常流量还是正常流量。
[0048] 步骤102、系统对数据集的每一行先用N‑gram分词,再用TF‑IDF算法进行处理。在对每条流量的URL进行分词处理的过程中,一条URL被分成了许多个子字符串,每个子字符
串都可以看作是该条URL的“特征”;而在TF‑IDF算法中,整个数据集URL子串化后的结果作
为输入,输出每条子串对应在每个URL下的TF‑IDF值。在这里,系统使用了python语言
Scikit‑learn库下的TfidfVectorizer工具,这一个工具同时完成了N‑gram分词和TF‑IDF
处理的两个过程,最终得到URL‑TFIDF矩阵,该矩阵是m×n维矩阵,其中m是不同URL子串的
个数,n是URL的个数。
[0049] 步骤103、系统利用Scikit‑learn下的Logistic Regression工具进行Logistic回归,将URL子串的TF‑IDF值作为特征,URL是否异常作为标记,进行训练,得到一个二分类的
分类器模型Logistic Model。该分类器以一个URL的子串的TF‑IDF值作为输入,输出为该
URL是否对应一个恶意流量。将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化
为一个python类,作为第一分类器,并使用pickle库将训练好的第一分类器保存到本地,便
于后续的检测。
[0050] 第二分类器训练过程如下:
[0051] 隐马尔可夫模型的训练使用python的第三方工具包hmmlearn。因为HMM是基于良性样本的概率预测模型,当某一事件的发生概率小于概率阈值,并且该事件发生了,则可认
为该事件为异常事件。因此,使用训练的样本为良性样本。从已有的网关流量日志中的内网
WEB服务器访问流量中人工提取3000条良性请求作为良性样本,并做好标记用于训练基于
HMM的第二分类器。
[0052] 整个HMM模块分为三个部分,提取器,训练器,第二分类器。提取器对一条输入的原始流量提取URL路径,各个GET请求参数,content length等属性,对各部分根据其所属类
型,参数名字,主机域名计算对应的md5码作为该属性的id,同时对该部分的请求内容做泛
化处理,泛化后的结果作为一种状态。这样一个id代表某一请求路径,或者某一GET请求参
数,对每个id建一个列表,保存着训练集中出现的所有状态。
[0053] 提取器处理每一条请求后,得到存储每个id的所有泛化状态的集合,并以字典形式存储,键值为id,映射到存储所有泛化状态的列表。将该字典投入到训练器中训练,对每
一个ID训练一个HMM模型,从而可以预测所有待测GET请求参数和请求路径发生的概率。第
二分类器加载训练好的HMM模型,判断待测内网WEB服务器请求流量是否为良性请求。
[0054] 如图3所示,为本发明的一个较佳实施例的流量检测模块工作过程示意图。首先,通过正则表达式匹配筛选掉已知类型的恶意攻击,这些流量被标记为已知的攻击。剩下的
流量分为内网服务器访问流量与非内网WEB服务器访问流量。内网服务器访问流量随后被
传入第二分类器,也就是基于HMM的分类器,经过该分类器后内网服务访问流量可以被标记
成两类,即良性请求和恶意请求。其他流量被传入第一分类器,即使用N‑gram、TF‑IDF做特
征提取的逻辑回归分类器,这些流量可以被判别为其他恶意请求或其他良性请求。全部检
测的恶意请求包括正则表达式匹配筛选出的恶意攻击,第一分类器及第二分类器得到的恶
意请求,利用两个分类器进行分类检测,系统实现了对恶意请求的深度检测效果。
[0055] 本发明提供的一种基于机器学习的WEB恶意请求深度检测方法,包括以下步骤:
[0056] 步骤301、将网关WEB流量数据作为全部待检测流量存放到所述数据库模块中的所述待检测流量数据存放区;
[0057] 步骤302、将所述全部待检测流量输入所述正则匹配模块进行初步匹配,得到筛选后的剩余流量数据;
[0058] 步骤303、将所述剩余流量数据输入所述内外网请求分类模块,以进行流量类别划分,得到所述内网请求流量数据和所述非内网请求流量数据;
[0059] 步骤304、将所述内网请求流量数据输入所述内网请求检测模块,经训练好的所述第二分类器进行检测,将所述非内网请求流量数据输入所述非内网请求检测模块,经训练
好的所述第一分类器进行检测,得到检测结果;
[0060] 步骤305、将所述检测结果存入所述数据库模块的所述检测结果数据存放区中。
[0061] 进一步地,所述步骤302的具体过程为,从网关服务器的检测点上获取利用HTTPDUMP收集的网络流量,并且过滤掉Alexa排名前10000排名的公认良性流量,同时使用
ModSecurity提供的规则集进行正则表达式匹配,对恶意流量进行初步的识别和检测,将已
知攻击类型的请求筛选出来,得到筛选后的剩余流量数据。
[0062] 进一步地,所述检测结果包括良性请求判定结果和恶意请求判定结果。
[0063] 以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员
依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术
方案,皆应在由权利要求书所确定的保护范围内。