原文标题:GlareShell: Graph Learning-based PHP Webshell Detection for Web Server of Industrial Internet

原文作者:Pengbin Feng, Dawei Wei, Qiaoyang Li, Qin Wang, Youbing Hu, Ning Xi, Jianfeng Ma

原文链接:https://doi.org/10.1016/j.comnet.2024.110406

发表会议:Computer Networks

笔记作者:张琦驹@安全学术圈

主编:黄诚@安全学术圈

编辑:张贝宁@安全学术圈

1、引言

工业互联网通过 WebServer 将数十亿智能设备与生产管理连接在一起,而PHP 仍以76.9% 的占比成为最主流的服务器端语言。攻击者利用 SQL 注入、文件上传等漏洞植入 PHP Webshell,即可在工业现场横向移动、执行命令或窃取工业数据。 现有防御手段存在两大明显局限:

  • 动态行为分析受代码覆盖率限制,且无法离线批量扫描;

  • 传统静态特征(opcode 序列、AST)缺乏跨过程语义,难以对抗混淆、反射等变种。

为此,本文提出 GlareShell——首个将 ICFG 语义图、词嵌入、风险权重与图神经网络完整落地的 PHP Webshell检测框架,该框架支持文件写入时同步触发实时分析,可直接嵌入工业 Web Server,实现零依赖、高召回、低误报的实时防御。

2、系统设计

如下图所示GlareShell系统架构具有三个不同的功能划分:ICFG提取器、节点属性生成器、GNN分类器。

ICFG 提取器(ICFG Extractor)。ICFG 提取器负责从 PHP 脚本文件中提取程序的执行流结构,为后续的语义分析和恶意行为检测提供基础。它利用静态分析工具 Lchecker 从 PHP 脚本文件中提取过程间控制流图(ICFG),通过结合控制流图(CFG)和调用图(CG)来构建 ICFG,从而完整地表示 PHP 程序的执行逻辑。

  • CFG 和 CG 的结合:能够捕捉程序中跨函数调用的执行路径,这对于检测潜在的恶意行为至关重要

  • 噪声去除:会移除一些对执行语义贡献较小的无意义 PHP 语句

  • 三元组表示:ICFG 的基本节点采用三元组格式(操作符、左操作数、右操作数),便于后续的语义嵌入和风险评估

节点属性生成器(Node Attribution Generator)。节点属性生成器负责从 PHP 语句中提取语义信息和风险等级,并将其作为节点属性输入到图神经网络(GNN)中。它通过语义嵌入生成器和风险权重分配器,从 PHP 语句中提取语义信息和风险等级,为后续分析提供丰富的语义和风险信息。

  • 语义嵌入生成器:

    • 语句归一化:将用户定义的函数、局部变量和数值常量替换为统一的标识符

    • Word2Vec嵌入:将归一化后的 PHP 语句嵌入到密集的实值向量中

  • 风险权重分配器:

    • 风险等级分类:根据 PHP 语句中包含的函数类型分为关键、混淆和正常三种类型

    • 风险权重结合:将语义嵌入和风险权重结合起来作为节点属性

GNN 分类器(GNN Classifier)。GNN 分类器负责基于提取的 ICFG 结构和节点属性,通过图神经网络算法识别 PHP 脚本文件的恶意性。它利用图神经网络(GNN)算法,通过迭代聚合邻接节点信息生成图嵌入,最终通过多层感知机模型对文件进行恶意性分类。

  • 图结构信息捕捉:通过迭代聚合邻接节点的隐藏表示生成图嵌入

  • 多种 GNN 算法支持:采用 GCN、GAT 和 GIN 等算法

  • 恶意性分类:将生成的图嵌入输入到 MLP 模型进行分类

3、核心算法

