跳转至

Solar 应急响应赛 3 月 Writeup

  • 时间:3 月 29 日 10:00~18:00
  • 附件大小:1 GB 两层压缩,解压后 > 40 GB

简单总结

题目总体还好,基本上是经典的取证类型(难度中等左右)。因为 Flag 格式没有明确的问题,耽误了一点时间。

窃密排查个人觉得思路会比较清奇,可能是凭据的重复利用,或者是对数据解码解密。

逆向题看起来应该挺简单的(随机数种子+其他),不过反编译代码看着确实头疼,就没咋做(其实多花点时间能做上的吧)。

【签到】和黑客去Battle把!

固定 15 分的签到题,一开始还以为这个 AI 很难对付,后来发现密钥直接给出来了:

签到题对话

果然是签到啊,之前被这类题搞出点阴影过,无语。

窃密排查-1

根据题目提示使用 SSH 连接到靶机,位于 root 用户的根目录。使用 ls -la 列出所有文件,发现有一个隐藏的 .megaCmd 目录,进入可以发现一些日志。直接输出可以获得黑客登录的账户:

MegaCmd 的输出日志

此处即 25solar3abc@habenwir.com

溯源排查-1~3

挂载检材后,先行检查 root 与用户目录,可发现可疑的删除文件:

被删除的奇怪文件

这些文件的内容完全相同,均为 Systemd 服务配置文件,指向一个可执行程序 /usr/local/systemd/journaled

[Unit]
Description=journaled
ConditionFileIsExecutable=/usr/local/systemd/journaled

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/local/systemd/journaled

Restart=always

RestartSec=120
EnvironmentFile=-/etc/sysconfig/systemd-journaled

[Install]
WantedBy=multi-user.target

系统日志服务正确的写法是 systemd-journald,这里明显不正常,将 /usr/local/systemd/journaled 文件提取出来,用在线沙箱分析:

沙箱捕获的网络行为

可见其尝试连接了 156.238.230.167 IP地址,对应此题答案。外连程序的绝对路径 /usr/local/systemd/journaled 对应第二题答案。

为了找到后门的启动服务,可以搜索 journaled,最终在 /etc/systemd/system 找到了完全相同的、名为 systemd-journaled.service 的服务文件。

系统服务文件位置

溯源排查-4

根据题目中的“业务系统已被删除”,找到根目录下被删除的 nacos 目录,以及一个被删除的压缩包 nacos-server-2.2.2.tar.gz

被删除的 NacOS 文件

因此本题答案是 flag{nacos}

溯源排查-6

结合找到的 nacos 压缩包版本为 2.2.2,查找 2.2.2 及以后修复的漏洞。

我的洞呢

笔者在下午查洞的时候,发现关于 NacOS 的 CVE 漏洞极其少见,精准匹配的只能找到一个 CNVD 的洞;稍微扩展一点搜 Tomcat、RCE、内存马,都对不上,这是相当奇怪的一件事。是我查的方法不对吗...

同时在 /tmp 目录下发现可疑的 nacos_data_temp 文件,提取出来进行分析,发现 nacos_data_temp 是一个恶意注入的 Java 包。

用于注入的 Java 包

defineClass 里是一段 Base64 编码信息,我们解码一下并反编译,得到一个 Webshell 后门:

反编译的后门包

审计代码的 doFilter 方法,发现:

  • 需要 Referer 设置为 https://www.google.com/ 才能生效
  • x-client-data 支持设置为 cmd/rebeyond/godzilla 三种,并有不同的适配

结合开源项目搜索,找到了 c0olw/NacosRce 工具与这样的特性吻合。故答案为 flag{https://github.com/c0olw/NacosRce}

评论