Webshell流量深入理解

Webshell流量深入理解
M.YWebshell流量深入理解
Webshell流量,指的是攻击者在已经获取一个Web服务器的部分权限后,通过上传的Webshell后门脚本与服务器进行交互时,所产生的网络通信数据。
首先,攻击者通过漏洞(如文件上传漏洞、SQL注入、命令注入等)将一个Webshell脚本文件(如 shell.php、backdoor.jsp)放到了网站的目录下。这个Webshell脚本就是一个驻留在服务器上的后门。
攻击者通过客户端(专用连接工具)向这个Webshell脚本发送命令,服务器就可以执行攻击者想要执行的命令。
简单来说:
Webshell流量 = 攻击者通过Web后门(Webshell)远程控制服务器时,产生的“指令”和“结果”数据流。
通过分析webshell流量,可以知道攻击者的意图和攻击手法
一般CTF中,常涉及的流量有: 中国菜刀,蚁剑,冰蝎,哥斯拉,CobalStrike(CS流量)等。
菜刀流量
菜刀流量的一个明显的特征就是,响应里可能有 ->| |<- 这样的字符串
以buuctf:菜刀666题目为例:
打开流量包追踪流:
可以发现,在请求内容里,主要利用的是eval函数/assert函数,所有参数都经过base64编码,使用base64_decode函数。而响应内容是带 ->| |<-分隔符的
其次,如果多看几个流量,还会发现参数名上也有一些特征:参数名通常是命名为z1、z2、z3……通常 z0用于设置环境变量、z1为密码、z2为执行的命令。
这些就是菜刀流量的特征了,由于只是base64编码内容或直接呈现明文,因此流量分析过程简单。
以上题为例,追踪流很容易发现传输的文件:
提取出图片后得到key,再解密foremost提取出的压缩包,即可得到flag
蚁剑流量
还是先介绍一下特征,以便我们如何得知这是一个蚁剑流量:
相比菜刀使用明文/弱编码(Base64),使用固定分隔符|<-,极易被waf拦截,蚁剑主要改进的功能是编码解码器。
蚁剑的默认编码/解码器:
一. default
选择编/解码器选着default时,不对传输的Payload进行任何操作。
这里我搭建了一个文件上传靶场,传入一句话木马并抓取蚁剑的连接流量:
因为蚁剑是http 协议post请求,对http数据流进行追踪,可以找到数据交互的过程。
可以发现payload只进行了URL编码,可以使用工具轻松解码:
同时,我们也看到了一些特征:
- 蚁剑带了明显的特征函数@ini_set();
- 在响应的回显结果中,发现前后各有一串随机字符串(这是蚁剑为了对抗安全检测而设计的混淆手段)
二. base64编码器
请求响应流量如下:
可以发现,当选择编/解码器选着base64时,蚁剑会将payload经过base64编码再经过URL编码后赋值给一个随机字符串。
然后将这个随机字符串的值通过POST方法传入eval函数再base64解码,通过eval函数执行。
其余的特征不变,包括响应值中依旧前后会有随机的字符串:
三. chr编码器
请求响应流量如下:
可以发现,当编码器选择chr的时候,蚁剑会对payload的所有字符都利用利用chr函数进行转换,其余的特征均相同
四. 其它
- chr16编码器:对payload的所有字符都利用chr函数转换,但是对chr函数传递的参数是十六进制。
- rot13编码器:对payload中的字母进行rot13转换。
- rspphp编码器:需要配置生成RSA生成公钥、私钥
冰蝎流量
冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,冰蝎当中 shell 是通过传输协议配置的
可以看到有以下协议:
冰蝎 4.0 通信流程如下:
密钥协商
1 | 1、攻击者首先通过GET或者POST传参的方法对服务器请求密钥,譬如:http://127.0.0.1/webshell.aspx?password=6 |
加密传输
1 | 1、攻击者得到了密钥K,将K作为密钥进行AES128或者异或加密加密手法将执行命令发送到服务段 |
待更新ing……



