ICFG构建算法。GlareShell采用过程间控制流分析技术,通过有机整合控制流图(Control Flow Graph, CFG)与调用图(Call Graph, CG),构建完整的过程间控制流图(Interprocedural Control Flow Graph, ICFG),从而实现对跨函数执行路径的精确建模。该机制通过动态函数链接实现:首先建立函数标识符至对应CFG的映射关系;继而遍历初始ICFG结构,识别函数调用节点;通过语义解析获取被调用函数标识符;最终将被调用函数的完整CFG无缝集成至调用点位置。在节点表示层面,系统采用(操作符,左操作数,右操作数)三元组形式化表征PHP语句的语义结构。为优化分析效能,通过预设的语法模式识别机制,系统性地过滤安全分析无关的语句(如变量初始化语句及界面渲染指令),显著提升恶意行为特征的聚焦度。

节点属性生成算法。本系统采用多模态特征融合策略生成节点属性向量。在语义嵌入生成阶段,首先实施语句归一化处理:将用户定义函数统一映射为"user-define"标识符,局部变量抽象为"local"元符号,数值常量泛化为"im"占位符,以此消除语法糖干扰。继而基于归一化语料库,构建上下文感知的语义嵌入模型:通过定义滑动窗口机制捕捉语句上下文依赖关系,采用Word2Vec算法训练分布式向量表示,最终生成具有语义保持性的稠密向量。

在风险权重分配方面,设计三级威胁评估体系:将包含程序执行函数(如exec、system、popen)的语句标记为关键(Critical);将涉及代码动态执行/回调机制(如eval、assert、array_map)的语句归类为混淆(Obfuscated);其余语句判定为正常(Normal)。最终通过向量拼接操作,将语义嵌入向量与风险编码向量融合为统一节点属性表征,实现语义信息与安全威胁级别的协同表示。

4、实验评估

研究者设计了一个实验平台,配置包含如下: 实验平台的硬件环境包含两台主要设备。一台配置为 Intel Xeon E5-2620 CPU 和 24GB RAM 的服务器,专门用于ICFG的提取工作。另一台是配置了 Intel i7-12700 CPU 和 NVIDIA RTX 3060 GPU 的机器,作为模型训练平台。

研究所用的数据集由两部分构成。Webshell 恶意脚本样本共计 3,104 个,采集自 5 个公开的 GitHub 仓库。作为对比的 正常脚本文件 共计 10,375 个,源自包括 WordPress 和 Laravel 在内的 6 个主流项目。所有数据按照训练集 80%、验证集 10%、测试集 10% 的比例进行了划分。

下表展示了不同词嵌入方法在PHP Webshell检测任务中的性能对比:所有六种方法均参与评估,其中FastText通过其n-gram字符机制全面捕获PHP语句的语义特征,显著提升了检测效果。Glove受限于共现矩阵对多样化语句的适应性不足,表现较弱。GlareShell框架凭借FastText的语义分析能力,实现了最高检测精度(F1=0.9454)。

下表展示了三种图神经网络算法在GlareShell框架中的最优超参数配置:所有参数均通过系统化网格搜索确定,其中GAT因多头注意力机制需独立设置注意力头数(最优值=8),而GCN和GIN的隐藏维度差异反映其结构特性需求。统一的训练轮数(120轮)与批大小(256)表明此为GNN模型的稳定收敛基准。

下表展示了GlareShell与现有PHP Webshell检测方法的性能对比:所有方法均采用不同特征提取策略,其中Tongjian等通过两阶段编码(TextRank+CodeBert)达到最高F1=0.9930,而GlareShell凭借ICFG图结构与语义-风险双属性设计,以GNN模型实现接近最优的F1=0.9887。

5、总结

本文提出了一种名为 GlareShell 的创新性PHP Webshell检测框架,该框架基于图学习技术,融合了语义嵌入、风险权重分配和图神经网络分类三重机制。GlareShell通过静态分析提取程序间控制流图(ICFG)以捕获完整执行路径,利用FastText生成语句级语义向量,并结合高危函数标记强化攻击模式识别。实验表明,其GAT分类器在包含13,479个脚本的数据集上实现了0.9887的F1分数,显著提升了工业互联网Web服务器的威胁防御能力。

安全学术圈招募队友-ing

有兴趣加入学术圈的请联系 secdr#qq.com

声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。