论文笔记集 DeepLearning for Web Attack Detection

Posted on Tue 13 April 2021 in AIForSecurity • 2 min read

在zeroWall一文中, 已经简单介绍了利用机器学习辅助Waf的方法. 实际上zeroWall一文所述的领域即网络攻击检测(web attack dection). 这里简述一些阅读过的但整体方法不够有启发性或实验不够solid的论文.

Anomaly-Based Web Attack Detection: A Deep Learning Approach

本文认为一组URL可以规范化为如下形式, 即abs_path表示资源地址, 而query总是跟在"?" 标记之后

"http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

首先将一组URL经过序列化后分为两个部分: URL本身(图中表示为全部URL, 但按照文章所表述的URL Path 应该不含query部分)以及Query部分, 见图1.

图一

随后将两组数据经过分词之后分别传入两个RNN结构(两层的GRU或LSTM)的神经网络以及计算其异常概率, 最后将所有的输出汇总(文中并未给出使用何种方式汇总两组RNN给出的多组异常概率)并输出给一MLP层作为最终的异常概率. 见图二

图二

实验环节, 本文使用HTTP CISC数据集进行测试, 其结果如图三所示

图三

结论

基于有监督的异常检测的泛化性是一个比较严重的问题, 而且本文因为工作量的较大原因仅处理了HTTP GET的请求, 在网络攻击中POST等其他提交数据的请求同样是十分危险的. 实验环节, 仅在一个较小的数据集上进行了处理,同时实验细节的讲述也比较含糊. 当然本文也提出了一些比较有意思的观点: 本文认为将一个URL请求视为时间序列, 字符的顺序位置都会对异常检测有所帮助, 比如"id=1/union/union/select/select+1,2,3/*i" 很明显是一个sql注入, 因为ID一般都接受一个数字符号. 但对于这一点作者并未详细论证, 直接使用了RNN对这一"特征"进行了统一建模. 如果对这一点进行深入研究, 将其作为辅助特征再次插入特征集合, 应该会有很好的效果

Web Application Firewall using Character-level Convolutional Neural Network

本文基于CLCNN(Character Level CNN)对异常的HTTP请求进行识别. 首先将原始的HTTP请求使用URL Decode, 随后将解码后的URL请求用0填充指1000bytes的长度/裁剪至1000. 随后利用词嵌入将其表示为128维的向量, 最后利用一维卷积和全连接输出其异常概率. 见图四

图四

实验环节, 本文使用HTTP CISC数据集进行测试, 其结果如图五所示

图五

结论

与上一篇文章相同基于有监督的机器学习对异常请求进行处理, 其主要问题也与上一篇问题类似. 相对而言这篇论文比较重要的一点是每条请求使用该模型处理只需要2.4ms. 处理速度对于Wad这一问题是很重要的, 但其他文章都很少提及这一点.

A Deep Learning Method to Detect WebAttacks Using a Specially Designed CNN

本文与Web Application Firewall using Character-level Convolutional Neural Network一文类似, 都使用CLCNN网络结构处理HTTP Request. 但细节上本文, 将URL Request进行了分词处理, 随后将经过词嵌入的各个词向量进行卷积以及拼接, 最后交由MLP进行输出处理. 见图六

图六

实验方面, 数据集仍然采用十分常见的CSIC 2010数据集, 按照7:0.5:2.5的比例划分数据集. 最后的Accuracy达到了百分之96.49

结论

本篇论文和上一篇论文基本一致, 区别为一个是Chararter Level 一个是World Level.

Deep Anomaly Detection in Packet Payload

本文的主要目的是对网络数据包负载进行异常检测, 其核心观点是网络数据负载中的异常有两种模式long term 异常数据 以及 short term异常数据. 如下图七所示

图七

针对这一特点, 作者设计了一种负载异常检测框架, 其由2部分组成: 一个用于提取特征的滑动窗口. 一个有LSTM + CNN + MLP的检测器. 框架结构如下图八所示

图八

下面对流程结构中的一些关键点进行解释 Data Preprocessing: 实际就是将网络中的bit利用网络协议进行解析, 以便于准确的提取Payload段中的内容

