NewStarCTF2023week4-溯源

题目描述是冰蝎进行WebShell连接的流量包,我们需要找到攻击者获取到的服务器用户名和服务器内网IP地址。

先介绍一下常见webshell工具的流量特征:

1、中国菜刀
请求体中存在eval、base64等特征字符;

连接过程中使用base64编码对发送的指令进行加密;

还有一段以QG开头,7J结尾的固定代码。

2、蚁剑
默认的user-agent请求头是antsword XXX(不过可以修改)

一般将payload进行分段,分别进行base64编码;

一般具有像eval这样的关键字和@ini_set("display","0");这段代码。

3、冰蝎
PHP代码中可能存在eval、assert等关键词;

jsp代码中可能会有get class(),get class loader()等字符特征。

中国菜刀、蚁剑的攻击流量特征明显,容易被各类安全设备检测,而冰蝎是一款基于Java开发的动态加密通信流量的Webshell工具,由于通信流量被加密,传统的 WAF、IDS 设备难以检测,冰蝎最大特点就是对交互流量进行对称加密(冰蝎密文采用对称加密算法AES加密,加密后还会进行 base64 编码),且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。 

解题第一步,先找AES加密算法的密钥:

服务器使用随机数MD5的高16位作为密钥,存储到会话的SESSIONID中,我们可以通过wireshark抓包看到。

在找这些包之前我们其实可以先利用wireshark的过滤器进行初步的筛选:

筛选HTTP POST请求,因为攻击者通常通过POST请求发送命令和数据

http.request.method == "POST"

筛选非常大或非常小的HTTP POST数据包,这些可能包含有关服务器的信息 

http.request.method == "POST" and (frame.len < 1000 or frame.len > 5000)

筛选出具有 ACK 标志的 TCP 数据包,这些数据包通常表示响应报文

tcp.flags.ack == 1

我们也可以使用 and 对上面的一些条件进行组合筛选 。

查看请求shell.php的包:

NewStarCTF2023week4-溯源_第1张图片

注意:每个包前面是什么协议,你就追踪什么流,比如这里这个包是http协议,那么你就要追踪http流,否则出来的响应报文可能会存在格式的问题导致无法解码和识别。

追踪http流:

NewStarCTF2023week4-溯源_第2张图片

找到与AES加密相关的东西:

NewStarCTF2023week4-溯源_第3张图片

进行base64解码:

拿到 $key="e45e329feb5d925b";

NewStarCTF2023week4-溯源_第4张图片

接下来我们就可以对请求报文或者响应报文中的AES密文进行解密了:

像下面这种格式的就是AES的密文,红色部分是请求报文,蓝色部分是响应报文。

NewStarCTF2023week4-溯源_第5张图片

我们使用在线网站批量解码:AES批量加密解密 - 在线工具 (bugscaner.com)

先给大家看一下我前面提到过关于追踪流的情况:

这是对同一个http协议的包追踪http流和tcp流的不同结果

NewStarCTF2023week4-溯源_第6张图片

这里这个用户名是很好找的,很多包里面都有,我只是列举了其中某个包:

NewStarCTF2023week4-溯源_第7张图片

NewStarCTF2023week4-溯源_第8张图片

NewStarCTF2023week4-溯源_第9张图片

用户名为www-data

而服务器的内网ip则在长度为100的post请求1.php里面,其他包里面可能也还有,可以再找找,我主要是最开始追踪成tcp流了导致一直没找到这段响应报文。

NewStarCTF2023week4-溯源_第10张图片

第一段响应报文解两次码后还是密文,在第二段里面,从我框起来的位置一直拉到结尾。

NewStarCTF2023week4-溯源_第11张图片

 先解AES:

NewStarCTF2023week4-溯源_第12张图片

再对msg的内容解base64:

NewStarCTF2023week4-溯源_第13张图片

得到一个以basicInfo开头的东西,对其内容再解base64,注意要去掉basicInfo头否则会出错:

NewStarCTF2023week4-溯源_第14张图片

在解码内容里找到服务器内网ip和用户名:

172.17.0.2 和 www-data

NewStarCTF2023week4-溯源_第15张图片

其实也没必要对整个base64解码,只需要对末尾 "localIp":"MTcyLjE3LjAuMg==" 的内容解码即可得到内网ip:

NewStarCTF2023week4-溯源_第16张图片

因此flag为:

flag{www-data_172.17.0.2}

溯源这个东西其实是很可怕的

你可能感兴趣的:(Misc,CTF,溯源,wireshark,流量分析,http,算法,web安全)