一种基于机器学习的WEB恶意请求深度检测系统及方法转让专利
申请号 : CN201811331941.8
文献号 : CN109547423B
文献日 : 2021-03-30
发明人 : 邹福泰 , 张庆儒 , 赵铭华 , 张恒瑞 , 张子瑄
申请人 : 上海交通大学
摘要 :
权利要求 :
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恶意请求深度检测系统及方法
技术领域
背景技术
带来极大的威胁。相关学者为了拦截恶意请求提出过很多方案,包括规则匹配技术,单一化
的机器学习算法检测等技术,但都存在各自的局限。
近些年来,随着机器学习技术的发展,一些机器学习算法开始被应用到恶意请求的检测上
来。一些有监督分类模型,如逻辑回归,支持向量机(SVM),通过选取合适的特征,在一些数
据集上取得了不错的效果。另外的一些无监督聚类算法,通过生成恶意流量模板,也有较好
的效果。但是单一的机器学习模型过于宽泛,没有考虑到不同流量类型的特异性,同时缺乏
实时性,难以用于实时检测。
的一种过滤逻辑。正则表达式可以用于检测出有某些已知特征的WEB请求,达到过滤的效
果。
用这些参数来做进一步的分析,如模式识别。
间的差异长度,也是模糊匹配中常用的一种手段。
随着它在语料库中出现的频率成反比下降。该算法在数据挖掘,文本处理和信息检索领域
得到了广泛的应用,其中最常见的用途是从一篇文章中找出它的关键词。
得到分类的结果。
字符串匹配技术和普通的机器学习技术,具有更低的错检率和漏检率,以及更高的数据集
适应性。
发明内容
分为内网WEB服务器访问流量和外网WEB服务器访问流量,根据两种流量各自的特性和独有
的模式,以及内外网服务器安全等级的不同,去做有针对性和侧重性的检测模型,以实现对
网关恶意流量的实时检测,并且保证系统具有低错检率和漏检率。
流量数据,所述分类器训练模块被配置为进行分类训练,以得到第一分类器和第二分类器,
所述数据库模块中存放的网关WEB流量数据被传送给流量检测模块,经正则匹配和流量类
别划分处理后,分为内网请求流量数据和非内网请求流量数据,所述非内网请求流量数据
被送入所述第一分类器进行检测,所述内网请求流量数据被送入所述第二分类器进行检
测,检测结果全部被存入所述数据库模块。
类器,所述第二分类器训练子模块基于隐马尔可夫HMM模型进行训练,得到所述第二分类
器。
器模型Logistic Model,将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化为一
个python类,作为所述第一分类器,并使用pickle库将训练好的所述第一分类器保存到本
地,以便后续检测时使用。
好的所述第一分类器进行检测,得到检测结果;
ModSecurity提供的规则集进行正则表达式匹配,对恶意流量进行初步的识别和检测,将已
知攻击类型的请求筛选出来,得到筛选后的剩余流量数据。
行有针对性和侧重性的检测,大大降低了错检率和漏检率;
样,对内网WEB服务器提供了更高级别的保护;
量的检测,便于后续的网络漏洞分析和恶意请求的实时拦截,而且具有错检率和漏检率低、
数据集适应性强等优势。
附图说明
具体实施方式
于文中提到的实施例。
1、流量检测模块2;所述数据库模块3被配置为存放网关WEB流量数据,所述分类器训练模块
1被配置为进行分类训练,以得到第一分类器和第二分类器,所述数据库模块3中存放的网
关WEB流量数据被传送给流量检测模块2,经正则匹配和流量类别划分处理后,分为内网请
求流量数据和非内网请求流量数据,所述非内网请求流量数据被送入所述第一分类器进行
检测,所述内网请求流量数据被送入所述第二分类器进行检测,检测结果全部被存入所述
数据库模块3。
二分类器训练子模块基于隐马尔可夫HMM模型进行训练,得到所述第二分类器。
求检测模块被配置为利用第二分类器进行检测。
练。本系统针对网关流量日志的两种不同的流量特征使用了两种机器学习算法,从而达到
深度检测的效果。训练模块则使用人工标注的数据集以及公开的数据集完成对两个分类器
的训练任务。
URL以及流量的标签,即是异常流量还是正常流量。
串都可以看作是该条URL的“特征”;而在TF‑IDF算法中,整个数据集URL子串化后的结果作
为输入,输出每条子串对应在每个URL下的TF‑IDF值。在这里,系统使用了python语言
Scikit‑learn库下的TfidfVectorizer工具,这一个工具同时完成了N‑gram分词和TF‑IDF
处理的两个过程,最终得到URL‑TFIDF矩阵,该矩阵是m×n维矩阵,其中m是不同URL子串的
个数,n是URL的个数。
分类器模型Logistic Model。该分类器以一个URL的子串的TF‑IDF值作为输入,输出为该
URL是否对应一个恶意流量。将训练好的LogisticModel与N‑gram,TF‑IDF特征提取模块化
为一个python类,作为第一分类器,并使用pickle库将训练好的第一分类器保存到本地,便
于后续的检测。
为该事件为异常事件。因此,使用训练的样本为良性样本。从已有的网关流量日志中的内网
WEB服务器访问流量中人工提取3000条良性请求作为良性样本,并做好标记用于训练基于
HMM的第二分类器。
型,参数名字,主机域名计算对应的md5码作为该属性的id,同时对该部分的请求内容做泛
化处理,泛化后的结果作为一种状态。这样一个id代表某一请求路径,或者某一GET请求参
数,对每个id建一个列表,保存着训练集中出现的所有状态。
一个ID训练一个HMM模型,从而可以预测所有待测GET请求参数和请求路径发生的概率。第
二分类器加载训练好的HMM模型,判断待测内网WEB服务器请求流量是否为良性请求。
流量分为内网服务器访问流量与非内网WEB服务器访问流量。内网服务器访问流量随后被
传入第二分类器,也就是基于HMM的分类器,经过该分类器后内网服务访问流量可以被标记
成两类,即良性请求和恶意请求。其他流量被传入第一分类器,即使用N‑gram、TF‑IDF做特
征提取的逻辑回归分类器,这些流量可以被判别为其他恶意请求或其他良性请求。全部检
测的恶意请求包括正则表达式匹配筛选出的恶意攻击,第一分类器及第二分类器得到的恶
意请求,利用两个分类器进行分类检测,系统实现了对恶意请求的深度检测效果。
好的所述第一分类器进行检测,得到检测结果;
ModSecurity提供的规则集进行正则表达式匹配,对恶意流量进行初步的识别和检测,将已
知攻击类型的请求筛选出来,得到筛选后的剩余流量数据。
依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术
方案,皆应在由权利要求书所确定的保护范围内。