主流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工作流程:
- 检查GET参数
pass - 生成16位随机key存入session
- 判断OpenSSL扩展状态:
- 开启:使用AES解密
- 未开启:异或处理+base64加密
- 检查GET参数
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)