Webshell检测方法(四)
2020-02-25 10:15:47 Author: www.4hou.com(查看原文) 阅读量:224 收藏

Webshell检测方法(一)

Webshell检测方法(二)

Webshell检测方法(三)

0x00 前言

本篇工作依旧使用了随机森林算法,而前一篇文章[Webshell检测方法(三)]结合的是fastText,本篇文章结合的是梯度提升迭代决策树算法。

0x01 研究方法

在前一篇文章中,对于features的提取分为两大步:

1. 分析提取文件的静态特征

2. 利用PHP-VLD获取文件的Opcode,利用fastText训练文本分类器模型

1、静态特征

而本篇文章中所用和其相似,但有所提升,在前一篇文章的基础上增加了如下文件的静态特征:

1.数据压缩比

由于base64方式压缩的webshell通常具有更均衡的特定字符分布,并且往往具有更高的数据压缩比,因此使用数据压缩比检测webshell,有一定的成效。

2.eval函数的使用

一句话木马的重要特性即eval,一般的一句话木马格式如下:

@eval ($_post[xxxxx])

因此一个文件的eval的数量是模型训练的一个重要feature。

除此之外,之前的文章利用PHP-VLD提取文件Opcode,再使用fastText训练文本分类器,而本篇文章与之不同:将获得的Opcode,使用Scikit-learn从中提取2种特征:TF-IDF向量和Hash向量。

2、TF-IDF Vector

TF即Term frequency,词频计算公式如下:

2020-01-14-10-54-31.png

其用来评估一个词语在文本中出现的频率。

IDF即inverse document frequency,逆文本频率指数如下:

2020-01-14-10-55-28.png

其用于评估该词语在所有文本中是否罕见。

故此TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

其计算方法如下:

2020-01-14-10-58-18.png

3、Hash Vector

hash散列可以将任意长度的数据转换为固定长度的数据,同时这种这种转换通常是一对一的,我们很难找到同样的hash对应不同的数据。因此可以利用hash作为某个特征向量的索引,因此无需创建大型字典,而这个恰好是TF-IDF所缺乏的。

例如:特征 i 会被hash到索引位置j:

h(i) = j

特征 i 的词频表示为φ(i),那么公式如下:

2020-01-14-11-04-48.png

在提取特征结束后,实验尝试在仅适用6个静态特征和GBDT算法进行检测,成功率已达96.9%。

对于GBDT算法,其核心是:每棵树学的是之前所有树结论和的残差,即真实值-预测值。每一轮梯度boosting训练都会减少上一轮训练的残差,即在梯度方向上训练一个新的模型来降低上一轮训练的残差。

2020-01-14-13-52-13.png

其优点在于可以有效减少feature,降低过拟合现象,并且具有更高的鲁棒性,不太可能受到训练集规模的影响。

这也是将其与随机森林算法结合使用的一个原因。同时为了进一步提高效率,加入了PHP Opcode的特征提取,和随机森林算法:

2020-01-14-11-16-59.png

在结合前6个静态特征后,实验使用随机森林获取TF-IDF矩阵和hash矩阵的预测结果,最后结合8个feature对GBDT进行训练。

0x02 数据实验

实验从Github收集了2232个webshell,2388 CMS样本文件:

2020-01-14-11-07-23.png

但由于有些文件提取特征不成功,或者并非php文件,因此丢弃了大小超过20000的文件,并未使用。

而后从如下几个角度评估了RF-GBDT算法的性能:

2020-01-14-11-09-56.png

2020-01-14-11-10-08.png

同时进行了一些对照实验,结果如下:

2020-01-14-11-12-34.png

2020-01-14-14-13-26.png

可以看到,如果仅用6个静态features的GBDT在各方面的性能都不如使用8个features的RF-GBDT。除此之外,实验中还挑选了一些网上主流的webshell检测工具,结果如下:

2020-01-14-11-13-43.png

这同时也证明了RF-GBDT具有非常好的性能。

本文为 一叶飘零 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/6z1N
如有侵权请联系:admin#unsafe.sh