主流WebShell工具流量层分析
字数 1735 2025-08-05 19:10:07

主流WebShell工具流量层分析技术文档

1. 蚁剑(AntSword)流量分析

1.1 编码器机制

  • 提供编码器/解码器扩展功能,支持自定义加密方式
  • 默认编码模块:base64.js、chr.js、chr16.js、rot13.js

base64编码器分析

  • 使用randomID生成随机数
  • 执行代码存储在data['_']
  • 加密流程:Buffer.from(data['_']).toString('base64')
  • data[pwd]作为参数明文传输

1.2 流量特征

  • 参数名如_0x81bf9df1758a97为base64加密
  • 部分参数(如aaa)明文传输
  • 易被WAF探测

1.3 RSA加密模块

  • 使用RSA非对称加密传输
  • 需要目标机器安装OpenSsh扩展库
  • 生成公私钥对进行加密

1.4 其他特征

  • 执行命令、文件操作时会有0x开头的参数(源码固定特征)
  • 部分修改版已删除此特征

2. 冰蝎2.0流量分析

2.1 代码机制

  • PHP版本webshell工作流程:
    1. 检查GET参数pass
    2. 生成16位随机key存入session
    3. 判断OpenSSL扩展状态:
      • 开启:使用AES解密
      • 未开启:异或处理+base64加密

2.2 流量特征

  • 两次GET握手请求:
    1. 服务端生成密钥写入session
    2. 客户端获取key(如99030fc0bb93de17)

2.3 加密流程

  • POST数据使用key解密
  • 解密后内容再次base64编码
  • 响应内容特征:
    • 未开启OpenSSL:异或处理
    • 开启OpenSSL:AES加密

3. 冰蝎3.0流量分析

3.1 代码改进

  • 密码进行MD5加密
  • 取消动态密钥生成
  • UI框架从SWT改为JavaFX

3.2 流量变化

  • AES密钥变为md5("pass")[0:16](MD5前16位)
  • 取消密钥交互过程
  • 两次请求:
    1. 连接测试
    2. 代码执行(如phpinfo)

3.3 绕过技术

  • 使用随机变量名$content绕过Content-Length检测
  • 数据填充方式绕过WAF规则

4. 哥斯拉流量分析

4.1 PHP加密器(PHP_XOR_BASE64)

  • 加密流程:
    1. 接收代码
    2. Base64编码
    3. 异或加密
    4. 再次Base64编码
  • 密钥处理:
    • $T为密钥MD5值前16位
    • 分割为2份分别置于加密内容首尾

4.2 通信流程

  1. 第一次请求:发送加密PHP代码(响应为空)
  2. 第二次请求:测试连通性(响应methodName=dGVzdA==)
  3. 第三次请求:获取环境变量

4.3 JSP加密器差异

  • 使用Base64+AES加密
  • AES密钥为生成shell时key的MD5前36位切割

4.4 响应处理

  • 删除响应数据前16位和后16位("脏字符")
  • 再进行解密

5. 各工具加密流程对比

工具 请求加密 响应加密 备注
蚁剑 base64等方式 明文 易被检测
冰蝎2.0 动态密钥AES/异或 AES+base64/异或+base64 开启OpenSSL扩展差异
冰蝎3.0 静态密钥AES(MD5前16位) AES+base64/异或+base64 取消密钥交互
哥斯拉(PHP) base64+异或+base64 异或+base64+脏字符 首尾添加密钥段
哥斯拉(JSP) Base64+AES AES+base64+脏字符 密钥处理方式不同

6. 防御建议

  1. 针对蚁剑:

    • 检测base64编码参数
    • 监控0x开头参数特征
    • 拦截RSA密钥交换行为
  2. 针对冰蝎:

    • 识别动态密钥获取请求(2.0版本)
    • 检测静态MD5密钥特征(3.0版本)
    • 分析AES加密流量模式
  3. 针对哥斯拉:

    • 识别三次请求模式
    • 检测首尾密钥段特征
    • 监控异常base64编码数据
  4. 通用防御:

    • 部署WAF规则更新
    • 监控异常session生成
    • 限制危险函数执行(如assert、eval)

