前言

无。


基于语义分析的Webshell检测技术研究

预处理模块

词法分析

借用php本身的词法分析器。

语法分析

语法分析程序(可能自己搞的?)构建AST树。

污点子树提取模块

遍历AST树,根据各个节点的Zend操作符计算风险等级(如Eval、System、FuncCall为高危,Assign为中危)。

之后剪除安全分支,通过变量传递和风险等级提取污点子树。

基于特征图的风险值算法

将单个行为提取为操作+输入参数+输出,根据行为间控制依赖和数据依赖构造行为特征图。

将受分析对象和特征图进行节点和边匹配,计算匹配值,超过阈值则为风险文件。

基于决策树的Webshell检测方法研究_胡建康

特征选取

文档属性
  • 单词数量(?)
  • 不同单词数量
  • 行数
  • 平均每行单词数、空字符和空格数量(?)
  • 最大单词长度
基本属性
  • 注释数量
  • 字符操作函数
  • eval、exec、shell_exec、system等函数调用
  • 系统函数调用数量
  • 脚本区块数
  • 函数参数的最大长度
  • 加解密函数调用
高级属性
  • 文件操作
  • ftp操作
  • 数据库操作
  • ActiveX控件调用

决策树

计算信息熵,根据信息增益率(由信息增益度和分裂信息度计算)选择属性构建决策树。

集体学习

每个样本分配一个权重,选取样本子集构造决策树,使用决策树预测样本集。加权正确率符合要求时,降低正确分类样本的权重,提高错误分类样本的权重,并进入下一次迭代,若迭代完成则输出带有影响因子的决策树。

基于RNN的Webshell检测研究

数据预处理

切词

采用以非字母和非数字字符作为分割符来切分源文件,结果可能是变量名称、函数名称等。长度为小于4的字符串一般是没有实际意义的变量名或变量值的一部分,几乎在每个样本中都会大量出现。而字符串长度大于等于 5的字符串大多是经过编码和加密处理之后的字符串,此类字符串词频极低,且对源文件几乎没有区分能力。只保留字符串长度介于3到15之间的字符串。

提取关键词

使用TF-IDF算法(正常文件和webshell文件调用函数不同,且变量名称可读性高于webshell文件),提取出webshell文件关键词。

模型结构

使用GRU结构,不懂。


参考


Web 机器学习

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

论文研读(3)
论文研读(1)