前言
无。
基于语义分析的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结构,不懂。