Linux Rootkit 实验 | 00021 Rootkit 基本功能实现xROOT后门
时人不识凌云木,直待凌云始道高。
实验说明
本次实验将初步实现 rootkit 的基本功能:
- 阻止其他内核模块加载
- 提供 root 后门
- 隐藏文件
- 隐藏进程
- 隐藏端口
- 隐藏内核模块
本次实验基于 0001 实验中学习的挂钩技术。
注:由于本次实验内容过多,故分为00020
到00025
六个实验报告分别讲解。
本节实现“提供 root 后门”功能
实验环境
uname -a:
Linux kali 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux
GCC version:6.1.1
上述环境搭建于虚拟机,另外在没有特殊说明的情况下,均以 root 权限执行。
注:后面实验参考的是4.10.10的源码
实验过程
提供 root 后门
这个后门参考之前很火的“全志科技”使用的代码。
简单来说,是这样:我们在/proc
下创建一个文件,任何进程往其中写入特定的口令,我们就把它提升为root
权限(把uid
和euid
等设为0
)。
这个文件可以用本系列后面的“隐藏文件”实验的方法隐藏掉。
使用到的 API 是proc_create
和proc_remove
:
我们跟进看一下struct file_operations
:
其中是各种函数指针。我们目前只用到写操作处理函数:
下面开始行动!
最后,添加全局变量struct proc_dir_entry *entry
,并分别在入口函数/出口函数中创建/删除我们的文件:
测试结果如下:
实验总结与思考
是
而不是
- 个人以为 rootkit 应该提供一个能够远程连接的 root shell(对于内网的机器,用 reverse shell 是不是更好),并具备痕迹清理、自我删除甚至更强的反取证功能(另外,是否需要隐藏当前登录用户?)
参考资料
已参考
拓展阅读