WebShell工具流量特征分析
蚁剑流量偏明文Base64编码、特征明显 冰蝎3.0/4.0采用AES/RC4对称加密固定密钥载荷全程无明文 哥斯拉采用动态密钥协商异或/AES加密响应体以MD5前后16位包裹Base64数据为强特征。 三者均以POST高频请求访问单一脚本文件但加密强度与协议自定制程度逐级递增检测难度也相应提升。总览对比表维度蚁剑 AntSword冰蝎 Behinder3.0/4.0哥斯拉 Godzilla默认加密方式Base64 编码可选 ROT13/Chr/AES 插件AES-CBC3.0/ RC44.0密钥e45e329feb5d925bXORBase64 或 AESBase64密钥md5(key)前16位默认 User-AgentantSword/v2.1可篡改内置 16 个老 UA 轮换Java/1.8.0_121暴露 JDK 版本Content-Typeapplication/x-www-form-urlencodedapplication/octet-stream3.0/application/x-www-form-urlencoded4.0application/x-www-form-urlencoded请求体特征ini_set(display_errors,0);set_time_limit(0);开头固定字节头dFAXQV1LORcHRQtLRlwMAhwFTAg/M4.0pass起始Cookie 末尾带;响应体特征随机数结果随机数混淆固定字节头TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd4.0MD5前16位Base64MD5后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%。分段 Base64payload 分段后分别 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.2Java HttpURLConnection 默认值合法但少见。AES 加密客户端用密钥对二进制 payload AES 加密后 POST 发送服务端 Session 取密钥解密执行。2. 冰蝎 3.0固定预共享密钥取消动态密钥协商密钥为md5(rebeyond)[0:16]e45e329feb5d925b全程硬编码不变拿到即可解密全部历史流量。AES-CBC 模式IV 硬编码为\x00*16密文开头出现固定模式。Content-TypeJSP 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 固定代码$postDecrypt(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]3c6e0b8a9c15224apayload 经 URL 解码 Base64 解码后与密钥按位异或还原明文。PHP_AES_BASE64等其他加密器AES 密钥同样由 md5(key) 前16位派生。首次连接三包默认发送三个数据包建立连接第一个请求的响应包设置PHPSESSID第一次请求把 PHP 函数定义代码发送到服务器存入 session后续操作只发函数名参数。请求包较长、响应为空建立连接测试时请求包较大但响应包为 0。3. 响应体特征强特征MD5 分段结构整个响应包结构为MD5前16位 Base64数据 MD5后16位其中 MD5 md5(passkey)。PHP 版本为小写 MD5Java 版本为大写 MD5。示例72a9c691ccdaab98fL1tMGI4YTljMv79NDQm7r9PZzBiOAb4c4e1f6ddd2a。解密时先剥离前后 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仅作为辅助加权项避免单独触发告警造成误报。

相关新闻

B站视频缓存转换终极指南:m4s-converter完整使用教程

B站视频缓存转换终极指南:m4s-converter完整使用教程

B站视频缓存转换终极指南:m4s-converter完整使用教程 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了珍贵的视…

2026/10/17 6:08:56 阅读更多 →
5分钟找回青春记忆:GetQzonehistory开源工具帮你完整备份QQ空间说说

5分钟找回青春记忆:GetQzonehistory开源工具帮你完整备份QQ空间说说

5分钟找回青春记忆:GetQzonehistory开源工具帮你完整备份QQ空间说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那个在QQ空间写下第一条说说的午后吗?…

2026/10/17 6:13:42 阅读更多 →
TV Bro电视浏览器技术方案:专为遥控器优化的Android大屏网页浏览架构

TV Bro电视浏览器技术方案:专为遥控器优化的Android大屏网页浏览架构

TV Bro电视浏览器技术方案:专为遥控器优化的Android大屏网页浏览架构 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro TV Bro是一款专为Android智能电视和遥控…

2026/10/17 6:13:45 阅读更多 →

最新新闻

MySQL建表必备:五大约束详解与实战

MySQL建表必备:五大约束详解与实战

1. 建表之前,得先想清楚“约束”到底是干嘛的很多人刚开始接触 MySQL 的时候,都觉得建表就是写一条 CREATE TABLE 语句,把字段名和类型列出来就完事了。约束条件嘛,听上去像是个“可选”的附加项,有空就加,…

2026/10/18 4:42:33 阅读更多 →
AI智能体变现路径全拆解:从商业模式到项目落地实操

AI智能体变现路径全拆解:从商业模式到项目落地实操

1. 我对智能体变现现状的判断:风口与降温并存AI智能体这个概念,这两年从技术圈一路火到了创投圈,又扩散到普通用户的手机里。说句实话,去年一整年我几乎每个月都能刷到新的智能体产品上线,什么客服机器人、写作助手、数…

2026/10/18 4:42:33 阅读更多 →
repmgr witness节点实战:PostgreSQL高可用自动failover与脑裂防护

repmgr witness节点实战:PostgreSQL高可用自动failover与脑裂防护

1. 理解witness:它到底在集群里扮演什么角色做PostgreSQL高可用,repmgr是我用得最多的一套方案。它轻量、贴近PG生态,和系统的pg_ctl、流复制原生配合得很好。但repmgr的自动failover有一个被很多人低估的前提:集群里的“票数”要…

2026/10/18 4:42:33 阅读更多 →
PostgreSQL安装全指南:从Linux到Docker,覆盖初始化、远程访问与常见坑

PostgreSQL安装全指南:从Linux到Docker,覆盖初始化、远程访问与常见坑

接触PostgreSQL这些年,我发现自己干得最多的一件事不是写SQL,而是帮人处理安装问题。不少同学第一步就卡住:装完连不上、初始化失败、密码不对、远程访问不通,折腾一圈下来还没见到数据库长什么样。这篇文章把PostgreSQL安装这件事…

2026/10/18 4:42:33 阅读更多 →
LLM驱动的代码-测试双向生成与自动化测试维护

LLM驱动的代码-测试双向生成与自动化测试维护

“代码-测试双向生成:LLM驱动的自动化测试维护”,这句话我盯了挺久。这不是一个普通的技术选型题,而是一个工程效率问题:当业务代码每天都在变,测试用例以肉眼可见的速度过期、误报、漏报时,靠人肉去维护一…

2026/10/18 4:42:33 阅读更多 →
如何用huggingface_hub一行代码安全加载engagement-predictor模型并做预测

如何用huggingface_hub一行代码安全加载engagement-predictor模型并做预测

【免费下载链接】engagement-predictor 项目地址: https://ai.gitcode.com/hf_mirrors/raviearjun/engagement-predictor 点击查看 免费下载 engagement-predictor 是一个基于 scikit-learn Ridge 回归的社交媒体互动预测模型,可通过 huggingface_hub 一…

2026/10/18 4:41:33 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →