冰蝎2和3及哥斯拉Godzilla特征分析
字数 1753 2025-08-15 21:33:00

冰蝎与哥斯拉Webshell工具特征分析教学文档

一、冰蝎(Behinder)工具分析

1. 冰蝎2特征分析

通信原理

冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,通信过程分为两个阶段:

  1. 密钥协商阶段
  2. 加密传输阶段

密钥协商过程

  • PHP样本

    • 初始GET请求获取密钥:GET /hackable/uploads/shell.php?pass=300 HTTP/1.1
    • 后续变为POST请求:POST /hackable/uploads/shell.php HTTP/1.1
  • JSP样本

    • 初始GET请求:GET /s.jsp?pass=987 HTTP/1.1
    • 服务器返回密钥:9e39ae1ad6ee9e32
    • 后续变为POST请求:POST /s.jsp HTTP/1.1

加密机制

  • 服务器使用随机数MD5的高16位作为密钥
  • 存储到会话的$_SESSION变量中
  • 返回密钥给攻击者

解密过程

  1. 获取请求密文
  2. 使用密钥解密得到base64编码
  3. base64解码获取实际内容

关键特征

  1. Accept字段

    • 固定值:Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
  2. User-Agent字段

    • 内置十余种较老的UserAgent随机选择
    • 可通过Burp修改
  3. Content-Length

    • 密钥协商阶段固定为16:Content-Length: 16
  4. PHP解密代码特征

    @error_reporting(0);
    function main($content) {
        $result = array();
        $result["status"] = base64_encode("success");
        $result["msg"] = base64_encode($content);
        $key = $_SESSION['k'];
        echo encrypt(json_encode($result),$key);
    }
    
    function encrypt($data,$key) {
        if(!extension_loaded('openssl')) {
            for($i=0;$i<strlen($data);$i++) {
                $data[$i] = $data[$i]^$key[$i+1&15];
            }
            return $data;
        } else {
            return openssl_encrypt($data, "AES128", $key);
        }
    }
    

2. 冰蝎3特征分析

改进点

  • 取消动态密钥获取(仅在无动态密钥交互失败后才会进入常规密钥交互阶段)
  • 使用密码的MD5结果前16位作为固定密钥

关键特征

  1. PHP样本特征

    • 固定密钥设置:$key="e45e329feb5d925b";
  2. HTTP头特征

    • Accept头包含:application/xhtml+xml, application/xml, application/signed-exchange
    • User-Agent仍使用较老版本(可通过Burp修改)
  3. JSP样本强特征

    • Content-Type: application/octet-stream(极少使用)
    • 示例请求:
      POST /3.jsp HTTP/1.1
      Content-Type: application/octet-stream
      

二、哥斯拉(Godzilla)特征分析

1. 工具优势

  1. 全部类型shell过市面所有静态查杀
  2. 流量加密过市面全部流量WAF
  3. 插件功能比冰蝎、蚁剑更强大

2. 使用方式

  1. 需要Java环境运行:java -jar Godzilla.jar
  2. 支持生成多种类型webshell(JSP、PHP、ASPX等)
  3. Java和C#载荷原生实现AES加密,PHP使用异或加密

3. PHP连接特征

php_XOR_BASE64

  • 请求包含"pass="参数
  • 示例请求:
    POST /hackable/uploads/base.php HTTP/1.1
    User-Agent: Java/1.8.0_131
    Content-type: application/x-www-form-urlencoded
    Content-Length: 23275
    Connection: close
    
    pass=KX4nWAFVJ005aWdeUVosCjpuL0k7YApWKGVGfHFTUXg5WDNFOwszSQEDAVVRWjdGKHU3RwBgLEkGRgV5e3cgVCpxP0YBVVBRB3d3WlFZJ0c5bjdcAVEGUgB2BEh%2BXQJeMGMdQAMKN2M
    