7. 参考资源

  1. 冰蝎通信研究
  2. WebShell检测技术
  3. 安全客相关分析
主流WebShell工具流量层分析技术文档 1. 蚁剑(AntSword)流量分析 1.1 编码器机制 提供编码器/解码器扩展功能,支持自定义加密方式 默认编码模块:base64.js、chr.js、chr16.js、rot13.js base64编码器分析 使用 randomID 生成随机数 执行代码存储在 data['_'] 中 加密流程: Buffer.from(data['_']).toString('base64') data[pwd] 作为参数明文传输 1.2 流量特征 参数名如 _0x81bf9df1758a97 为base64加密 部分参数(如aaa)明文传输 易被WAF探测 1.3 RSA加密模块 使用RSA非对称加密传输 需要目标机器安装OpenSsh扩展库 生成公私钥对进行加密 1.4 其他特征 执行命令、文件操作时会有 0x 开头的参数(源码固定特征) 部分修改版已删除此特征 2. 冰蝎2.0流量分析 2.1 代码机制 PHP版本webshell工作流程: 检查GET参数 pass 生成16位随机key存入session 判断OpenSSL扩展状态: 开启:使用AES解密 未开启:异或处理+base64加密 2.2 流量特征 两次GET握手请求: 服务端生成密钥写入session 客户端获取key(如 99030fc0bb93de17 ) 2.3 加密流程 POST数据使用key解密 解密后内容再次base64编码 响应内容特征: 未开启OpenSSL:异或处理 开启OpenSSL:AES加密 3. 冰蝎3.0流量分析 3.1 代码改进 密码进行MD5加密 取消动态密钥生成 UI框架从SWT改为JavaFX 3.2 流量变化 AES密钥变为 md5("pass")[0:16] (MD5前16位) 取消密钥交互过程 两次请求: 连接测试 代码执行(如phpinfo) 3.3 绕过技术 使用随机变量名 $content 绕过 Content-Length 检测 数据填充方式绕过WAF规则 4. 哥斯拉流量分析 4.1 PHP加密器(PHP_ XOR_ BASE64) 加密流程: 接收代码 Base64编码 异或加密 再次Base64编码 密钥处理: $T 为密钥MD5值前16位 分割为2份分别置于加密内容首尾 4.2 通信流程 第一次请求:发送加密PHP代码(响应为空) 第二次请求:测试连通性(响应 methodName=dGVzdA== ) 第三次请求:获取环境变量 4.3 JSP加密器差异 使用Base64+AES加密 AES密钥为生成shell时key的MD5前36位切割 4.4 响应处理 删除响应数据前16位和后16位("脏字符") 再进行解密 5. 各工具加密流程对比 | 工具 | 请求加密 | 响应加密 | 备注 | |------|---------|---------|------| | 蚁剑 | base64等方式 | 明文 | 易被检测 | | 冰蝎2.0 | 动态密钥AES/异或 | AES+base64/异或+base64 | 开启OpenSSL扩展差异 | | 冰蝎3.0 | 静态密钥AES(MD5前16位) | AES+base64/异或+base64 | 取消密钥交互 | | 哥斯拉(PHP) | base64+异或+base64 | 异或+base64+脏字符 | 首尾添加密钥段 | | 哥斯拉(JSP) | Base64+AES | AES+base64+脏字符 | 密钥处理方式不同 | 6. 防御建议 针对蚁剑: 检测base64编码参数 监控 0x 开头参数特征 拦截RSA密钥交换行为 针对冰蝎: 识别动态密钥获取请求(2.0版本) 检测静态MD5密钥特征(3.0版本) 分析AES加密流量模式 针对哥斯拉: 识别三次请求模式 检测首尾密钥段特征 监控异常base64编码数据 通用防御: 部署WAF规则更新 监控异常session生成 限制危险函数执行(如assert、eval) 7. 参考资源 冰蝎通信研究 WebShell检测技术 安全客相关分析