冰蝎,从入门到魔改
字数 2120 2025-08-15 21:33:52

冰蝎工具深度解析与魔改指南

一、冰蝎概述

冰蝎是一款动态二进制加密网站管理客户端,作为第二代webshell管理工具,解决了第一代工具"菜刀"流量特征明显的问题。

主要特性

  • 基于JAVA开发,跨平台使用
  • 最新版本v2.0.1(2019年发布)
  • 支持多种功能:
    • 基本信息查看
    • 命令执行
    • 虚拟终端
    • 文件管理
    • Socks代理
    • 反弹shell
    • 数据库管理
    • 自定义代码执行

二、加密原理分析(PHP版本)

加密流程

  1. 密钥交换阶段

    • 客户端以GET请求发起带密码的请求
    • 服务端生成16位随机密钥,写入Session并返回给客户端
  2. 加密通信阶段

    • 客户端获取密钥后,使用AES-16算法加密payload
    • 通过POST请求发送加密后的数据
    • 服务端用Session中的密钥解密请求Body,执行payload
    • 返回结果直接显示在客户端UI上

加密特点

  • 使用AES算法,密钥长度16位(AES-16)
  • 硬件加速:支持英特尔处理器AES指令集(6条指令)
  • 内存需求低,适合流量加密

三、通信过程分析

通过Wireshark抓包观察:

  • 流量全程加密,无可读执行代码
  • 服务端返回结果实际上经过AES加密,但webshell界面显示未加密

解密示例:

{"status":"success","msg":"..."}

四、冰蝎特征分析与检测

1. 密钥交换特征

  • URL参数
    • 默认密码参数名pass
    • 参数值为3位随机数字
    • 检测规则示例:\.(php|jsp|asp|aspx)\?(\w){1,10}=\d{2,3} HTTP/1.1

2. Header特征

  • Content-Type

    • GET和POST请求都包含此字段
    • 大小写不规范
    • 默认值异常
  • User-Agent

    • 从17个内置UA随机选择
    • 但浏览器版本较旧(如2011年版本)
  • Accept字段:

    • 默认值为text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    • 非浏览器常见值
  • Cookie

    • 包含path=/异常信息
    • 正常浏览器不会发送path部分

3. 其他特征

  • 密钥返回格式

    • 直接返回16位字符
    • 检测规则:\r\n\r\n[a-z0-9]{16}$配合Content-Length: 16
  • 二次密钥获取

    • 默认会进行两次GET请求获取密钥
    • 通过异或操作校验密钥

五、冰蝎魔改实战

1. 准备工作

  1. 使用JD-GUI等工具反编译JAR包
  2. 安装Eclipse + WindowsBuilder(SWT框架支持)
  3. 创建SWT项目并导入源码
  4. 修复反编译产生的错误

项目结构:

  • 主逻辑在net包下
  • Main.java为程序入口

2. 特征擦除方案

(1) 密钥交换URL参数修改

  • 问题:固定密码参数名和数字值
  • 解决方案
    • 增加随机数量/随机值的参数
    • 密码参数不固定为第一个
    • 随机值不全为数字

(2) Content-Type头修改

  • 问题:GET请求异常包含此头
  • 解决方案
    • GET请求去掉此字段
    • POST请求改为text/html; charset=utf-8

(3) User-Agent更新

  • 问题:内置UA版本过旧
  • 解决方案
    • 替换为较新浏览器UA
    • 示例:
      • Firefox 75.0(2020年)
      • Chrome 78.0.3904.108(2019年)

(4) Accept头修改

  • 问题:使用HTTPURLConnection默认值
  • 解决方案:修改为常见浏览器Accept值

(5) 密钥获取优化

  • 问题:默认两次GET请求获取密钥
  • 解决方案
    • 改为一次获取
    • 或直接将密钥写入webshell

(6) 密钥返回混淆

  • 问题:直接返回16位字符
  • 解决方案
    • 添加混淆内容
    • 对密钥进行变形处理

(7) Cookie优化

  • 问题:包含异常path信息
  • 解决方案:去除发送请求中的path字段

六、魔改效果验证

修改前后对比

  1. 密钥交换URL

    • 原:shell.php?pass=123
    • 改:shell.php?x=abc&y=1a2b&pass=xyz
  2. Header变化

    • GET请求:去除Content-Type
    • POST请求:Content-Type规范化
  3. UA更新

    • 原:Chrome/14.0.835.163
    • 改:Chrome/78.0.3904.108
  4. 密钥返回

    • 原:\r\n\r\nabc123def456ghi78
    • 改:\r\n\r\n<!--random-->abc123def456ghi78<!--end-->

七、防御与检测建议

复合检测策略

  • 单一规则误报率高
  • 建议组合多个特征进行检测:
    1. 异常URL参数 + 特定Content-Type
    2. 旧版UA + 异常Accept头
    3. 密钥长度特征 + Cookie异常

