冰蝎2和3及哥斯拉Godzilla特征分析
字数 1753 2025-08-15 21:33:00
冰蝎与哥斯拉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
- 初始GET请求获取密钥:
-
JSP样本:
- 初始GET请求:
GET /s.jsp?pass=987 HTTP/1.1 - 服务器返回密钥:
9e39ae1ad6ee9e32 - 后续变为POST请求:
POST /s.jsp HTTP/1.1
- 初始GET请求:
加密机制
- 服务器使用随机数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
- 密钥协商阶段固定为16:
-
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位作为固定密钥
关键特征
-
PHP样本特征:
- 固定密钥设置:
$key="e45e329feb5d925b";
- 固定密钥设置:
-
HTTP头特征:
- Accept头包含:
application/xhtml+xml, application/xml, application/signed-exchange - User-Agent仍使用较老版本(可通过Burp修改)
- Accept头包含:
-
JSP样本强特征:
Content-Type: application/octet-stream(极少使用)- 示例请求:
POST /3.jsp HTTP/1.1 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="参数
- 示例请求:
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重启后消失
三、防御建议
-
冰蝎防御:
- 监控固定Accept头特征
- 检测Content-Length为16的请求
- 过滤较老的User-Agent
- 监控
application/octet-stream内容类型
-
哥斯拉防御:
- 检测包含"pass="参数的长请求
- 监控Java User-Agent
- 检测服务器返回Content-Length为0的异常情况
- 对二进制乱码请求进行深度检测
-
通用防御:
- 实施严格的文件上传过滤
- 定期检查服务器异常进程和内存状态
- 使用WAF规则匹配已知特征
- 保持Web服务器和中间件更新
本教学文档详细分析了冰蝎和哥斯拉两款Webshell工具的特征和行为模式,为安全人员提供了检测和防御这些高级威胁的实用知识。