Rootkit的类型、功能及主要技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Rootkit的类型、功能及主要技术Rootkit 的类型小结
1.固化Rootkits和BIOS Rootkits
固化程序是存于ROM中,通常很小,使用系统硬件和BIOS 创建顽固的软件镜像。将制定的代码植入到BIOS 中,刷新BIOS,在BIOS 初始化的末尾获得运行机会。重启无用、格式化无用,在硬盘上无法探测,现有的安全软件将大部分的扫描时间用在了对硬盘的扫描上。
本文整理:(第三方信息安全网)/
2 内核级Rootkits
内核级Rootkits(Kernelland Rootkits)是通过修改内核、增加额外的代码、直接修改系统
调用表、系统调用跳转(Syscall Jump),并能够替换一个操作系统的部分功能,包括内核和相关的设备驱动程序。现在的操作系统大多没有强化内核和驱动程序的不同特性。许多内核模式的Rootkit 是作为设备驱动程序而开发,或者作为可加载模块,如Linux 中的可加载模块或Windows 中的设备驱动程序,这类Rootkit 极其危险,它可获得不受限制的安全访问权。如果代码中有任何一点错误,那么内核级别的任何代码操作都将对整个系统的稳定性产生深远的影响。
特点:无进程;无端口。与用户级Rootkit 相比,与操作系统处于同一级别,可以修改或破坏由其它软件所发出的任何请求。
3 用户态Rootkits
用户态Rootkits(Userland Rootkits)是运行在Ring3 级的Rootkit,由于Ring3 级就是
用户应用级的程序,而且信任级别低,每一个程序运行,操作系统给这一层的最小权限。用
户态Rootkit使用各种方法隐藏进程、文件,注入模块、修改注册表等。
4 应用级Rootkits
应用级Rootkits 通过具有特洛伊木马特征的伪装代码来替换普通的应用程序的二进制代码,也可以使用Hook、补丁、注入代码或其它方式来修改现有应用程序的行为。
5 代码库Rootkits
代码库Rootkits 用隐藏攻击者信息的方法进行补丁、Hook、替换系统调用。这种Rootkit 可以通过检查代码库( 如Windows中DLL) 的改变而发现其踪迹。实际上,很难检测一些应用程序和补丁包一起发行的多种程序库中的Rootkit。
6 虚拟化Rootkits与HypervisorRootkits
虚拟化Rootkit(Virtual Rootkits)是利用虚拟机技术的虚拟机Rootkit(是模仿软件虚
拟机形式的Rootkit)。这种Rootkit 通过修改计算机的启动顺序而发生作用, 目的是加载
自己而不是原始的操作系统。一旦加载到内存,虚拟化Rootkits 就会将原始的操作系统加载为一个虚拟机,这使得Rootkit 能够截获客户操作系统所发出的所有硬件请求。Hypervisor Rootkits 是一种基于硬件或固化的Rootkit。它具有管理员权限的管理程序,
可以在支持硬件协助虚拟化和未安装虚拟化软件的系统上安装基于Hypervisor 的Rootkit。然后,这个基于Hypervisor 的Rootkit 将可以在比操作系统本身更高的权限级
别上运行。
特点:合法内核模式代码降低了检测出攻击者Hypervisor 模式代码的能力。它是在硬件上运行的虚拟的环境,由于攻击者强行在真正的内核插入虚拟机,在硬件上运行,因此,这常被误认为是内核Rootkits。在攻击者执行内核模式代码之前,Hypervisor Rootkits 不会
运行。当一个系统被Hypervisor Rootkits 感染时,在该系统的Kernelland 没有任何迹象,这是与Hypervisor Rootkits 而不是真正的硬件交互。因此,几乎是不可能从Kernelland、Userland 和应用层检测到。在Rootkit 和Anti-Rootkit 的对抗中,取决于对该Hypervisor
层的检测和预防,以及在哪一层安装了Rootkit。谁先去接近硬件就是赢者。这意味着如果用户运行基于Userland 或Kernelland 的Anti-Rootkit 工具,无法检测到HypervisorRootkits,因为前者不是运行在真实的硬件上,但高于真正的硬件虚拟机。rootkit的常见功能:
隐藏文件:通过strace ls可以发现ls命令其实是通过sys_getdents64获得文件目录的,
因此可以通过修改sys_getdents64系统调用或者更底层的readdir实现隐藏文件及目录,
还有对ext2文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。
隐藏进程:隐藏进程的方法和隐藏文件类似,ps命令是通过读取/proc文件系统下的进程目录获得进程信息的,只要能够隐藏/proc 文件系统下的进程目录就可以达到隐藏进程的效果,即hook sys_getdents64和readdir等。
隐藏连接:netstat命令是通过读取/proc文件系统下的net/tcp和net/udp文件获得当前
连接信息,因此可以通过hook sys_read 调用实现隐藏连接,也可以修改tcp4_seq_show
和udp4_seq_show等函数实现。
隐藏模块:lsmod命令主要是通过sys_query_module系统调用获得模块信息,可以通过hook sys_query_module 系统调用隐藏模块,也可以通过将模块从内核模块链表中摘除从而达到隐藏效果。
嗅探工具:嗅探工具可以通过libpcap库直接访问链路层,截获数据包,也可以通过linux 的netfilter框架在IP层的hook点上截获数据包。嗅探器要获得网络上的其他数据包需要
将网卡设置为混杂模式,这是通过ioctl系统调用的SIOCSIFFLAGS命令实现的,查看网卡
的当前模式是通过SIOCGIFFLAGS命令,因此可以通过hook sys_ioctl隐藏网卡的混杂模式。