0%

溯源

2025-12-12 20:00By
iceblue
Webshell流量流量分析协议分析

Problem: [GHCTF 2025]mypcap

解题思路

解压题目附件得到一个流量包文件和一个python脚本

脚本内容如下:

import hashlib from Crypto.Cipher import AES # 问题1:请问被害者主机开放了哪些端口?提交的答案从小到大排序并用逗号隔开 PORT = "" # string of open port, like "8000,8888,9999,10000" # 问题2:mrl64喜欢把数据库密码放到桌面上,这下被攻击者发现了,数据库的密码是什么呢? PASSWORD = "" # string of password # 问题3:攻击者在数据库中找到了一个重要的数据,这个重要数据是什么? DATA = "" # string of important data # ---- ANSWER SHEET OVER ------ HASH = hashlib.blake2b() HASH.update(PORT.encode() + PASSWORD.encode() + DATA.encode()) D = HASH.digest() KEY = D[0:16] IV = D[16:32] cipher = AES.new(KEY,AES.MODE_GCM,IV) C_ = bytes.fromhex("39a7a41ddc95e651f0b217f8c542a84f79ddfb8276dafd739300ff09c0827759688d132932f8ab56c215aaf0") H = bytes.fromhex("fc809190d7e9cd8fdd0867841f923a68") FLAG = cipher.decrypt_and_verify(C_,H) print(FLAG.decode())

我们需要找到3个问题的答案,然后使用脚本计算FLAG

b2567eac98.jpg

数据包有明显的扫描行为,是典型的nmap的SYN半开扫描,我们过滤SYN = 0的数据包:

5ee9024072.jpg

可以看到开放的端口分别是22,3306,8080,第一问的答案就出来了。

继续查看流量,端口扫描后是目录扫描,然后是对tomcat的管理页面进行了登陆,追踪http流

6c284b2847.jpg

可以看到上传了一个war包

1f9ac2bbde.jpg

应该是上传了木马之类的程序,war包的名称是t3st,查找访问该war包的流量

过滤所有POST请求来看看到底上传了些什么

2a284003c0.jpg

冰蝎各版本流量特征

冰蝎2.0

  1. 默认长连接,请求头和响应头里会带有Connection: Keep-Alive
  2. accept固定为Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2

冰蝎3.0

  1. content-type固定为application/octet-stream(强特征)
  2. Accept&Cache-Control;默认设置:
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Cache-Control: no-cache Pragma: no-cache User-Agent: java/1.8
  1. 内置16个ua头(弱特征)
  2. content-length 请求长度

冰蝎4.0

  1. content-type固定为application/x-www-form-urlencoded
  2. accept字段固定为Accept: application/json, text/javascript, */*;q=0.01
  3. 默认ua头库
  4. 默认长连接,请求头和响应头里会带有Connection: Keep-Alive
  5. 固定的请求头和响应头
  6. 默认连接密码rebeyond,所有的webshell都有一串密钥,该密钥的值为连接密码MD5值的前16位
  7. 端口:客户端 与 服务端建立连接时,连接所使用本地端口分布在 49700 左右,每建立一次新的连接,端口就依次增加

哥斯拉流量特征

  1. ua头(弱特征)
  2. accept字段:text/html, image/gif, image/jpeg, *; q=.2, /; q=.2(弱特征)
  3. cookie。请求包的Cookie中有一个非常致命的特征,分号;(强特征)
  4. 请求体特征 (较强特征):比较大的数据包,base64编码
  5. 响应体特征 (强特征):如果之前的请求体采用base64编码,响应体返回的也是base64编码Cache-Control: no-store, no-cache, must-revalidate

蚁剑

  • 每个请求实体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且后面存在base64等字符
  • 使用 随机数+响应内容+随机数使用base64加密的payload,数据包存在以下base加密的eval命令,数据包中的payload几个分段内容都是用了base加密,解密之后可以看到相关的路径和命令等。

菜刀

ⅰ. 请求包中 ua头为百度爬虫,火狐

ⅱ. 请求实体中存在eval,base64等特征字符

ⅲ. 请求实体中传递depayload为base64编码,并且存在固定的Base64编码

可以看到是冰蝎流量,通过导出HTTP对象可以提取出这个wenshell

dfde14515a.jpg

保存出对象并解压得到jsp文件

53c88de19f.jpg

有了冰蝎的密码就可以解码了,最后一个POST包中有数据库密码

67dc5716d5.jpg

于是第二问答案也得到了。

关于第三问,数据库中的重要信息,可以再流量中搜索关于数据库的操作,过滤协议mysql

e86921a599.jpg

这里可以逐条查看,也可以尝试搜索data,info等关键字

1676e4b210.jpg

到此3个问题的答案都出来了,带入脚本,执行即可

d8f6c9b291.jpg

e84f119b69.jpg

关键代码(EXP)

结果与flag

NSSCTF{703663c4-1ff1-4c51-83b8-0f4303e82659}

总结与反思

还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论