红蓝对抗——加密Webshell“冰蝎” 流量 100%识别
字数 1654 2025-08-25 22:58:41

冰蝎Webshell流量分析与100%识别技术详解

1. 冰蝎Webshell工作原理概述

冰蝎是一款流行的加密Webshell管理工具,其核心特点是通过加密通信来隐藏恶意流量,逃避安全设备的检测。了解其工作原理对于防御和检测至关重要。

2. 冰蝎的两次初始化请求机制

2.1 两次请求的目的

冰蝎在连接webshell时会对目标进行两次请求访问,这是其独特的设计:

  • 功能目的:为了实现可以在webshell内添加任意内容(如gif89a文件头或其他标识字符)
  • 实现方式:通过比较两次页面返回的差异,记录相同字符的位置

2.2 密钥初始化过程

  1. 冰蝎发送两次请求到webshell
  2. 比较两次响应内容的差异
  3. 记录两次响应中都相同的字符位置:
    • beginIndex:相同内容的起始位置
    • endIndex:相同内容的结束位置(含换行)
  4. 后续加密会使用这两个位置参数从数据流中截取被加密的数据

示例:根据数据包,beginIndex:8endIndex:4,冰蝎会从下标8开始截取到(数据包总长度-4)的数据

2.3 WAF对抗策略

  • 干扰方法:对返回类型为"text/html"的数据包添加空格或换行
  • 选择原因
    • JSP默认返回类型就是"text/html"
    • HTML中添加空格/换行不会影响网页正常显示
  • 效果:扰乱冰蝎的数据包解析,导致其无法正常运行

3. 冰蝎Cookie处理漏洞分析

3.1 Cookie处理异常

冰蝎在合并处理Cookie时存在明显缺陷:

  1. 直接获取响应头中的Set-Cookie字段
  2. 未经处理就添加到下一个请求的Cookie字段中
  3. 关键问题:未考虑Cookie的属性(如Path、HttpOnly等)

3.2 识别特征

  • 异常表现:请求中携带了本应只由服务器设置的Cookie属性
  • 检测价值:这是识别冰蝎流量最直接的标志之一
    • 正常请求不会携带Cookie属性
    • 冰蝎流量会暴露这些属性

4. 冰蝎动态加载机制分析

4.1 动态加载原理

  1. 每次发送一个class字节码(其他语言类似)
  2. 通过ASM动态修改class字节码变量内容
  3. 实现携带参数动态执行

4.2 BasicInfo请求特征

  1. 在获取密钥后(前两个请求)
  2. 第三个请求获取BasicInfo(服务器信息)
  3. 固定特征
    • BasicInfo功能没有动态修改参数
    • 导致每次获取BasicInfo的数据包大小固定

5. 100%识别冰蝎流量的方法

5.1 基于两次请求的检测

  1. 监控同一IP连续两次访问相同URL
  2. 截取两次响应内容
  3. 比对相同字符部分
  4. 截取两次不同的数据
  5. 判定条件:如果剩余部分是16位的key,则可判定为冰蝎流量

5.2 结合其他特征

  1. Cookie异常检测(0x02部分描述的问题)
  2. BasicInfo固定大小检测(0x03部分的特征)
  3. 组合判定:同时满足上述特征可100%确认冰蝎流量

6. 防御与对抗建议

6.1 主动防御措施

  1. 对text/html响应添加随机干扰:

    • 插入无害的空格/换行
    • 改变不影响显示的格式
  2. 监控异常Cookie行为:

    • 检测请求中携带的Cookie属性
    • 标记异常行为

6.2 检测规则建议

  1. 基于时间的检测:

    • 短时间内同一URL的两次相同请求
  2. 基于内容的检测:

    • 两次响应相似度高但非完全相同
    • 提取中间差异部分判断是否为密钥
  3. 基于行为的检测:

    • 后续请求携带异常Cookie属性
    • BasicInfo请求的固定大小特征

7. 技术总结

  1. 冰蝎通过两次请求初始化密钥是核心特征
  2. Cookie处理不当暴露明显特征
  3. 动态加载机制中的固定模式可被检测
  4. 组合多种特征可实现100%准确识别
  5. 防御方可通过干扰响应和监控异常行为有效对抗

