被干爆😇
本来以为是出得史,赛后复现的时候发现搞错了,这题很有意思,而且远比想的要深得多,这里我诚恳反思,老实了
这题就得了个IP的分,确实不应该,第一是因为当时去做其他题去了,第二是确实也没想到它能出这种内核层面的题目
用户态的几种隐藏方式我都还是比较熟悉的,但是内核是一点没接触过.我感觉一般来说到内核水平的隐藏基本可以归类为APT了
而且一般来说内核在CTF/AWD也比较少见,因为基本都是docker/lxc环境,要是打内核很容易搞坏环境
像这次半决赛就是,环境坏了要向裁判申请才能重置,本来时间就很短,等重置完黄花菜都凉了
总的来说就是题做少了,对这种应急响应不熟
赛后复现
磁盘构建
这道题好就好在给个镜像,赛后复现很方便,其他题目基本都忘干净了
首先要把之前那个镜像先转换一遍,方便使用vmware workstation来起
1 |
|
然后直接配置好虚拟机,磁盘选择转换好的vmdk即可,其他参数随便配
当然也可以用qemu来跑这个虚拟机,但是要配置网络和传文件什么的过于麻烦,所以直接用vmware比较好
随后使用ubuntu/admin_123456
登录,修改/etc/netplan
配置ip,方便使用ssh连接
我的ip是3.3.3.3/24,你可以更换为合适自己vmware配置的局域网
随后即可通过ssh连接,我通过sftp传了unhide上去 (这里也是一个要反思的点,赛前居然没有准备unhide等工具)
找到这个进程,系统自带的ps确实找不到,但是file和md5sum又可以找到,就是这个无疑了 但是问题在于不知道其使用的是什么原理来隐藏的
这里我又把静态编译的ps传上去看了,也找不到这个进程,所以肯定不是LD_PRELOAD,那就只能往内核模块上面想了
做pwn的师傅看了看内核模块,也看了/proc/kallsyms
没看出什么问题
我也没看出什么端倪,感觉可能也是被隐藏了,这题肯定没表面说的这么简单
这个题给的是一个dd的raw磁盘,pwn师傅用qemu跑起来了,但是也没有找到什么有用的信息
赛后我照着GPT的教程:
1 |
|
用kpartx和mount挂载了磁盘,在/lib/systemd
下确实是找到了那个ELF,但是对应的内核模块没有找到
能想到的也就只有用暴力搜索关键字找文件了
1 |
|
那应该就是这个内核模块没错了
找出进程
/home/ubuntu/.viminfo
当时这个文件被我忽略了,我只检查了.bash_history之类的,赛后来才发现这里面实际上是有提示的
这个system-upgrade.service
会被隐藏起来,所以即使检查了/etc/systemd/system
也没法看到
查看这个systemd服务后就可以找到对应的内核模块了,经过逆向看出是一个HIDEME模块
模块逆向
模块函数名做了混淆,但不影响逆向
这里下面有个的systemd-agentd
等关键字,大概率是和这个有关系
后面经过逆向✌来看,他说他三分钟就逆出来密钥,至此这个题也没有什么秘密了
总结
题目总的来说出得是很有意思的,至少比很多脑洞题要好.
这次没做出来确实是忽略了很多细节,不然分可以再涨,干道前五不是问题
不过好的是其他题拿分都很多,所以后面渗透的排名最终定在12名,决赛是进了
偷偷出网
这个是一个经典,当时赛后我去virustotal上查了一下,发现有人在比赛过程中就偷偷出网丢到virustotal上扫描了
在浙江赛区我当时测试了,确实是开了屏蔽器没有信号的,不知道是不是其他赛区的管理问题了
(检查于03/17 12:10)