BlockSequence Construction: 文中说使用滑动窗口, 实际上就是ngram. 作者将ngram提取出的结构, 分为高频率的字段, 和低频率的字段. 对于低频率的字段且不符合字典(特征库)的字段直接丢弃(文中详细描述并未提及, 仅在Introduction中提到filtrate by dictionary). 对于高频率字段也会经过字典选择. 实际上字典储存了数据集中所有字段的频率, 通过人工选择频率界限.

Block Embedding: 即word embedding. 其基于inear relational embedding进行词嵌入.

模型方面: 基于LSTM(全输出模式) + CNN + MLP进行输出. 见下图九

图九

实验方面: 本文在三个数据集上进行实验 CSIC 2010, CIDIS 2017以及ISCX 2012数据集.

Conclusion

一篇基于有监督的异常检测, 辞藻华丽. 特征提取和模型方面比较传统. 比较有新意的地方在于, 采用全输出的LSTM结构作为二次特征提取器, 结合CNN三次提取特征. 但模型比较庞大, 估计处理时间会很长, 吞吐量难以保证.

Locate-Then-Detect: Real-time Web Attack Detection via Attention-based Deep Neural Networks

本文设计了一种名为LTD(locate then detect)的基于Attention机制的系统来检测网络攻击, 同时也基于Detection机制来定位(解释)网络攻击的敏感区域. 该系统分为两个子模块, 用于定位可疑区域的PLN(payload locating network), 用于进行分类的PCN(payload classification network). 通过PLN的过滤, LTD减少了82.6%的计算成本, 使得对于每个请求仅需5ms处理时间. 整体结构见下图十

图十

Method

  1. PLN: PLN作为第一阶段的神经网络, 与其他神经网络一样其输入需要经过特殊处理. PLN本质上就是个简易的Detection模型

    • 词嵌入, 尽管作者将这一阶段称为网络请求嵌入, 但其本质上仍然为将长度为L的请求嵌入为L*X维度的向量
    • 特征提取, 利用Xception模型提取特征, 即CNN提取特征
    • 候选区域, 两个1*m(m = embedding size, 以保证语义完整性)的CNN, 一个用于回归(输出bounding box), 一个用于分类(输出类别). 于检测模型相同, PLN会输出p个Anchors. 并设置Anchor大小大于3, 范围在 [0, L]之间并且Anchor内的数据不含有太多的0(padding). 训练PLN和训练Detection模型基本一致, 如IoU小于0.2的bounding box作为负样本, 如 负样本与正正样本比例为3 : 1, 如PLN的训练公式为
      $$ \begin{aligned} L\left(l_{i}, p o s_{i}, p_{i}, p o s_{i}^{*}\right) & = \frac{1}{N_{cls}} \sum_{i} L_{c l s}\left(l_{i}, p_{i}\right) \\ &+ \lambda \frac{1}{N_{r e g}} \sum_{i} l_{i} L_{r e g}\left(p o s_{i}, pos_{i}^{*}\right)\\ \end{aligned} $$
      其中\(\lambda\)为1 ,i表示训练集中第i个anchor, 当\(l_i\)为ground truth时为1, 否则为0. \({pos}_i, {pos}_i^*\) 分别表示ground truth和预测的值. \(L_{cls}\)为log损失, \(L_reg\)为平滑L1损失, 其公式如下
      $$ {L_{1}}(x)=\left\{\begin{array}{ll}0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise }\end{array}\right. $$
  2. PCN: 经过PLN确定可疑区域后, PCN将会对可以区域进行分类检测. PCN基于Text CNN结构: 5层CNN结构 + overtime max pooling. 其损失函数设计如下

    $$ L_{P C N}=-\frac{1}{N} \sum_{i}^{N} \sum_{j}^{K} y_{i j} \log \left(p_{i j}\right)+\lambda\|\mathbf{W}\|, $$

  3. 网络攻击标注: PLN模型的训练需要大量的标注数据, 作者使用HMM-WEB模型进行自动标注

Experiments

实验在CSIC数据集以及物理网络中提取的数据集. 并于传统Waf, libinjection以及HMM-WEB进行了比较. 其结果如下图十一 图十一

Conclusion

本文开创性的将Object Deteciton 和 异常检测结合在一起. 但标题中提及的Attention based于比较熟知attention并不相同, 实际上是指这种先定位后检测的过程. 将系统的"注意力"集中到可以的区域上. 本文最大的问题应该在使用HMM-WEB提供标注上, 不确定会有多大的影响.