个人工作之余的实践总结,简单地把RootKit分为用户态rootkit和内核级rootkit。内核级rootkit可分基于LKM 的rootkit(又细分为系统调用表修改类以及VFS层rootkit等)和非LKM的rootkit(如系统调用表重定向等)。Linux下还有BIOS、PCI、Boot(NTLDR、BCD,Grub)等更新颖技术的rootkit暂时不提供样本,同时如前面所说的,完全是个人的分析总结,不足之处欢迎指导交流!

 

 

下面用图表格来分析对比。

 

序号
典型代表
控制方式
适用内核版本
隐藏/反检测特点
备注
1
lrk5
主动连接
2.6.X
替换用户态 ls,ps,netstat等。
第一代 用户态RootKit,代码较多;安装简洁,容易上手。
2
knark-0.59
主动连接
2.2.x
Knark0.59具有以下特性:
1、隐藏或显示文件或目录;
2、隐藏进程;
3、隐藏 TCP或UDP连接;
4、程序执行重定向;
5、改变一个运行进程的 UID/GID的工具;
6、非授权地、特权程序远程执行守护进程。
Linux 2.2内核下功能强大的 LKM(Loadable Kernel Modules) rootkit。 调用表修改类 rootkit通过修改导出的系统调用表,对与***行为相关的系统调用进行替换,隐藏***者的行踪。
3
sk-1.3b
主动连接,反向连接
2.2.x, 2.4.x
1: sk 后门服务端程序为静态ELF文件,压缩之后就几十K的大小;
2:通过对肉鸡的任何开放的 TCP端口发送特定数据就可以激活后门,端口复用;
3: sk采用动态隐藏的方式来隐藏指定的内容,包括文件,进程,网 络连接;
4: sk2可以感染系统的elf文件达到自启动的目的,也可以通过替换系统的init文件来实现自动启动。
全称 suckit(super user control kit);运行于Linux 2.4内核下最经典的非LKM层 rootkit。并没有修改系统调用跳转表的内容,而是首先拷贝了系统调用表,然后将拷贝的系统调用表按照***者的意图进行修改,执行***者改写的系统调用响应函数。然后将system_call从旧的系统调用表上移开,指向新的系统调用表。
4
adore-ng-056-wztfix
主动连接,反向连接
2.4.X—2.6.X
1: adore-ng稳定性较好;
2: adore-ng后门服务端程序具体环境动态编译;
3:须使用客户端手动的去隐藏指定的进程、网络和文件;
4: adore-ng可以可以通过插入或者替换系统模块来实现自动启动。
Linux 2.4-2.6经典的 LKM;VFS层 rootkit 并不修改系统调用层的内容,而是通过修改 VFS层的具体处理函数,如替换 VFS 层的 file_ops 等函数,来实现信息隐藏目的。
5
WNPS
主动连接,反向连接
2.6.X
1、隐藏:
隐藏指定文件
隐藏文件中特定的内容
隐藏进程
动态隐藏网络连接、进程
隐藏自身模块
保护相关模块、进程、文件不被跟踪
2、内核反弹后门,以设置定时自动回连;
3、跨内核平台简易安装,附带一个 wnps.ko就可以管理所有2.6内核的机器;
4、伪终端支持,键盘记录功能;
5、比 adore-ng更稳定的模块注射方式;
6、通讯加密。
adore-ng加强版,加密通信, 2.6内核通用,隐蔽性更高。
6
Ddrk
主动连接
2.6.X
1、隐藏性好:
隐藏进程
隐藏网络连接
隐藏自身模块
2、反 chkrootkit,rkhunter等。
是一个 Linux结合sk和adore-ng优点,内核态+用户态+内核态的rootkit。
 

猛击这里下载测试样本!