Linux下的RootKit简单介绍和分析
本文对Linux中的Rootkit进行简单介绍,主要用于防护方案对Rootkit的防御效果介绍。
RootKit分为用户态rootkit和内核级rootkit。内核级rootkit可分为基于LKM的rootkit(又细分为系统调用表修改类以及VFS层rookit等)和非LKM的rootkit(如系统调用表重定向等)。Linux下还有BIOS、PCI、Boot(NTLDR、BCD、Grub)等更新颖技术的rootkit。
下面用表格形式说明几种典型的代表:
典型代表 |
控制方式 |
内核版本 |
隐藏/反检测特点 |
备注 |
Lrk5 |
主动连接 |
2.6.x |
替换用户态ls,ps,netstat等 |
第一代用户态rootkit,代码较多,安装简洁,容易上手 |
Knark-0.59 |
主动连接 |
2.2.x |
Knark0.59具有以下特性:
|
Linux 2.2内核下功能强大的LKM。调用表修改类rootkit通过修改导出的系统调用表,对与攻击行为相关的系统调用进行替换,隐藏攻击者的行踪。 |
Sk-1.3b |
主动连接 反向链接 |
2.2.x 2.4.x |
Sk后门服务端程序为静态ELF文件,压缩之后就几十K的大小; Sk采用动态隐藏的方式来隐藏指定的内容,包括文件、进程、网络连接; Sk2可以感染系统的elf文件达到自启动的目的,也可以通过替换系统的init文件来实现自动启动 |
全称suckit(super user control kit),运行于Linux 2.4内核下最经典的非LKM层rootkit。并没有修改系统调用跳转表的内容,而是首先拷贝了系统调用表,然后将拷贝的系统调用表安装入侵者的意图进行修改,执行入侵者改写的系统调用相应函数。然后将system_call从旧的系统调用表上移开,指向新的系统调用表 |
Adore-ng-056-wztfix |
主动连接 反向链接 |
2.4.x-2.6.x |
Adore-ng稳定性较好; Adore-ng后门服务端程序具体环境动态编译; 须使用客户端手动的去隐藏指定的进程、网络和文件 |
Linux 2.4-2.6经典的LKM;VFS层rootkit,并不修改系统调用层的内容,而是通过修改VFS层的具体处理函数,如替换VFS层的file_ops等函数,来实现信息隐藏目的。 |
WNPS |
主动连接 反向链接 |
2.6.x |
隐藏指定文件 隐藏文件中特定的内容 隐藏进程 动态隐藏网络连接、进程 隐藏自身模块 保护相关模块、进程、文件不被跟踪
|
2.6内核通用 |
Ddrk |
主动连接 |
2.6.x |
隐藏性好 隐藏进程 隐藏网络连接 隐藏自身模块 |
是一个Linux结合sk和adore-ng优点,内核态+用户态的rootkit |