蚁剑流量偏明文+Base64编码、特征明显; 冰蝎3.0/4.0采用AES/RC4对称加密+固定密钥,载荷全程无明文; 哥斯拉采用动态密钥协商+异或/AES加密,响应体以MD5前后16位包裹Base64数据为强特征。 三者均以POST高频请求访问单一脚本文件,但加密强度与协议自定制程度逐级递增,检测难度也相应提升。总览对比表
| 维度 | 蚁剑 AntSword | 冰蝎 Behinder(3.0/4.0) | 哥斯拉 Godzilla |
|---|---|---|---|
| 默认加密方式 | Base64 编码(可选 ROT13/Chr/AES 插件) | AES-CBC(3.0)/ RC4(4.0),密钥e45e329feb5d925b | XOR+Base64 或 AES+Base64,密钥=md5(key)前16位 |
| 默认 User-Agent | antSword/v2.1(可篡改) | 内置 16 个老 UA 轮换 | Java/1.8.0_121(暴露 JDK 版本) |
| Content-Type | application/x-www-form-urlencoded | application/octet-stream(3.0)/application/x-www-form-urlencoded(4.0) | application/x-www-form-urlencoded |
| 请求体特征 | @ini_set("display_errors","0");@set_time_limit(0);开头 | 固定字节头dFAXQV1LORcHRQtLRlwMAhwFTAg/M(4.0) | pass=起始,Cookie 末尾带; |
| 响应体特征 | 随机数+结果+随机数混淆 | 固定字节头TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd(4.0) | MD5前16位+Base64+MD5后16位 |
| 强特征 | _0x[0-9a-f]{4}参数名、eval/assert 明文 | 固定密钥、固定字节头、源端口递增 | Cookie 末尾分号、响应体 MD5 分段结构 |
| 检测难度 | 低 | 中高 | 高 |
一、蚁剑 AntSword 流量特征
1. 请求头特征
- User-Agent:默认值为
antSword/v2.1等带版本标识的字符串,是最易识别的特征;高版本或定制版可通过修改modules/request.js伪装为 Chrome、Firefox、Opera 等浏览器 UA。 - Content-Type:默认
application/x-www-form-urlencoded,文件上传时为multipart/form-data。 - TCP 窗口大小:默认配置固定为 65535,可作为辅助指纹。
2. 请求体特征
- 固定 PHP 代码头:URL 解码后,每个请求体几乎都以
@ini_set("display_errors","0");@set_time_limit(0);开头,这是蚁剑连接 PHP 类 Webshell 的标志性片段。 - 参数名特征:使用默认/自定义编码器时,参数名常以
_0x开头(如_0x1234=加密数据),下划线可替换为其他字符,但_0x[A-Fa-f0-9]+模式稳定可匹配。 - 明文函数调用:未启用编码器时,请求体直接出现
eval(或assert(函数调用;Base64 编码器下,参数值长度为 4 的倍数,末尾含==填充的概率超过 70%。 - 分段 Base64:payload 分段后分别 Base64 编码,常见
z0、z1参数携带编码数据。
3. 响应体特征
- 返回数据被随机字符串包裹,格式为
随机数+结果+随机数(如a1cc2fb143bd7ef08da+ 真实输出 + 随机数),去除混淆后 Base64 解码可见明文。
4. Snort/Suricata 检测规则示例
alert http any any ->$HOME_NETany(msg:"AntSword Webshell Detected";\flow:to_server,established;\content:"antSword/v";http_header;\sid:1000002;rev:1;)alert http any any ->$HOME_NETany(msg:"AntSword PHP Payload Pattern";\flow:to_server,established;\content:"@ini_set|28|\"display_errors\"|2c|\"0\"|29|";\content:"@set_time_limit";distance:0;\sid:1000003;rev:1;)alert http any any ->$HOME_NETany(msg:"AntSword Param Name Pattern";\flow:to_server,established;\pcre:"/(_0x[0-9a-fA-F]{4,})=/";\sid:1000004;rev:1;)5. 版本差异
蚁剑 2.x 默认编码器明文特征明显;通过安装encoder插件可切换为 AES、ROT13、Chr 编码等,加密后_0x参数名仍为稳定特征。
二、冰蝎 Behinder 流量特征
1. 冰蝎 2.0
- 动态密钥协商:首次 GET 请求服务端生成 16 位随机密钥写入
$_SESSION并返回,响应包Content-Length: 16。 - Accept 头固定:
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2(Java HttpURLConnection 默认值,合法但少见)。 - AES 加密:客户端用密钥对二进制 payload AES 加密后 POST 发送,服务端 Session 取密钥解密执行。
2. 冰蝎 3.0
- 固定预共享密钥:取消动态密钥协商,密钥为
md5("rebeyond")[0:16]=e45e329feb5d925b,全程硬编码不变,拿到即可解密全部历史流量。 - AES-CBC 模式:IV 硬编码为
\x00*16,密文开头出现固定模式。 - Content-Type:JSP shell 首次请求几乎必为
application/octet-stream,正常表单/上传不会使用该值。 - UA 轮换:内置 10+ 个老旧 UA(如
Mozilla/4.0),同一 IP 在 3-5 秒内相邻请求切换 UA,正常浏览器不会如此。 - 包体长度规律:命令执行类包体长度常落在 5720/5740 字节附近,无随机填充。
- 长连接:
Connection: keep-alive全程保持。
3. 冰蝎 4.0
- 固定请求字节头:
dFAXQV1LORcHRQtLRlwMAhwFTAg/M(硬编码,不管选什么加密算法都出现)。 - 固定响应字节头:
TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd。 - 加密算法:改为 RC4(默认
default_xor_base64协议),仍保留默认密钥e45e329feb5d925b。 - 源端口递增:本地 TCP 源端口从 49700 左右顺序递增,每次新会话 +1,可做时序关联。
- PHP webshell 固定代码:
$post=Decrypt(file_get_contents("php://input"));eval($post);。 - 协议自定义:4.0 支持传输协议自定义功能,用户可自定义加解密算法,实现流量去中心化,默认特征可被魔改规避。
4. 检测规则示例
alert http any any ->$HOME_NETany(msg:"Behinder v4 Fixed Request Header";\flow:to_server,established;\content:"dFAXQV1LORcHRQtLRlwMAhwFTAg/M";\sid:1000010;rev:1;)alert http any any ->$HOME_NETany(msg:"Behinder v3 Default Key in Payload";\flow:to_server,established;\content:"e45e329feb5d925b";\sid:1000011;rev:1;)alert http any any ->$HOME_NETany(msg:"Behinder v3 application/octet-stream";\flow:to_server,established;\content:"application/octet-stream";http_header;\content:"Accept|3a| text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";http_header;\sid:1000012;rev:1;)5. 强弱特征区分
强特征(难绕过):固定密钥e45e329feb5d925b、4.0 固定字节头、JSP 首次请求application/octet-stream、源端口 49700 递增。
弱特征(可绕过):UA 轮换、Accept: text/html, image/gif...、Connection: Keep-Alive、包体长度规律。
三、哥斯拉 Godzilla 流量特征
1. 请求头特征
- User-Agent:不修改时为
Java/1.8.0_121(具体版本取决于 JDK 环境),直接暴露 Java 客户端身份;可自定义伪装为 Chrome、Firefox 甚至 Baiduspider。 - Cookie 末尾分号:请求包 Cookie 字段最后一个值带分号
;,而标准 HTTP 请求中最后一个 Cookie 值不应出现;,这是哥斯拉的致命强特征。 - Content-Type:默认
application/x-www-form-urlencoded。
2. 请求体特征
- pass= 起始:请求体以
pass=(密码参数名)起始,参数名固定为连接密码(默认pass)。 - 加密方式:
PHP_XOR_BASE64:密钥 =md5("key")[0:16]=3c6e0b8a9c15224a,payload 经 URL 解码 + Base64 解码后与密钥按位异或还原明文。PHP_AES_BASE64等其他加密器:AES 密钥同样由 md5(key) 前16位派生。
- 首次连接三包:默认发送三个数据包建立连接,第一个请求的响应包设置
PHPSESSID;第一次请求把 PHP 函数定义代码发送到服务器存入 session,后续操作只发函数名+参数。 - 请求包较长、响应为空:建立连接测试时请求包较大但响应包为 0。
3. 响应体特征(强特征)
- MD5 分段结构:整个响应包结构为
MD5前16位 + Base64数据 + MD5后16位,其中 MD5 =md5(pass+key)。- PHP 版本为小写 MD5,Java 版本为大写 MD5。
- 示例:
72a9c691ccdaab98+fL1tMGI4YTljMv79NDQm7r9PZzBiOA==+b4c4e1f6ddd2a。
- 解密时先剥离前后 16 位 MD5,再 Base64 解码,最后与密钥异或还原明文。
4. 静态特征
- JSP shell:含
xc、pass字符,Java 反射代码(ClassLoader、getClass().getClassLoader()、Class.forName)。 - PHP/ASP/ASPX:为一句话木马,payload 以
godzilla开头(部分版本)。 - C# shell:含
System.Reflection.Assembly、System.Security.Cryptography。
5. 检测规则示例
alert http any any ->$HOME_NETany(msg:"Godzilla Cookie Trailing Semicolon";\flow:to_server,established;\pcre:"/Cookie\x3a[^\r\n]*\x3b\s*[\r\n]/Hi";\sid:1000020;rev:1;)alert http any any ->$HOME_NETany(msg:"Godzilla Response MD5 Envelope";\flow:to_client,established;\pcre:"/[a-f0-9]{16}[A-Za-z0-9+\/=]+[a-f0-9]{16}/";\sid:1000021;rev:1;)alert http any any ->$HOME_NETany(msg:"Godzilla Java UA Default";\flow:to_server,established;\content:"Java/1.";http_header;\sid:1000022;rev:1;)6. 加密器变体
哥斯拉内置 PHP_XOR_BASE64、PHP_AES_BASE64、JSP_AES_BASE64、CSHARP_BASE64 等 6 种加密器,AES-GCM 模式在实战中最稳;所有加密器均采用动态密钥协商机制,每次连接生成不同密钥,但响应体 MD5 分段结构在所有变体中保持一致。
检测建议与误报规避
多特征组合检测是降低误报的关键,单一特征均存在被绕过或误报风险:
- 蚁剑:
_0x参数名 +@ini_set代码头 + Base64 长度对齐三者组合,误报率极低;UA 单独匹配易被篡改规避。 - 冰蝎:固定密钥
e45e329feb5d925b+ 4.0 固定字节头为强特征,单独命中即可告警;application/octet-stream+ UA 轮换 + 源端口递增组合用于 3.0 检测。 - 哥斯拉:Cookie 末尾分号 + 响应体 MD5 分段结构是双重强特征,两者同时命中可高置信度告警;
Java/1.xUA 单独匹配误报较高,需结合pass=请求体起始判断。
通用辅助特征:单一脚本文件高频 POST 请求、长连接保持、响应体熵值偏高(加密数据)、非常规端口访问等行为特征,可作为正则匹配之外的行为分析维度。对于魔改版本(魔改冰蝎打乱字节头、魔改哥斯拉修改通信协议),正则特征可能失效,需依赖行为分析与加密流量检测(如观成 ENS 类商业产品)识别。
实际护网/蓝队研判中,建议优先匹配强特征(冰蝎固定字节头、哥斯拉 Cookie 分号+MD5 响应结构、蚁剑_0x参数名),弱特征(UA、Content-Type、Accept)仅作为辅助加权项,避免单独触发告警造成误报。