bash
蚁剑流量偏明文+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 检测规则示例
bash
alert http any any -> $HOME_NET any (msg:"AntSword Webshell Detected"; \
flow:to_server,established; \
content:"antSword/v"; http_header; \
sid:1000002; rev:1;)
alert http any any -> $HOME_NET any (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_NET any (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. 检测规则示例
bash
alert http any any -> $HOME_NET any (msg:"Behinder v4 Fixed Request Header"; \
flow:to_server,established; \
content:"dFAXQV1LORcHRQtLRlwMAhwFTAg/M"; \
sid:1000010; rev:1;)
alert http any any -> $HOME_NET any (msg:"Behinder v3 Default Key in Payload"; \
flow:to_server,established; \
content:"e45e329feb5d925b"; \
sid:1000011; rev:1;)
alert http any any -> $HOME_NET any (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. 检测规则示例
bash
alert http any any -> $HOME_NET any (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_NET any (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_NET any (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)仅作为辅助加权项,避免单独触发告警造成误报。