冰蝎-Behinder 各版本流量浅析
字数 1994 2025-08-11 21:26:16

冰蝎(Behinder)各版本流量特征分析与检测方法

1. 冰蝎概述

冰蝎(Behinder)是一款流行的Webshell管理工具,具有加密通信、多协议支持等特点。随着版本迭代,其流量特征也在不断变化,从最初的明显特征到后来的高度隐蔽化。

2. 冰蝎V1.0流量特征

2.1 主要特征

  1. GET请求特征

    • URL格式:/shell.php?pass=1
    • User-Agent固定为:Java/1.8.0_211
  2. POST请求特征

    • Content-Type: application/octet-stream
    • User-Agent同样为Java版本
  3. 响应特征

    • Transfer-Encoding: chunked

2.2 检测方法

  • 基于GET包的检测

    • URL包含.php?pass=
    • User-Agent包含Java/*
  • 基于POST包的检测

    • User-Agent包含Java/*
    • 返回包包含Transfer-Encoding: chunked
    • 请求包Content-Type: application/octet-stream

3. 冰蝎V2.0流量特征

3.1 通信机制

V2.0采用动态密钥协商机制,通信分为两个阶段:

  1. 密钥协商阶段

    • 客户端通过GET请求(/shell.php?pass=645)获取服务器密钥
    • 服务器使用随机数MD5的高16位作为密钥
  2. 加密传输阶段

    • 使用协商的密钥进行AES128或XOR加密
    • 存在OpenSSL扩展则使用AES,否则使用XOR

3.2 密钥协商过程

  1. 第一次GET请求

    • 服务端产生密钥并写入session
    • 响应体包含16位密钥(小写字母+数字)
  2. 第二次GET请求

    • 生成另一个用于AES加密的密钥

3.3 固定特征

  1. URL格式

    • \\.(php|jsp|asp|aspx)\\?(\\w){1,10}=\\d{2,3}
  2. 密钥格式

    • ^[a-fA-F0-9]{16}$
  3. POST数据解密后格式

    • 固定格式与相对固定长度

3.4 可绕过特征

  1. Accept字段

    • Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
  2. User-Agent

    • 内置多个UA头,但版本较老
  3. Connection字段

    • Connection: Keep-Alive

4. 冰蝎V3.0流量特征

4.1 主要改进

  • 取消动态密钥协商,采用预共享密钥
  • 默认密钥为rebeyond的MD5前16位:e45e329feb5d925b

4.2 检测方法

  1. 尝试解密

    • 使用默认密钥解密POST数据
    • 成功解密且包含敏感PHP函数则可判定
  2. 弱特征参考

    • User-Agent库扩展至25个
    • Accept头固定值:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
      
    • Accept-Language固定值:
      Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
      
    • Referer中URL后的文件名纯大写或纯小写
    • 包含Cache-Control: no-cache

5. 冰蝎V4.0流量特征

5.1 主要改进

  • 增加多种加密算法
  • 增加附加magic魔数的AES加密方式
  • UA头缩减至10个

5.2 检测方法

  1. 尝试默认密钥解密
  2. 观察以下特征
    • UA头
    • Accept头
    • Content-Type
    • Connection: Keep-Alive
    • Referer
  3. 客户端连接特征
    • 本地端口分布在49700左右
    • 每建立新连接端口依次增加

6. 各版本对比总结

版本 密钥机制 主要特征 检测难度
V1.0 固定 Java UA、.php?pass=、chunked编码 容易
V2.0 动态协商 两次GET请求、16位密钥、固定URL格式 中等
V3.0 预共享密钥 默认密钥、固定Accept头、多UA 较难
V4.0 多种算法 端口规律、精简UA 困难

7. 检测建议

  1. 多维度检测:结合多个弱特征进行综合判断
  2. 行为分析:关注异常通信模式,如短时间内相同IP使用多个UA
  3. 解密尝试:对可疑流量尝试使用默认密钥解密
  4. 机器学习:对加密流量进行机器学习模型检测
  5. 规则更新:持续跟踪冰蝎新版本的流量特征变化

8. 防御措施

  1. Web应用防护

    • 禁用危险函数(eval, assert等)
    • 限制文件上传类型
    • 定期检查服务器文件变更
  2. 网络层防护

    • 部署WAF并更新规则
    • 监控异常HTTP请求
    • 限制服务器出站连接
  3. 日志分析

    • 收集并分析Web服务器日志
    • 关注异常URL模式和UA

通过深入理解冰蝎各版本的流量特征,安全团队可以更有效地检测和防御这类Webshell工具的威胁。

冰蝎(Behinder)各版本流量特征分析与检测方法 1. 冰蝎概述 冰蝎(Behinder)是一款流行的Webshell管理工具,具有加密通信、多协议支持等特点。随着版本迭代,其流量特征也在不断变化,从最初的明显特征到后来的高度隐蔽化。 2. 冰蝎V1.0流量特征 2.1 主要特征 GET请求特征 : URL格式: /shell.php?pass=1 User-Agent固定为: Java/1.8.0_211 POST请求特征 : Content-Type: application/octet-stream User-Agent同样为Java版本 响应特征 : Transfer-Encoding: chunked 2.2 检测方法 基于GET包的检测 : URL包含 .php?pass= User-Agent包含 Java/* 基于POST包的检测 : User-Agent包含 Java/* 返回包包含 Transfer-Encoding: chunked 请求包 Content-Type: application/octet-stream 3. 冰蝎V2.0流量特征 3.1 通信机制 V2.0采用 动态密钥协商机制 ,通信分为两个阶段: 密钥协商阶段 : 客户端通过GET请求( /shell.php?pass=645 )获取服务器密钥 服务器使用随机数MD5的高16位作为密钥 加密传输阶段 : 使用协商的密钥进行AES128或XOR加密 存在OpenSSL扩展则使用AES,否则使用XOR 3.2 密钥协商过程 第一次GET请求 : 服务端产生密钥并写入session 响应体包含16位密钥(小写字母+数字) 第二次GET请求 : 生成另一个用于AES加密的密钥 3.3 固定特征 URL格式 : \\.(php|jsp|asp|aspx)\\?(\\w){1,10}=\\d{2,3} 密钥格式 : ^[a-fA-F0-9]{16}$ POST数据解密后格式 : 固定格式与相对固定长度 3.4 可绕过特征 Accept字段 : Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 User-Agent : 内置多个UA头,但版本较老 Connection字段 : Connection: Keep-Alive 4. 冰蝎V3.0流量特征 4.1 主要改进 取消动态密钥协商,采用 预共享密钥 默认密钥为 rebeyond 的MD5前16位: e45e329feb5d925b 4.2 检测方法 尝试解密 : 使用默认密钥解密POST数据 成功解密且包含敏感PHP函数则可判定 弱特征参考 : User-Agent库扩展至25个 Accept头固定值: Accept-Language固定值: Referer中URL后的文件名纯大写或纯小写 包含 Cache-Control: no-cache 5. 冰蝎V4.0流量特征 5.1 主要改进 增加多种加密算法 增加附加magic魔数的AES加密方式 UA头缩减至10个 5.2 检测方法 尝试默认密钥解密 观察以下特征 : UA头 Accept头 Content-Type Connection: Keep-Alive Referer 客户端连接特征 : 本地端口分布在49700左右 每建立新连接端口依次增加 6. 各版本对比总结 | 版本 | 密钥机制 | 主要特征 | 检测难度 | |------|----------|----------|----------| | V1.0 | 固定 | Java UA、.php?pass=、chunked编码 | 容易 | | V2.0 | 动态协商 | 两次GET请求、16位密钥、固定URL格式 | 中等 | | V3.0 | 预共享密钥 | 默认密钥、固定Accept头、多UA | 较难 | | V4.0 | 多种算法 | 端口规律、精简UA | 困难 | 7. 检测建议 多维度检测 :结合多个弱特征进行综合判断 行为分析 :关注异常通信模式,如短时间内相同IP使用多个UA 解密尝试 :对可疑流量尝试使用默认密钥解密 机器学习 :对加密流量进行机器学习模型检测 规则更新 :持续跟踪冰蝎新版本的流量特征变化 8. 防御措施 Web应用防护 : 禁用危险函数(eval, assert等) 限制文件上传类型 定期检查服务器文件变更 网络层防护 : 部署WAF并更新规则 监控异常HTTP请求 限制服务器出站连接 日志分析 : 收集并分析Web服务器日志 关注异常URL模式和UA 通过深入理解冰蝎各版本的流量特征,安全团队可以更有效地检测和防御这类Webshell工具的威胁。