8. 实际应用建议

  1. 在WAF中实施上述检测规则
  2. 对疑似冰蝎流量进行深度分析
  3. 记录并阻断符合特征的IP
  4. 定期更新检测规则以适应变种

通过全面理解冰蝎的工作原理和特征,安全团队可以构建有效的检测和防御体系,显著提升对这类加密Webshell的防护能力。

冰蝎Webshell流量分析与100%识别技术详解 1. 冰蝎Webshell工作原理概述 冰蝎是一款流行的加密Webshell管理工具,其核心特点是通过加密通信来隐藏恶意流量,逃避安全设备的检测。了解其工作原理对于防御和检测至关重要。 2. 冰蝎的两次初始化请求机制 2.1 两次请求的目的 冰蝎在连接webshell时会对目标进行两次请求访问,这是其独特的设计: 功能目的 :为了实现可以在webshell内添加任意内容(如gif89a文件头或其他标识字符) 实现方式 :通过比较两次页面返回的差异,记录相同字符的位置 2.2 密钥初始化过程 冰蝎发送两次请求到webshell 比较两次响应内容的差异 记录两次响应中都相同的字符位置: beginIndex :相同内容的起始位置 endIndex :相同内容的结束位置(含换行) 后续加密会使用这两个位置参数从数据流中截取被加密的数据 示例 :根据数据包, beginIndex:8 , endIndex:4 ,冰蝎会从下标8开始截取到(数据包总长度-4)的数据 2.3 WAF对抗策略 干扰方法 :对返回类型为"text/html"的数据包添加空格或换行 选择原因 : JSP默认返回类型就是"text/html" HTML中添加空格/换行不会影响网页正常显示 效果 :扰乱冰蝎的数据包解析,导致其无法正常运行 3. 冰蝎Cookie处理漏洞分析 3.1 Cookie处理异常 冰蝎在合并处理Cookie时存在明显缺陷: 直接获取响应头中的 Set-Cookie 字段 未经处理就添加到下一个请求的 Cookie 字段中 关键问题 :未考虑Cookie的属性(如Path、HttpOnly等) 3.2 识别特征 异常表现 :请求中携带了本应只由服务器设置的Cookie属性 检测价值 :这是识别冰蝎流量最直接的标志之一 正常请求不会携带Cookie属性 冰蝎流量会暴露这些属性 4. 冰蝎动态加载机制分析 4.1 动态加载原理 每次发送一个class字节码(其他语言类似) 通过ASM动态修改class字节码变量内容 实现携带参数动态执行 4.2 BasicInfo请求特征 在获取密钥后(前两个请求) 第三个请求获取BasicInfo(服务器信息) 固定特征 : BasicInfo功能没有动态修改参数 导致每次获取BasicInfo的数据包大小固定 5. 100%识别冰蝎流量的方法 5.1 基于两次请求的检测 监控同一IP连续两次访问相同URL 截取两次响应内容 比对相同字符部分 截取两次不同的数据 判定条件 :如果剩余部分是16位的key,则可判定为冰蝎流量 5.2 结合其他特征 Cookie异常检测 (0x02部分描述的问题) BasicInfo固定大小检测 (0x03部分的特征) 组合判定 :同时满足上述特征可100%确认冰蝎流量 6. 防御与对抗建议 6.1 主动防御措施 对text/html响应添加随机干扰: 插入无害的空格/换行 改变不影响显示的格式 监控异常Cookie行为: 检测请求中携带的Cookie属性 标记异常行为 6.2 检测规则建议 基于时间的检测: 短时间内同一URL的两次相同请求 基于内容的检测: 两次响应相似度高但非完全相同 提取中间差异部分判断是否为密钥 基于行为的检测: 后续请求携带异常Cookie属性 BasicInfo请求的固定大小特征 7. 技术总结 冰蝎通过两次请求初始化密钥是核心特征 Cookie处理不当暴露明显特征 动态加载机制中的固定模式可被检测 组合多种特征可实现100%准确识别 防御方可通过干扰响应和监控异常行为有效对抗 8. 实际应用建议 在WAF中实施上述检测规则 对疑似冰蝎流量进行深度分析 记录并阻断符合特征的IP 定期更新检测规则以适应变种 通过全面理解冰蝎的工作原理和特征,安全团队可以构建有效的检测和防御体系,显著提升对这类加密Webshell的防护能力。