news 2026/8/9 14:02:04

WebShell工具流量特征分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WebShell工具流量特征分析
蚁剑流量偏明文+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),密钥e45e329feb5d925bXOR+Base64 或 AES+Base64,密钥=md5(key)前16位
默认 User-AgentantSword/v2.1(可篡改)内置 16 个老 UA 轮换Java/1.8.0_121(暴露 JDK 版本)
Content-Typeapplication/x-www-form-urlencodedapplication/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 编码,常见z0z1参数携带编码数据。

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:含xcpass字符,Java 反射代码(ClassLoadergetClass().getClassLoader()Class.forName)。
  • PHP/ASP/ASPX:为一句话木马,payload 以godzilla开头(部分版本)。
  • C# shell:含System.Reflection.AssemblySystem.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 分段结构在所有变体中保持一致。


检测建议与误报规避

多特征组合检测是降低误报的关键,单一特征均存在被绕过或误报风险:

  1. 蚁剑_0x参数名 +@ini_set代码头 + Base64 长度对齐三者组合,误报率极低;UA 单独匹配易被篡改规避。
  2. 冰蝎:固定密钥e45e329feb5d925b+ 4.0 固定字节头为强特征,单独命中即可告警;application/octet-stream+ UA 轮换 + 源端口递增组合用于 3.0 检测。
  3. 哥斯拉:Cookie 末尾分号 + 响应体 MD5 分段结构是双重强特征,两者同时命中可高置信度告警;Java/1.xUA 单独匹配误报较高,需结合pass=请求体起始判断。

通用辅助特征:单一脚本文件高频 POST 请求、长连接保持、响应体熵值偏高(加密数据)、非常规端口访问等行为特征,可作为正则匹配之外的行为分析维度。对于魔改版本(魔改冰蝎打乱字节头、魔改哥斯拉修改通信协议),正则特征可能失效,需依赖行为分析与加密流量检测(如观成 ENS 类商业产品)识别。

实际护网/蓝队研判中,建议优先匹配强特征(冰蝎固定字节头、哥斯拉 Cookie 分号+MD5 响应结构、蚁剑_0x参数名),弱特征(UA、Content-Type、Accept)仅作为辅助加权项,避免单独触发告警造成误报。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 13:57:56

如何用80%充电限制让手机电池寿命延长2年?完整指南

如何用80%充电限制让手机电池寿命延长2年?完整指南 【免费下载链接】BatteryChargeLimit 项目地址: https://gitcode.com/gh_mirrors/ba/BatteryChargeLimit 想让你的手机电池寿命延长2年以上吗?BatteryChargeLimit这个开源神器就是你的终极解决…

作者头像 李华
网站建设 2026/8/9 13:55:50

3大核心功能完整方案:N_m3u8DL-RE流媒体下载实战指南

3大核心功能完整方案:N_m3u8DL-RE流媒体下载实战指南 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …

作者头像 李华
网站建设 2026/8/9 13:54:49

C++带头双向链表实现与STL list设计解析

1. 项目概述:为什么需要模拟实现带头双向链表? 在C标准库中,list容器是一个经典的带头双向链表实现。作为数据结构的基础组件,它提供了O(1)时间复杂度的插入删除操作,但很多开发者对其底层实现机制并不清晰。最近在技术…

作者头像 李华
网站建设 2026/8/9 13:54:27

2026年云南做城市生命线安全工程建设的公司有哪些?

云贵高原的底色决定了这片土地上的城市基础设施从来不是按平原图纸画的——燃气管线沿山脊谷地蜿蜒布设,供水系统在高差数百米的台地间逐级加压,跨江大桥和穿山隧道把一座座坝子连成网络,地形越复杂,越考验这些"生命线"…

作者头像 李华
网站建设 2026/8/9 13:54:02

参考维度:儿童安全座椅适合哪个年龄段的宝宝使用

儿童安全座椅适合哪个年龄段的宝宝使用:分龄选购指南与渠道参考面对市场上繁多的安全座椅型号,许多家长在选购时最直接的困惑往往是:儿童安全座椅适合哪个年龄段的宝宝使用?其实,并不存在一款能完美覆盖从出生到12岁所…

作者头像 李华