bakamu
文章9
标签6
分类6

文章归档

webshell流量分析

webshell流量分析

前言

趁着面试vn的契机,仔细巩固了一下基础,把之前一直头疼的webshell流量分析好好搞了一下,顺便集中记录下来,方便理清思路。

蚁剑

蚁剑的攻击原理就没什么好讲了,直接就从分析流量和解题上手
蚁剑的流量中应当是有很多post请求的,可以直接过滤http.request.method == ‘POST’,对post请求追踪后会得到类似这个典型界面

注意到content类型是application/x-www-form-urlencoded ,接受的(即accept)是gzip(这个可以辨别webshell)和deflete,很明显的特征是中间请求包内容的一堆,其中开头的ini_set 就是典型的蚁剑标识,对它进行url解码后可以得到请求包内容

仔细分析,这段就是绕过的恶意代码,最后的payload就是后面的Base64加密内容

就是向/var/www/html/flag.txt写入flag{write_flag},再看返回包,6960cb20511e0a91914可以分解为6960+cb205+1+1e0a91914 其中中间的1或0代表是否写入成功,这里是成功了,两端就是前缀和后缀标记,所以这里的1.php就是后门文件。再来看另外的请求包

这个就是下载文件,url解码后可以知道是下载了/var/www/html/config.php ,其中下面没有展示的define(‘DB_NAME’, ‘|127.0.0.1:3306|root|123456|taocms’); 暴露了数据库地址:127.0.0.1:3306,数据库用户名:root,数据库密码:123456(弱密码!),数据库名:taocms

这个返回包时看到攻击者在尝试提权,为下一步攻击做准备,请求包解码后是cd “/var/www/html”; id; echo e124bc; pwd; echo 43523,其他数据包也是一样的分析

题目

第六章 流量特征分析-蚁剑流量分析

1.木马的连接密码是多少

按照时间顺序排列,打开第一个请求包追踪,密码就是1=%40ini_set 中的1

1
flag{1}

2.黑客执行的第一个命令是什么

根据解码后的cd “/var/www/html”;id;echo e124bc;pwd;echo 43523 ,d “/var/www/html”是切换目录,不是命令,而id则是第一个真正意义上的命令,它输出了下面的uid=33(www-data) gid=33(www-data)…

1
flag{id}

3.黑客读取了哪个文件的内容,提交文件绝对路径

由前面的分析就可以知道读取了/var/www/html/config.php,但是要提交的是绝对路径,所以要逐个解码,找到cat这个命令,最终发现cd “/var/www/html”;cat /etc/passwd;echo e124bc;pwd;echo 43523,所以绝对路径就是/etc/passwd

1
flag{/etc/passwd}

4.黑客上传了什么文件到服务器,提交文件名

根据第一个分析可以知道上传了flag.txt

1
flag{flag.txt}

5.黑客上传的文件内容是什么

得到flag{write_flag}

1
flag{write_flag}

6.黑客下载了哪个文件,提交文件绝对路径

就是之前的config.php

1
flag{config.php}

好靶场

本题流量中疑似蚁剑 WebShell 通信访问的目标域名是什么?

http.request.method==”POST”
过滤出POST请求包,查看Host地址

1
www.haobachang.com

疑似蚁剑 WebShell 的主要访问路径是什么?

统计一下请求,可以看见/hbc.php的路径访问最多

1
/hbc.php

疑似蚁剑通信主要使用的 HTTP 方法是什么?

1
POST

疑似蚁剑请求中用于提交数据的核心参数名是什么?

点击一个追踪后可以看见参数是ant

1
ant

疑似蚁剑流量中出现的明显异常 User-Agent 是什么?

合理猜测/hbc.php是木马,所以追踪访问路径/hbc.php的请求包,找到User-Agent

1
antSword/v2.1 Mozilla/5.0

疑似蚁剑请求的 Content-Type 是什么?

同上题

1
application/x-www-form-urlencoded

疑似蚁剑响应中异常的 Content-Type 是什么?

同样上题的的请求追踪,查看返回包

1
application/octet-stream

疑似蚁剑通信一共出现了多少次 POST /hbc.php 相关请求?

6+3共9次

1
9

本题中疑似蚁剑响应体使用了哪类分隔符标记?

看返回包

可以看见是AS6325BEGIN/AS6179END,也就是BEGIN/END标记

1
BEGIN/END

本题中混入的正常登录业务路径是什么?

看名字应该是这个

1
/login

本题中混入的正常文件分片上传路径是什么?

前面的是正常功能,可以看见image的路径

1
/api/file/chunk

本题中混入的业务埋点上报路径是什么?

业务埋点上报,简单来说,就是在一个软件或网页中,提前设置好采集点,当用户触发某个行为时,客户端自动将相关数据发送给服务器的过程。
可以把它理解为在数字产品里安装了无数个“摄像头”和“传感器”,用来记录用户的具体行为。

1
/api/telemetry/upload

本题中 DNS 解析得到的目标服务端 IP 是什么?

过滤出DNS流量,有两个,试了一下是第一个

1
203.0.113.88

补充

这里区分一下下载和读取,命令就不同,读取一般有cat,more,less等,而下载不会,直接就会展示内容,且这里攻击者读取了数据库,下载了配置文件
这里还有一个区分方法

其中的参数就是指最后的&分隔的数量

就是标蓝的地方,这个就是下载的请求,只有一个参数,这个方法还是挺好用的

冰蝎

冰蝎的特征有一个特征是请求头在冰蝎3.0之前是Content-Type: application/octet-stream
冰蝎流量由于熟练度不高,就从题目开始入手好了

