论文名称:《Locate-Then-Detect: Real-time Web Attack Detection via Attention-based
Deep Neural Networks》
主要针对的攻击类型:sql、xss
采用的方式:先定位攻击载荷在进行恶意检测
内容解读:
主要分为两阶段网络
PLN(Payload Locat-ing Network):在整个url、post中定位到关键部分,去掉无用信息
PCN(Payload Classification Network):利用PLN网络得到的关注度信息进行分类
PLN
目标:
输入:固定长度的请求输入文本
输出:区域位置和可疑置信度
核心思想:图像分割的思想
PLN网络要进行单独的训练,然后加到PCN网络之前,固定参数值(我的理解)
request请求编码
首先设置一个最大长度L,然后进行字符级别的embedding,即每个字符都转化成一个对应的k维Embbeding向量,最终输出为:L*K维向量
这里的最大长度法和我们之前的方法类似,直接进行长度限制,忽略了在超长的正常参数尾部追加恶意payload形式的攻击
特征提取
模型:Xception
Xception模型
先进行普通卷积操作,再对 1×1 卷积后的每个channel分别进行 3×3 卷积操作,最后将结果 concat
加速计算:thin feature maps with small channel(不损失很大精度的前提下显著提升速度)
模型部分
沿着特征图滑动几个mini-networks来检测可以片段,该网络采样特征图一个nm的窗口,在mini-network层之后经过两个1\m并列的层——区域回归层和区域分类层
为了保证保持嵌入张量中这些向量的语义完整性,我们令m等于字符向量的嵌入大小。
reg层输出坐标:(p,2p)有效载荷的开始位置和结束位置
cls层:输出每个区域的得分
对于输入特征图为WH的,将会有H\P个区域
并不是所有区域都是有效的,
区域的标注
区域标注为积极标签的方法为:
1.将用于最大的交集序列(Ios)的区域标为积极
2.将交集序列的值(Ios)大于0.5的值定位积极
区域标注为消极标签:
将交集序列的值小于0.2的标为消极序列
如果既没有标为消极也没有标为积极,那么则忽略该区域。一般情况下消极区域的数量远大于积极区域,如果消极区域和积极区域的比例大于3:1,那么将其归置到3:1。
PLN层的损失函数:
参数意义:
i:区域的编号
li:区域的label,积极区域为1,否则为0
posi、pos∗i :分别代表了区域的开始位置和结束位置
Lcls:是区域的分类对数损失函数,
Lreg: 是积极区域的回归损失函数,不关注负样本,该回归损失函数采用:
x表示区域真实标签和预测值之间的差距
λ:控制损失函数的前后两个部分的重要性,本文中采用的是1.0
Ncls: 本文中设置为mini-batch 大小
Nreg:本文设置为区域个数,
数据标注
在整个LTD模型结构中,需要大量的标注数据,本文提出了基于HMM的异常检测系统来辅助序列标注,该系统通过大量的HMM模型来实现,每个host的每个url的参数值都会训练一个hmm模型,检测到的异常参数经过规则检测系统确定为xss或sql会标记起始和结束位置。
作用:表示有效payload位置
方法:参数hmm+规则系统
实例:
uri1 = /a.php?id=1&name=1’ and 1=1
首先提取各个参数的值,得到
{val1 : 1, val2 : 1′ and 1 = 1}
使用hmm参数异常检测模型确定是否存在异常参数值
val2是异常的参数值
使用规则模型判别该参数为sql注入,定位位置,标记异常区域
[Start (17), End (27), Label (1)]
PCN
目标:对PLN层定位的可疑区域,在PCN部分进行深入的分析,找到攻击的区域,
输入:PLN中得分最高的三个区域(最可疑)
输出: 是否为攻击以及攻击类型
核心思想:采用CNN进行文本分类
具体做法
采用5层不同大小的卷积核,并且每个卷积核后都会带一个max-overtime pooling operation ,不同的卷积核大小保证了PCN能够精确地识别具有多种特征的攻击。这些特征被连接起来,在连接在层线性层,最后使用softmax输出是各种攻击的可能性
损失函数
PCN部分的损失函数就是标准的交叉熵损失函数加上一个L1正则化项:
该层主要是一个文本分类的层,和PCN层共享相同的Embedding向量,输出给定区域是否为恶意以及攻击类型
数据产生方法
1.首先使用传统的WAF找出正常流量
2.构造sql、xss的payload参数值随机换到正常流量的参数值部分
实验结果
1.CSCI
CSCI 2010数据集包含针对电子商务Web应用程序生成的流量,该数据集包含25,000多个异常请求和36,000个良性请求,使用其中2,072 SQLi和1,502 XSS样本作为黑样本,其他的正常流量和攻击流量统一标记为白样本。
LTD与RWAF相比,在精确率吧和召回率方面均要好。LTD和Libinjection都具有100%的精确率,但是LTD拥有更高的召回率。
2.真实流量
数据来源
300w条真实流量数据,其中包括38600个sql注入和xss攻击实例。
Part 1 模型优越性的证明
其中,
1.LTD获得了最高的精确率,HMM-Web获得了最高的召回率,但是它的误报率过高,在在真实的WAF应用中,误报率必须少于0.01%。
分析:在该实验中,HMM-Web方式之所以比LTD获得了更加高的准确率,是因为HMM-Web所采用的方式是基于异常检测的方式,只要是之前没有见过的流量都会被判别为恶意。但这种HMM异常检测的缺陷也非常的明显,每当有系统更新时,HMM-web模型都需要重新进行训练,因此HMM-web并不是一个很好的实时web入侵检测方式。
对于对于Web攻击检测,在误报和召回之间存在权衡,而低误报是生产环境中的先决条件。因为高误报会造成用户正常访问的阻塞
2.Libinjection和LTD都获得了100%的精确率,但LTD的召回率达到了99.8%,而Libinjection只有71%。下面是一些Libinjection误分类而LTD分类正确分类的样本:
分析:这里的解释有点没太看懂,好像有点和上表对不上,大致意思是说Libinjection过分依赖指纹库,进行微小的改变都很难进行检测,而且由于有些正常流量可能偶尔也会出现指纹库中的部分内容,因此很容易误报
3.LTD比RWAF方式准确率和召回率都好。
Part2 PLN部分有效性的证明
实验组1:LTD
实验组2 :VPCN,把url参数部分却分为key-value形式,LTD去掉PLN部分只留下PCN部分进行分类
个人看法:这里我个人觉得对比试验有点问题,因为直接用PCN部分进行分类不一定非要进行参数切分,因此这里使用切与不切分进行对比,证明LTD效率更高个人认为不成立,应该使用直接使用PCN进行对原始embedding后的内容进行分类
1.效率上
在有GPU的的环境下,带PLN的网络比不带的快6倍,没有GPU的环境下快了8倍。
分析:LTD之所以效率高的多是因为不使用PLN,直接参数个数过多,27.5的Url有13个参数以上,切分参数需要花费大量的时间,在真实流量中,包含参数个数可能更多。另一方面,一些开发者因为某些原因重新模块来隐藏参数,在这种情况下,基于规则的计算需要更加复杂的计算来提取该值。与传统的方法相比,LTD通过限制检测区域来加快计算效率,另一方面也避免了参数重写造成的切割效率问题
2.准确率
对照组:典型的char级cnn从原始请求进行分类
数据集来源:
训练集:真实流量中320w正常流量,80w攻击样本
测试数据集:10w条不同时间的正常流量数据,在其中选择10000个样本随机将其中一个参数的值替换为SQLi、XSS的攻击载荷,形成恶意样本,其他的为正常样本
经过实验,明显可以看出,直接的CNN的误报率和漏报率比LTD都要高得多,而这时因为一般payload的长度都很短,而url请求的长度很长。某些已知攻击的payload长度最短可以为6个字符,而这些很短的payload就可以隐藏在很长的背景字符串之中,导致CNN很难学到恶意payload,而LTD中的PLN模块能通过过滤不相关部分来发现隐藏在很长背景字符串中的短payload,因此,LTD可以更准确地区分实际的攻击有效负载和那些恶意的良性URL片段。
Part3 PLN输出可疑区域个数选择
分别绘制了xss、sql在1~5个可以区域的ROC、PR曲线,如下:
当区域数为3时,SQLi和XSS均达到了最好或者非常接近最好的准确率。使用更多的区域数能够获得更好的召回率,但是误报率将大大升高。
依然存在的问题
1.限定输入长度,对于特长的尾部追加式的攻击依然没有识别能力
2.单纯的在SQLi和XSS上进行实验,未来还需要文件包含和代码执行等其他攻击类型进行检测
3.所谓的提升了可解释性我觉得并没有很好地可以追溯源头
【1】Hmm-web: A framework for the detection of attacks against web applications
【2】Xception:Deep learning with depthwise separable convolutions.
【3】Detection of sql injection attacks using hidden markov model.
【4】Character-aware neural language models.
【5】A method for stochastic optimization
【6】 Light-head r-cnn: In defense of two-stage object detector.
【7】Application of the generic feature selection measure in detection of web attacks
【8】Ef-ficient character-level document classification by combining convolution and recurrent layers
貌似