2026软件系统安全赛traffic_hunt
字数 3891
更新时间 2026-03-19 12:08:19
2026软件系统安全赛 Traffic Hunt 题目深度解析与攻击链路复现教学
本文档基于一篇2026年软件系统安全赛的CTF挑战(traffic_hunt)writeup编写,旨在详细解析一次完整的、涉及多层攻击链的网络安全事件,并将其转化为教学材料,以帮助安全研究人员和学习者深入理解高级持续性攻击(APT)的常见手法、流量分析技巧与逆向分析方法。
一、 挑战背景与概述
本次分析的题目是一个典型的网络流量取证与溯源分析挑战。攻击者通过一系列精心设计的步骤,成功入侵了目标服务器,并最终获取了Flag。整个攻击链结合了Java Web漏洞利用、内存马注入、文件上传、木马回连和加密通信分析等多个安全领域的知识。
核心目标:从提供的网络流量包(PCAP)中,还原攻击者的完整攻击路径,并最终解密出攻击者窃取或生成的Flag。
二、 攻击链详细步骤解析
步骤1:初始漏洞利用 (Shiro RememberMe 反序列化)
攻击始于对目标 10.1.33.69:8080 端口的扫描与探测。
- 关键发现:在HTTP流量中,发现请求中包含
remember关键字。这是Apache Shiro框架身份验证绕过的典型痕迹。 - 利用点:攻击者利用了 Shiro RememberMe 反序列化漏洞。通过在Cookie中构造恶意的
rememberMe字段,攻击者能够将序列化的恶意代码发送至服务器,并在服务器反序列化时执行,从而获得初始立足点。 - 流量特征:在流量包中找到利用此漏洞的特定HTTP请求。
步骤2:内存马注入 (Behinder Filter 内存马)
成功利用Shiro漏洞后,攻击者并非上传一个持久的Webshell文件,而是注入了内存马,具有更强的隐蔽性。
- 注入路径:攻击者将内存马挂载在了一个看似无害的路径上:
/favicondemo.ico。这伪装成了一个网站图标请求,旨在规避基础的安全监控。 - 通信特征:大量对
POST /favicondemo.ico的请求,其请求体(Body)是长串的Base64编码文本。这种模式是“冰蝎(Behinder)”或类似加密Webshell客户端的典型通信特征。 - 密钥分析:
- 从Shiro利用成功的回包或后续流量中,可以分析出攻击者为这个内存马设置的连接密码参数
p,其值为:HWmc2TLDoihdlr0N。 - 冰蝎密钥生成算法:
p参数是连接密码。冰蝎(JSP版本)的AES密钥生成方式为:MD5(密码).hexdigest()[:16](取MD5值的前16个字符)。 - 计算过程:
HWmc2TLDoihdlr0N的 MD5 值为:1f2c8075acd3d118674e99f8e61b9596- 取前16个字符:
1f2c8075acd3d118
- 结论:后续所有发送到
/favicondemo.ico的Base64请求体,都可以使用 UTF-8字符串"1f2c8075acd3d118"作为AES密钥进行解密。
- 从Shiro利用成功的回包或后续流量中,可以分析出攻击者为这个内存马设置的连接密码参数
步骤3:通过内存马进行内网操作
攻击者通过冰蝎客户端连接到内存马,开始在受控主机上执行操作。
- 命令执行:解密早期的
/favicondemo.ico请求,可以看到攻击者执行了基础的信息收集,如:whoami(查看当前用户)w(查看当前登录用户)ps -ef(查看进程)ls -la(列出目录)
- 文件操作模块:攻击者使用了冰蝎的“文件管理”或“文件操作”功能模块。该模块的通信数据被加密传输。通过解密,可以获取到一个
FileOperation类的Java字节码。 - 木马上传:分析
FileOperation模块的通信内容,发现了关键的上传操作:- 目标路径:
/var/tmp/out - 文件重组:上传文件被分块(
blockSize = 30720),每个块有索引(blockIndex = 0 ~ 351)和Base64编码的内容(content)。通过将所有块的content按blockIndex排序、Base64解码、然后拼接,即可重组出被上传的原始文件——一个ELF格式的木马程序。
- 目标路径:
步骤4:持久化木马执行与回连
攻击者上传并运行了更强大的、独立的后门木马。
- 木马执行:通过冰蝎内存马,攻击者执行了命令:
cd /var/tmp/ ;chmod +x outcd /var/tmp/ ;./out --aes-key IhbJfHI98nuSvs5JweD5qsNvSQ/HHcE/SNLyEBU9Phs=- 关键信息:木马启动时带有一个AES密钥参数,这个密钥(
IhbJfHI98nuSvs5JweD5qsNvSQ/HHcE/SNLyEBU9Phs=)用于后续的C2通信加密。
- 回连会话:木马启动后,主动向攻击者的C2服务器
10.1.243.155:7788发起回连。这是一个新的TCP会话,独立于之前的HTTP/冰蝎流量。
步骤5:加密C2通信协议分析
分析木马(/var/tmp/out)与C2服务器(10.1.243.155:7788)之间的加密通信,是获取Flag的关键。
- 木马逆向分析:对重组出的ELF木马
out进行分析(例如使用pyinstxtractor等工具,因为它是PyInstaller打包的Python程序)。逆向分析后得知:- 通信使用 AES-GCM 加密模式。
- 用于加密的Key就是启动参数中的那个Base64编码的字符串。
- 协议结构:观察回连会话的TCP流,发现其结构规律为:
[4字节长度][加密数据包]交替出现。结合逆向信息,可确定完整的加密数据包结构为:[4字节 数据包长度][12字节 Nonce/IV][Ciphertext (密文)][16字节 GCM认证标签(Tag)] - 解密流程:
a. 从TCP流中分离出每个完整的加密数据包。
b. 提取每个包的前12字节作为AES-GCM的IV(Nonce)。
c. 提取最后16字节作为GCM Tag。
d. 中间部分即为Ciphertext。
e. 使用Base64解码后的Key(IhbJfHI98nuSvs5JweD5qsNvSQ/HHcE/SNLyEBU9Phs=)和提取的IV、Tag,对Ciphertext进行AES-GCM解密,得到原始明文。
步骤6:获取Flag
按照上述解密流程,分析木马与C2服务器之间的几次交互:
- 交互记录(解密后的明文):
- 攻击者(C2) -> 木马:
pwd - 木马 -> 攻击者(C2):
/var/tmp - 攻击者(C2) -> 木马:
ls - 木马 -> 攻击者(C2):
out - 攻击者(C2) -> 木马:
echo Congratulations - 木马 -> 攻击者(C2):
Congratulations - 攻击者(C2) -> 木马:
echo 3SoX7GyGU1KBVYS3DYFbfqQ2CHqH2aPGwpfeyvv5MPY5Dm1Wt9VYRumoUvzdmoLw6FUm4AMqR5zoi(关键) - 木马 -> 攻击者(C2):
3SoX7GyGU1KBVYS3DYFbfqQ2CHqH2aPGwpfeyvv5MPY5Dm1Wt9VYRumoUvzdmoLw6FUm4AMqR5zoi - ...后续
echo bye等
- 攻击者(C2) -> 木马:
- Flag解码:攻击者发送的第七条指令包含一个长随机字符串。这个字符串就是最终Flag的编码形式。
- 根据writeup提示,此字符串经过 Base58 和 Base64 两层编码。
- 解码步骤:
- 首先对
3SoX7GyGU1KBVYS3DYFbfqQ2CHqH2aPGwpfeyvv5MPY5Dm1Wt9VYRumoUvzdmoLw6FUm4AMqR5zoi进行 Base58解码。 - 将上一步解码得到的字节数据,再进行 Base64解码。
- 最终得到明文Flag:
dart{d9850b27-85cb-4777-85e0-df0b78fdb722}
- 首先对
三、 知识要点与技能总结
- 漏洞识别:熟悉常见Web框架(如Apache Shiro)的历史高危漏洞特征和利用方式。
- Webshell流量分析:识别冰蝎(Behinder)、哥斯拉等加密Webshell的通信模式和密钥推导算法。
- 协议分析:能够从原始TCP流中识别和解析自定义的加密通信协议,理解长度字段、IV、认证标签等组成部分。
- 加密解密操作:熟练使用工具(如CyberChef)或编程进行AES(CBC/GCM等模式)的加解密操作。
- 逆向工程基础:能对打包的二进制程序(如PyInstaller打包的ELF)进行基础静态分析,提取关键算法和配置信息。
- 文件重组:从网络流量中识别分块传输的文件,并能够根据索引正确重组出原始文件。
- 编码识别与转换:熟练掌握Base64、Base58、Hex等常见编码,并能根据上下文判断编码层次并进行链式解码。
- 攻击链构建思维:将分散的、不同层次的攻击证据(漏洞利用、内存马、文件上传、持久化后门、C2通信)串联起来,形成完整的攻击故事线,这是高级威胁狩猎和溯源的核心能力。
通过本教学文档的学习,读者应能掌握从复杂网络流量中抽丝剥茧、还原高级攻击全貌的方法论和实用技能。
相似文章
相似文章