个人工作之余的实践总结,简单地把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。
|
转载于:https://blog.51cto.com/staronmytop/1119475