欢迎访问Sunbet,Sunbet是欧博Allbet的官方网站!

首页Sunbet_新闻事件正文

Webshell检测方法(四)

b9e08c31ae1faa592020-02-2521技术

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,词频计算公式如下:

Webshell检测方法(四)  技术 第1张

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

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

Webshell检测方法(四)  技术 第2张

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

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

其计算方法如下:

CVE-2020-8813:Cactiv1.2.8身份验证远程代码执行漏洞分析

0x01  Cacti 介绍 Cacti是一个网络图形解决方案,利用RRDTool的数据存储和图形功能,Cacti提供了现成的高级图形模板,多种数据采集方法和用户管理功能。所有这些都封装在一个直观,易于使用的界面中。 0x02  漏洞分析 通过分析Cacti代码中的多个函数的代码发现了此漏洞,必须将多个因素联系在一起才能执行代码,该漏洞主要发生在攻击者尝试将恶意代码注入“ Cacti” cookie变量时,在与一些字符串连接后被传递给shell_exec函数,但是当尝试操作cookie值时会遇到身份验证问题,这将无法访问该页面,因此可以以如下方式访问易受攻击的页面:一个“Guest”,不需要身份验证即可访问它,因此编写漏洞利用代码以便为

Webshell检测方法(四)  技术 第3张

3、Hash Vector

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

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

h(i) = j

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

Webshell检测方法(四)  技术 第4张

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

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

Webshell检测方法(四)  技术 第5张

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

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

Webshell检测方法(四)  技术 第6张

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

0x02 数据实验

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

Webshell检测方法(四)  技术 第7张

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

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

Webshell检测方法(四)  技术 第8张

Webshell检测方法(四)  技术 第9张

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

Webshell检测方法(四)  技术 第10张

Webshell检测方法(四)  技术 第11张

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

Webshell检测方法(四)  技术 第12张

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

本文为 一叶飘零 原创稿件,授权嘶吼独家发布,