php_XOR_RAW

  • 请求中包含固定特征如": • T[6 • L9e"
  • 示例请求:
    POST /hackable/uploads/g.php HTTP/1.1
    User-Agent: Java/1.8.0_131
    Content-type: application/x-www-form-urlencoded
    Content-Length: 56
    Connection: close
    
    : • T[6 • L9e • [aqP • )[T\ • • O9t
    

4. JSP连接特征

java_AES_BASE64

  • 请求包含"pass="参数
  • 服务器返回Content-Length: 0
  • 示例请求:
    POST /gejs.jsp HTTP/1.1
    User-Agent: Java/1.8.0_131
    Content-type: application/x-www-form-urlencoded
    Content-Length: 33035
    Connection: close
    
    pass=0%2FMHwbBP6vuX0WyYztOU9DrUPcD0Zwx0KhArobwwHBDld91Y8xrUqPxo40dKoSbGd%2FxDF4yJopsUIHMI8NMfFUl0oxBzWPyMdTmxAntagmMGLGiqB1ckbl5G%2FlapnewWrvhhdqtj0eT2zvUes%2Bg6yhFGVjLstoOdJxkYPY6XB70AeffugDlCkUYAyHyrTymPocUs14sKD5ItAn5147goo9TAdBH0kgSNlxbqxMqTPbgjKljsvC53fFB%2BO5jKUBCBvsCR1W%2FLhPA42qp1e%2Fl0cmUohwSAT3N0s9r%2FzRVlB3lQkXnV895dz48DyPbYjJp%2Bhpf1qFjbCy1o8Zd771ObGbKvWr1O5PZOTNKBu
    

java_AES_RAW

  • 请求包含二进制乱码特征
  • 服务器返回Content-Length: 0
  • 示例请求:
    POST /rwj.jsp HTTP/1.1
    User-Agent: Java/1.8.0_131
    Content-type: application/x-www-form-urlencoded
    Content-Length: 23360
    Connection: close
    
    Óó • Á°Oêû • ÑÑl • ÎÓ • ô:Ô=Àôg • t* • +¡¼0 • • åwÝXó • ÔÔ¨ühãGJ¡&ÆwüC • • • ¢ • • s • ðÓ • • It£ • sXü • u9± • {Z • c • ,hª • W$n^FþV© • ìì • ®øav«cÑäöÎõ • ³è:Ê
    

5. 内存马功能

  • 可在Tomcat中上传各种webshell(冰蝎、菜刀等)
  • 可建立HTTP隧道(如reGeorg)
  • 特点:
    • 无日志记录
    • Tomcat重启后消失

三、防御建议

  1. 冰蝎防御

    • 监控固定Accept头特征
    • 检测Content-Length为16的请求
    • 过滤较老的User-Agent
    • 监控application/octet-stream内容类型
  2. 哥斯拉防御

    • 检测包含"pass="参数的长请求
    • 监控Java User-Agent
    • 检测服务器返回Content-Length为0的异常情况
    • 对二进制乱码请求进行深度检测
  3. 通用防御

    • 实施严格的文件上传过滤
    • 定期检查服务器异常进程和内存状态
    • 使用WAF规则匹配已知特征
    • 保持Web服务器和中间件更新

本教学文档详细分析了冰蝎和哥斯拉两款Webshell工具的特征和行为模式,为安全人员提供了检测和防御这些高级威胁的实用知识。

冰蝎与哥斯拉Webshell工具特征分析教学文档 一、冰蝎(Behinder)工具分析 1. 冰蝎2特征分析 通信原理 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,通信过程分为两个阶段: 密钥协商阶段 加密传输阶段 密钥协商过程 PHP样本 : 初始GET请求获取密钥: GET /hackable/uploads/shell.php?pass=300 HTTP/1.1 后续变为POST请求: POST /hackable/uploads/shell.php HTTP/1.1 JSP样本 : 初始GET请求: GET /s.jsp?pass=987 HTTP/1.1 服务器返回密钥: 9e39ae1ad6ee9e32 后续变为POST请求: POST /s.jsp HTTP/1.1 加密机制 服务器使用随机数MD5的高16位作为密钥 存储到会话的 $_SESSION 变量中 返回密钥给攻击者 解密过程 获取请求密文 使用密钥解密得到base64编码 base64解码获取实际内容 关键特征 Accept字段 : 固定值: Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 User-Agent字段 : 内置十余种较老的UserAgent随机选择 可通过Burp修改 Content-Length : 密钥协商阶段固定为16: Content-Length: 16 PHP解密代码特征 : 2. 冰蝎3特征分析 改进点 取消动态密钥获取(仅在无动态密钥交互失败后才会进入常规密钥交互阶段) 使用密码的MD5结果前16位作为固定密钥 关键特征 PHP样本特征 : 固定密钥设置: $key="e45e329feb5d925b"; HTTP头特征 : Accept头包含: application/xhtml+xml, application/xml, application/signed-exchange User-Agent仍使用较老版本(可通过Burp修改) JSP样本强特征 : Content-Type: application/octet-stream (极少使用) 示例请求: 二、哥斯拉(Godzilla)特征分析 1. 工具优势 全部类型shell过市面所有静态查杀 流量加密过市面全部流量WAF 插件功能比冰蝎、蚁剑更强大 2. 使用方式 需要Java环境运行: java -jar Godzilla.jar 支持生成多种类型webshell(JSP、PHP、ASPX等) Java和C#载荷原生实现AES加密,PHP使用异或加密 3. PHP连接特征 php_ XOR_ BASE64 请求包含"pass="参数 示例请求: php_ XOR_ RAW 请求中包含固定特征如": • T [ 6 • L9e" 示例请求: 4. JSP连接特征 java_ AES_ BASE64 请求包含"pass="参数 服务器返回 Content-Length: 0 示例请求: java_ AES_ RAW 请求包含二进制乱码特征 服务器返回 Content-Length: 0 示例请求: 5. 内存马功能 可在Tomcat中上传各种webshell(冰蝎、菜刀等) 可建立HTTP隧道(如reGeorg) 特点: 无日志记录 Tomcat重启后消失 三、防御建议 冰蝎防御 : 监控固定Accept头特征 检测Content-Length为16的请求 过滤较老的User-Agent 监控 application/octet-stream 内容类型 哥斯拉防御 : 检测包含"pass="参数的长请求 监控Java User-Agent 检测服务器返回Content-Length为0的异常情况 对二进制乱码请求进行深度检测 通用防御 : 实施严格的文件上传过滤 定期检查服务器异常进程和内存状态 使用WAF规则匹配已知特征 保持Web服务器和中间件更新 本教学文档详细分析了冰蝎和哥斯拉两款Webshell工具的特征和行为模式,为安全人员提供了检测和防御这些高级威胁的实用知识。