持续对抗

  • 攻防技术不断发展
  • 需要持续更新检测规则
  • 关注新型webshell工具特征

八、总结

冰蝎作为加密webshell管理工具,通过魔改可暂时绕过安全检测,但长期有效需要:

  1. 深入理解工具原理
  2. 持续跟踪安全设备检测规则
  3. 定期更新工具特征
  4. 结合多种混淆技术

安全攻防是持续的过程,需要不断学习和适应新技术发展。

冰蝎工具深度解析与魔改指南 一、冰蝎概述 冰蝎 是一款动态二进制加密网站管理客户端,作为第二代webshell管理工具,解决了第一代工具"菜刀"流量特征明显的问题。 主要特性 基于JAVA开发,跨平台使用 最新版本v2.0.1(2019年发布) 支持多种功能: 基本信息查看 命令执行 虚拟终端 文件管理 Socks代理 反弹shell 数据库管理 自定义代码执行 二、加密原理分析(PHP版本) 加密流程 密钥交换阶段 : 客户端以GET请求发起带密码的请求 服务端生成16位随机密钥,写入Session并返回给客户端 加密通信阶段 : 客户端获取密钥后,使用AES-16算法加密payload 通过POST请求发送加密后的数据 服务端用Session中的密钥解密请求Body,执行payload 返回结果直接显示在客户端UI上 加密特点 使用AES算法,密钥长度16位(AES-16) 硬件加速:支持英特尔处理器AES指令集(6条指令) 内存需求低,适合流量加密 三、通信过程分析 通过Wireshark抓包观察: 流量全程加密,无可读执行代码 服务端返回结果实际上经过AES加密,但webshell界面显示未加密 解密示例: 四、冰蝎特征分析与检测 1. 密钥交换特征 URL参数 : 默认密码参数名 pass 参数值为3位随机数字 检测规则示例: \.(php|jsp|asp|aspx)\?(\w){1,10}=\d{2,3} HTTP/1.1 2. Header特征 Content-Type : GET和POST请求都包含此字段 大小写不规范 默认值异常 User-Agent : 从17个内置UA随机选择 但浏览器版本较旧(如2011年版本) Accept 字段: 默认值为 text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 非浏览器常见值 Cookie : 包含 path=/ 异常信息 正常浏览器不会发送path部分 3. 其他特征 密钥返回格式 : 直接返回16位字符 检测规则: \r\n\r\n[a-z0-9]{16}$ 配合 Content-Length: 16 二次密钥获取 : 默认会进行两次GET请求获取密钥 通过异或操作校验密钥 五、冰蝎魔改实战 1. 准备工作 使用JD-GUI等工具反编译JAR包 安装Eclipse + WindowsBuilder(SWT框架支持) 创建SWT项目并导入源码 修复反编译产生的错误 项目结构: 主逻辑在 net 包下 Main.java 为程序入口 2. 特征擦除方案 (1) 密钥交换URL参数修改 问题 :固定密码参数名和数字值 解决方案 : 增加随机数量/随机值的参数 密码参数不固定为第一个 随机值不全为数字 (2) Content-Type头修改 问题 :GET请求异常包含此头 解决方案 : GET请求去掉此字段 POST请求改为 text/html; charset=utf-8 (3) User-Agent更新 问题 :内置UA版本过旧 解决方案 : 替换为较新浏览器UA 示例: Firefox 75.0(2020年) Chrome 78.0.3904.108(2019年) (4) Accept头修改 问题 :使用HTTPURLConnection默认值 解决方案 :修改为常见浏览器Accept值 (5) 密钥获取优化 问题 :默认两次GET请求获取密钥 解决方案 : 改为一次获取 或直接将密钥写入webshell (6) 密钥返回混淆 问题 :直接返回16位字符 解决方案 : 添加混淆内容 对密钥进行变形处理 (7) Cookie优化 问题 :包含异常path信息 解决方案 :去除发送请求中的path字段 六、魔改效果验证 修改前后对比 密钥交换URL : 原: shell.php?pass=123 改: shell.php?x=abc&y=1a2b&pass=xyz Header变化 : GET请求:去除Content-Type POST请求:Content-Type规范化 UA更新 : 原: Chrome/14.0.835.163 改: Chrome/78.0.3904.108 密钥返回 : 原: \r\n\r\nabc123def456ghi78 改: \r\n\r\n<!--random-->abc123def456ghi78<!--end--> 七、防御与检测建议 复合检测策略 单一规则误报率高 建议组合多个特征进行检测: 异常URL参数 + 特定Content-Type 旧版UA + 异常Accept头 密钥长度特征 + Cookie异常 持续对抗 攻防技术不断发展 需要持续更新检测规则 关注新型webshell工具特征 八、总结 冰蝎作为加密webshell管理工具,通过魔改可暂时绕过安全检测,但长期有效需要: 深入理解工具原理 持续跟踪安全设备检测规则 定期更新工具特征 结合多种混淆技术 安全攻防是持续的过程,需要不断学习和适应新技术发展。