sky's blog

Paper Summary & Evaluating CNN and LSTM for Web Attack Detection

字数统计: 1,308阅读时长: 5 min
2020/01/13 Share

前言

本篇paper来自ICMLC 2018,与前一篇文章《CNN-Webshell & Malicious Web Shell Detection with Convolutional Neural Network》出自同一学校,应该是之前工作的改进版。其对于webshell的检测也是主要集中于HTTP Requests检测。

Background

与2017年的paper《CNN-Webshell: Malicious Web Shell Detection with Convolutional Neural Network》不同,作者在本篇文章中改良了之前对HTTP Requests流量文本分割的方式。
根据之前的工作,通过符号\&进行分割后,每一个单词可以变为一个one-hot向量,对于一个长为L的序列,其可以得到一组one-hot向量:

但这样是非常浪费时间的,不仅因为其是高维向量,并且忽略了单词与单词之间的关系。受到word embedding的启发,作者将one-hot向量转换成一个低维连续向量:

其可以通过one-hot向量左乘权重矩阵来实现:

其中:
,|V|是词汇表中唯一单词的数目。
对于矩阵M,其可以通过随机分配或学习具有一个隐藏层的网络来获得。在此作者通过输入一个词(一个one-hot向量)并输出下一个词(一个one-hot向量)来训练网络,以学习两个共现词之间的关系。同时经过实验,这样得到的矩阵M比随机分配具有更好的性能。
经过这样转换,之前的one-hot向量序列转换为如下矩阵:

研究方法

众所周知,CNN可以通过卷积层和池化层,提取较为重要的features,而LSTM可以存储长期依赖关系,那么很自然的想到,可以将二者融合,用来处理webshell检测的问题。

首先通过CNN的卷积,我们可以得到如下结果:

其中b是偏差,φ是非线性校正函数,n个滤波器为:

但是由于卷积层和池化层产生的结果是一个向量,并不能直接和LSTM进行结合,所以为了解决这个问题,作者将全局最大池替换为局部最大池,那么在t位置时,局部最大池的结果为:

故此我们可以得到一组新的向量:

此时:


那么此时,即可将gt序列输入LSTM,完成组合分类:

对于CNN+LSTM的算法,输入单词维数为40,每个序列固定长度为56个单词。对于CNN,其具有100个宽度为5的滤波器和一个大小为5的本地最大池层,然后使用rate为0.9的dropout层来抑制过拟合。并将输出输入LSTM,而对于LSTM,其隐藏变量维数为100,其最后的输出同样连接到rate为0.9的dropout层。

数据实验

实验中使用的数据集为CSIC2010。在实验中,测试集中有超过36000个正常请求和25000个异常请求。异常请求包含大量的web攻击,如SQL注入、信息收集、文件泄漏、CRLF注入、XSS和参数篡改等。
同样的,实验中也将提出的算法与传统方法进行了比较,比较对象如下:

  • Multinomial Naive Bayes (NB)
  • Linear Support Vector Machine (Linear SVM)
  • Neural Network (NN)
  • k-Nearest Neighbour (kNN)
  • Decision Tree (DT)
    结果如下:

    可以发现CNN+LSTM的算法取得了最好的性能。同时由于卷积网络中滤波器的数目和滑动窗口的宽度是关键参数,因此实验测试了不同数量的滤波器和滤波器宽度。结果如下:

    可以发现,对于滤波器数量,性能在100个时表现最好,而对于滤波器宽度,性能在5时达到高值,而后缓慢增长。
    同时考虑到LSTM的关键参数是隐藏变量的维数,所以实验对于不同维数也做了相应的测试,结果如下:

    可以发现维数在20~300这个区间内,LSTM的性能一直在提升,但是考虑到时间消耗会随维数上升而上升,所以需要权衡二者之前的关系,达到最佳性价比。
    并且实验还测试了不同局部最大池大小对CNN+LSTM的性能影响,结果如下:

    可以发现,当本地最大池大小设置为3时,会取得最佳性能。
    除此之外,针对于小规模的CSIC2010数据集,过拟合问题也是关注的一个点,实验使用dropout方法进行抑制拟合,并对其进行评估,结果如下:

    可以发现LSTM对于dropout rate有较大的变化,而CNN和CNN+LSTM方法更加具有鲁棒性,其在rate大于0.3后,性能缓慢增长。
    最后,对于前文所提到的矩阵M的获取也是一个关键因素,实验使用了随机分配和机器学习两种方式进行比对测试,结果如下:

    不难发现经过机器学习后的模型拥有更好的性能。

后记

该工作将CNN和LSTM进行了结合,用于webshell检测,获得了不错的效果,同时分析了不同的因素对模型性能的影响,对后人工作具有一定的指导意义。

点击赞赏二维码,您的支持将鼓励我继续创作!
CATALOG
  1. 1. 前言
  2. 2. Background
  3. 3. 研究方法
  4. 4. 数据实验
  5. 5. 后记