WEBshell流量
WEBshell流量
几种常见WEBshell管理器的流量特征
简介:**Webshell**是通过服务器开放的端口获取服务器的某些权限的代码
菜刀Caidao流量
一些特征流量的截图


菜刀流量返回的标志

前后这个**X@Y**需要去掉,但是每次都是不一样的,所以需要看情况而定,反正就三位。
总结一下菜刀的流量特征:
**PHP**:
- 请求包中:
**ua**头为百度,火狐 **eval=(base64_decode($_POST[z0]))****,**少数时候eval方法会被assert方法替代**z0**的内容**base64**解密之后开头是**@ini_set("display_errors","0");@set_time_limit(0);**
**JSP**:
**i=A&z0=GB2312**- 菜刀链接
**JSP**木马时,第一个参数定义操作,其中参数值为**A-Q**,如**i=A****,第二个参数指定编码,其参数值为编码,如**z0=GB2312**,**有时候**z0**后面还会接着又**z1=**参数来加入攻击载荷
ASP:
Execute函数用于执行传递的攻击payload,这是必不可少的,这个等同于php类中eval函数OnError ResumeNext,这部分是大部分ASP客户端中必有的流量,能保证不管前面出任何错,继续执行以下代码Response.Write和Response.End是必有的,是来完善整个操作的
中国蚁剑流量
一些特征流量的截图

还有一种基于RSA加密的传输方式:
中国蚁剑从2.1.0版本开始,新增加了PHP RSA编辑器,内置编辑器RSA模块,使用了RSA非对称加密进行传输。可以新建编辑器–**RSA**配置–点击生成公私钥,然后配置公私钥和**PHP**代码即可,如下

然后加密流量如下图

对应的解密步骤如下
- 找到公钥解出
**N**和**E** - 然后用下面脚本解密客户端的发送流量
1 | |
- 解出来之后有时候会发现客户端要求服务器的返回流量是
**AES**加密流量 - 于是需要进行一个
**AES**流量解密,也是找到**16**位密钥,和冰蝎差不多,****解密记得去掉头和尾的随机数 - 解密网站:https://tool.lmeee.com/jiami/aes
- 解密脚本:
1 | |
1 | |
总结一下蚁剑的流量特征:
- 相对于菜刀来说请求头是蚁剑

- 然后
shell的名字是一串随机十六进制数 - 响应包的结果返回格式是:随机数+
base64编码后的内容+随机数 - 加密可能是纯
Base64也可能是RSA+Base64``AES+Base64,也有时候是rot13之类的 - 那么对应我们的解密也是有几种情况了
冰蝎Behinder``2.0流量
下载地址:https://github.com/rebeyond/Behinder
冰蝎和前两者的区别就是可以进行动态流量加密,且加密密钥是由使用者来设定

加密函数如下
1 | |
演示流量:冰蝎2.0流量分析.zip
总结一下流量特征:
- 第一阶段请求中返回包状态码为
**200**,返回内容必定是**16**位的密钥,密钥协商过程,一共两次,第二次返回的才是最终的密钥,第一次的是测试连接产生的随机密钥 - 加密方式一般是
**AES+BASE64** - 请求头存在:
**Accept: application/json, text/javascript, */*; q=0.01****Accept: text/html, image/gif, image/jpeg, ; q=.2, /; q=.2****Content-Type: application/octet-stream****UA**一般都是火狐特征居多,他内置了很多的**UA**头**Connection: Keep-Alive**,默认使用的长连接是为了避免频繁的握手造成的资源丢失**Content-Length: 16**
- 请求
**Cookie**的格式都为:**Cookie: PHPSESSID=; path=/;**
冰蝎**2.0**流量解密
**PHP**的一般是**AES-128**加密,我们需要对返回流量进行一次AES的解密,然后在进行base64解密,才能还原数据。- http://tools.bugscaner.com/cryptoaes/
- 有时候会是异或加密,
**AES**就不能解密了,发送流量和返回流量都有可能加密 - 服务器支持
**https**就是**aes**加密,如果服务器不支持**https**那么就是异或加密
冰蝎Behinder``3.0流量
key值是固定的,相对于2.0的随机来说
默认密码是**rebeyond**,**key**就是这个密码**hash**的前**16**位,所以密钥不是随机的
全程不再交互密钥生成,一共就俩次请求,第一次请求为判断是否可以建立连接,少了俩次 get 获取冰蝎动态密钥的行为,第二次发送 phpinfo 等代码执行,获取网站的信息
加密函数如下
1 | |
解密步骤基本和2.0差不多
总结一下流量特征:
- 请求包中
**content-length**为**5740**或**5720**(可能会根据**Java**版本而改变) - 请求头存在:
**Pragma: no-cache,Cache-Control: no-cache** - 请求头存在:
**Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/*;q=0.8,application/signed-exchange;v=b3;q=0.9**
冰蝎Behinder``4.0流量
哥斯拉godzilla流量
下载地址:https://github.com/BeichenDream/Godzilla
特点:
- 哥斯拉全部类型的
shell均过市面所有静态查杀 - 哥斯拉流量加密过市面全部流量
waf - 哥斯拉的自带的插件是冰蝎、蚁剑不能比拟的

总结一下流量特征:
- 请求头
**Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8****<font style="color:#DF2A3F;">Cookie</font>**的结尾会出现分号,强特征
- 响应头
**<font style="color:rgba(0, 0, 0, 0.9);">Cache-Control: no-store, no-cache, must-revalidate</font>**
- 密钥信息一般是在服务器流量里面进行协商的,
**<font style="color:#DF2A3F;">pass</font>**就是哥斯拉的默认密码 **PHP**的一般是发送流量直接解,返回流量需要去掉前后**16**位的附加数据,然后解**base64**然后解异或,需要密钥- 由于返回的是经过
**gzip**的数据,我们需要进行一个**gzdecode()**的解密 - 解密脚本如下:
1 | |
PHP的例题:dasflow.zip
可以得到最后的flag为**DASCTF{7892a81d23580e4f3073494db431afc5}**
**Java**的一般是去掉前后**16**位的附加数据,然后解**base64**然后解**AES**的**ECB/CBC**,需要密钥,一般密钥和**IV**是一样的
批量解密脚本如下:哥斯拉流量批量解密脚本.zip
有点问题:发送包解密不了,不过我提取出来了,需要配合上面的脚本使用
例题
冰蝎流量
追踪tcp 发现加密密钥 冰蝎

aes解密:http://tools.bugscaner.com/cryptoaes/

两次base64解密后得到压缩包


1 | |
这里使用工具看一下(轩禹rsa)

1 | |
后面就是rsa攻击
哥斯拉流量

更新: 2025-09-14 12:07:43
原文: https://www.yuque.com/chaye-apqbl/vsc85q/gyea2rlwnxl63yfa