题目

冰蝎3.0-jsp流量分析

1.黑客IP是什么?

直接http.request.method==”POST”过滤,寻找jsp文件,即上传木马,发现大量index.jsp,可能是,于是http contains “indeX.jsp”过滤,会发现这条PUT /indeX.jsp/ HTTP/1.1 追踪后发现

这个就是冰蝎默认的jsp木马,HTTP/1.1 201显示上传成功,所以结合一下是192.168.31.61,还可以知道秘钥是String k=”3f0af7bb4dbcfbd7” 使用了ECB加密方式

1
flag{192.168.31.61}

2.黑客上传的Webshell名是什么?

就是indeX.jsp,这里也可以回顾一下jsp,java文件用的就是AES加密,php就是XOR

1
flag{indeX.jsp}

3.黑客上传WebShell的时间是多少?

直接继续分析PUT包,看frame的UTC Arrival Time 2025-02-22 07:47:38

1
flag{2025-02-22 07:47:38}

4.木马的解密key是什么?

之前的上传木马文件已经分析过了,秘钥就是3f0af7bb4dbcfbd7

1
flag{3f0af7bb4dbcfbd7}

5.黑客执行的第一个命令是什么?

之前已经找到木马文件了,那就一个一个分析好了,因为要得到命令,直接分析日志文件请求包,最终在长度为510的日志中找到命令

1
flag{ifconfig}

6.黑客上传的文件内容是什么?

继续分析,会看到一个请求包里有关于上传文件的create命令

追踪一下TCP流,可以得到一个flag

1
flag{485375b7b06ad856a788c0d95229f35c}

7.黑客下载的文件内容是什么?

这里继续找到一个下载命令请求包,追踪一下TCP流,可以得到一个flag

1
flag{3aacab9ca36a6894c75048e4faf47052}

8.服务器内的flag是什么?

这里就是进入服务器直接就能找到根目录root文件夹下的flag.txt

1
flag{ae1d04dd3d15c6a18f904fe50fdf7eca}

好靶场

本题流量中疑似冰蝎 WebShell 通信访问的目标域名是什么?

1
www.haobachang.com

疑似 WebShell 的访问路径是什么?

1
/hbc.php

疑似冰蝎通信主要使用的 HTTP 方法是什么?

1
POST

疑似冰蝎通信中用于提交加密数据的参数名是什么?

1
rebeyond

疑似冰蝎请求的 Content-Type 是什么?

1
application/x-www-form-urlencoded

疑似冰蝎响应中异常的 Content-Type 是什么?

同上题

1
application/octet-stream

本题中明显异常的 User-Agent 之一是什么?

1
Java/1.8.0_202

疑似冰蝎通信一共出现了多少次 POST /hbc.php 请求?

1
8

在 Wireshark 中过滤 hbc.php 请求 URI 的显示过滤器可以写什么?

1
http.request.uri contains "hbc.php" | http.request.uri == "/hbc.php"

在 Wireshark 中过滤目标 Host 的显示过滤器可以写什么?

1
http.host == "www.haobachang.com"

除 WebShell 流量外,本题混入的业务登录路径是什么?

1
/login

本题混入的业务健康检查路径是什么?

还是看名字

1
/healthz

本题中用于混淆分析的业务日志上报路径之一是什么?

1
/api/log/collect

本题中哪个请求头可用于观察 PHP 会话痕迹?

这里要对请求中发每个参数了解,y以一个为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Host	www.haobachang.com	| 目标服务器:告诉服务器要访问哪个域名(一台服务器可能托管多个网站)
User-Agent Java/1.8.0_202 | 用户代理标识:表明发起请求的客户端是Java程序(而不是浏览器)。1.8.0_202是Java版本号
Accept */* | 接受类型:客户端能处理任何类型的响应内容(*/*表示任意格式,如JSON、HTML、XML等)
Content-Type application/x-www-form-urlencoded | 内容类型:告诉服务器请求体的数据格式是URL编码的表单数据(格式如:key1=value1&key2=value2)
Cache-Control no-cache | 缓存控制:要求服务器不要使用缓存的响应,必须从原始服务器获取最新数据
Pragma no-cache | 兼容性缓存控制:HTTP/1.0的遗留字段,功能同Cache-Control: no-cache,用于兼容老版本代理服务器
Connection Keep-Alive | 连接管理:保持TCP连接不断开,后续请求可以复用当前连接(减少握手开销)

Cookie PHPSESSID=a87ff679a2f3e71d9181a67b75; rememberMe=false | 会话状态:
- PHPSESSID:PHP会话ID,用于识别当前用户(类似临时身份证)
- rememberMe=false:自定义cookie,表示用户未勾选"记住我"

X-Forwarded-For 10.10.20.56 | 真实IP地址:代理服务器转发的原始客户端IP。10.10.20.56是内网地址,说明经过了代理/负载均衡器
Content-Length 214 | 内容长度:请求体(body部分)的字节数为214字节
1
Cookie

疑似冰蝎通信的响应状态码主要是什么?

1
200

本题中疑似冰蝎请求常见的缓存控制请求头是什么?

1
Cache-Control: no-cache

定位异常会话后,在 Wireshark 中查看完整 HTTP 交互常用的功能是什么?

也就是追踪流功能

1
Follow TCP Stream

本题中用于伪装来源地址的请求头是什么?

1
X-Forwarded-For
本文作者:bakamu
本文链接:http://example.com/2026/03/09/webshell%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90-%E7%8E%84%E6%9C%BA/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
糖糖的AI分身(BETA)
如果加载时间过长,可尝试打开系统代理