Rootkit技术的主要原理
- 格式:rtf
- 大小:15.81 KB
- 文档页数:2
挂钩技术—、WindowsRootKit概述2005年10月,RootKitRevealer的作者MarkRussinovich发现Sony公司使用RootKit以保护其电子出版物不受盗版侵权DMark在他的Blog上指出Sony公司不仅在消费者毫不知情的情况下(既没有明确告知消费者,也没有在软件的服务条款中提及)向消费者的电脑中安装了—个RootKit,而且知情的攻击者还可以利用这个RootKit隐藏自己的工具。
随后,RootKit 引起了人们广泛关注。
Rootkit是黑客在入侵目标系统后,开辟后门和隐藏行为的技术或者是工具。
当攻击者通过某种方式进入被入侵的系统并安装上RootKit就可以欺骗目标计算机的操作系统,从而达到隐藏所有修改并拥有操作系统控制权。
WindowsRootKit的核心技术就是隐藏技术,隐藏的内容包括文件、目录、进程、注册表项、网络端口、设备驱动器、网卡模式等。
RootKit最早出现于Unix系统中,随着计算机技术的发展,现在多种操作系统平台中都出现了RootKit。
其中Windows系统上的RootKit技术,尤其受到广泛重视,RootKit也分为几种:(一)早期RootKit工作原理是把系统中的一些程序替换成恶意的版本,当这些替换的程序运行时,就会自动隐藏特定的对象。
如称为RootKit之父的Cabanas病毒…(二)用户模式RootKit这种RootKit是安装在系统当前用户的安全上下文环境,替换、挂钩(hook!或者修改某些操作系统调用和DLL中的函数。
(三)内核模式RootKit现在的WindowsRootKit所使用的技术也从用户模式向内核模式发展,内核模式RootKit不仅能拦截底层的API调用,而且还会操作内核数据结构。
二、WindowsRootKit的检测技术WindowsRootKit检测技术总是伴随着Rootkit技术的发展而发展的,检测技术的发展也迫使WindowsRootKit技术不断更新。
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、替换系统调用。
Windows下Rootkit启动技术的研究与应用的开题报告一、研究背景与意义Rootkit是一种可以深度隐藏在操作系统中的恶意软件,其使用非常广泛,比如可以用于窃取用户的敏感信息,破坏系统功能等等。
同时,Rootkit也是一种非常难以检测和清除的恶意软件,因为其可以深度隐藏在操作系统中,并且可以不断更新自己的技术来逃避杀毒软件的检查。
因此,研究Rootkit的启动技术对于保障计算机网络安全具有重要的意义。
二、研究内容本研究将重点研究Windows下Rootkit的启动技术,从以下几个方面展开:1. Rootkit的原理及分类首先,对Rootkit的原理及其分类进行研究,掌握基本概念及其工作原理。
2. Windows操作系统的引导过程对Windows操作系统的引导过程进行深入研究,掌握Windows启动时的各项配置、驱动程序和系统服务等。
3. Rootkit启动技术的研究分别从BIOS阶段、Boot Loader阶段、内核阶段等方面研究Rootkit 的启动技术,深入理解Rootkit的各个阶段及其相应的技术。
4. Rootkit启动技术的应用在深入研究Rootkit的启动技术的基础上,探究如何应用研究成果,对系统进行检测和防御措施等。
三、技术路线1. 阅读相关文献,深入了解Rootkit的原理及其工作方式。
2. 深入研究Windows操作系统的引导过程,并使用相关工具对Windows启动流程进行跟踪调试。
3. 对Rootkit的启动技术进行深入研究,包括BIOS阶段、Boot Loader阶段、内核阶段等方面。
4. 进行实验验证,确定Rootkit的启动技术的可行性。
5. 将研究成果转化为系统防御措施,加强系统安全防护能力。
四、研究成果与实用价值本研究的主要成果有如下几点:1. 对Rootkit的启动技术进行深入研究,掌握Rootkit的启动机制及其技术特点。
2. 构建Rootkit启动技术的实验系统,并进行实验验证。
Rootkit的基础知识和防御方法-电脑资料Rootkit的基础知识和防御方法好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具,。
实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。
通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。
进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。
接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。
通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。
一全面认识rootkit:Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。
这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。
从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。
rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。
换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机,还是计算机取证人员。
可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。
二了解Rootkit的攻击原理:要了解Rootkit的攻击原理,就必须从系统原理说起,我们知道,操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。
chkrootkit监控原理chkrootkit是一种用于监控和检测系统中是否存在rootkit的工具。
rootkit是一种恶意软件,它通过修改操作系统内核或其他系统组件的方式隐藏自身,从而实现对系统的控制和操纵。
chkrootkit通过扫描系统文件和进程,检测系统中是否存在已知的rootkit特征,从而帮助管理员及时发现和排除潜在的安全威胁。
chkrootkit的监控原理主要包括以下几个方面:1. 文件系统扫描:chkrootkit会扫描系统中的文件系统,检测是否存在已知的rootkit文件。
它会比对系统文件的MD5哈希值和预设的安全值进行对比,如果发现差异,则可能存在潜在的rootkit。
此外,chkrootkit还会检查隐藏的文件和目录,因为rootkit通常会将自己隐藏起来,以逃避监测。
2. 进程扫描:chkrootkit会扫描系统中运行的进程,检测是否存在已知的rootkit进程。
它会比对进程的命令行参数和已知的rootkit 特征进行对比,如果发现匹配,则可能存在潜在的rootkit。
此外,chkrootkit还会检查隐藏的进程,因为rootkit通常会通过隐藏进程来实现对系统的操控。
3. 系统配置检查:chkrootkit会检查系统配置文件是否存在已知的rootkit特征。
例如,它会检查SSH配置文件是否被rootkit篡改,因为rootkit通常会通过修改SSH配置文件来实现远程访问权限。
4. 漏洞扫描:chkrootkit会扫描系统中已知的漏洞,并检测是否存在已知的rootkit利用这些漏洞的痕迹。
例如,它会检测系统中是否存在已知的内核漏洞,并检查是否有rootkit利用这些漏洞进行入侵。
5. 日志分析:chkrootkit会分析系统日志,检测是否存在已知的rootkit攻击痕迹。
例如,它会检查系统日志中是否有异常登录记录、异常网络连接等,以判断是否存在rootkit攻击。
总结来说,chkrootkit通过扫描系统文件、进程、配置和日志,检测系统中是否存在已知的rootkit特征,从而帮助管理员发现和排除潜在的安全威胁。
Rootkit技术rootkit的主要分类早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat 等系统工具,或修改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权,也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中;目前最常见的rootkit是内核级rootkit。
内核级rootkit又可分为lkm rootkit、非lkm rootkit。
lkm rootkit主要基于lkm技术,通过系统提供的接口加载到内核空间,成为内核的一部分,进而通过hook系统调用等技术实现隐藏、后门功能。
非lkm rootkit主要是指在系统不支持lkm机制时修改内核的一种方法,主要通过/dev/mem、/dev/kmem设备直接操作内存,从而对内核进行修改。
非lkm rootkit要实现对内核的修改,首先需要获得内核空间的内存,因此需要调用kmalloc分配内存,而kmalloc是内核空间的调用,无法在用户空间直接调用该函数,因此想到了通过int 0x80调用该函数的方法。
先选择一个不常见的系统调用号,在sys_call_table 中找到该项,通过写/dev/mem直接将其修改为kmalloc函数的地址,这样当我们在用户空间调用该系统调用时,就能通过int 0x80进入内核空间,执行kmalloc函数分配内存,并将分配好的内存地址由eax寄存器返回,从而我们得到了一块属于内核地址空间的内存,接着将要hack的函数写入该内存,并再次修改系统调用表,就能实现hook系统调用的功能。
rootkit的常见功能隐藏文件:通过strace ls可以发现ls命令其实是通过sys_getdents64获得文件目录的,因此可以通过修改sys_getdents64系统调用或者更底层的readdir实现隐藏文件及目录,还有对ext2文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。
隐藏软件的应用工作原理什么是隐藏软件?隐藏软件是一种可以在计算机或移动设备上运行的程序,它的主要功能是隐藏自己的存在和操作,使用户无法察觉。
隐藏软件被广泛用于各种场景,包括监控和远程控制等。
隐藏软件有许多不同的工作原理和技术,下面将介绍一些常见的应用工作原理。
1. 隐藏进程隐藏软件的一种常见工作原理是隐藏自身的进程。
进程是计算机中正在运行的程序的实例,每个程序都会在计算机上创建一个或多个进程。
通过隐藏自身的进程,隐藏软件可以在任务管理器等系统工具中不可见。
隐藏进程的常见技术包括:•Rootkit技术:Rootkit是一种可以隐藏进程和其他恶意软件的工具,它可以修改操作系统内核或其他系统组件,以实现隐匿性。
Rootkit技术需要在系统中获得root权限,因此往往用于攻击者对已攻陷的系统进行隐藏。
•注入技术:隐藏软件可以利用注入技术将自己的代码注入到其他进程中,从而隐藏自己的存在。
注入技术可以利用操作系统提供的API,也可以通过更底层的手段实现。
注入技术的实现较为复杂,但可以使隐藏软件更加隐匿。
2. 文件隐藏隐藏软件还可以通过隐藏自己的文件来避免被用户察觉。
文件隐藏的技术根据操作系统和文件系统的不同而有所差异。
文件隐藏的常见技术包括:•改变文件属性:隐藏软件可以通过修改文件属性,如隐藏文件、只读文件等,来隐藏自身。
一些操作系统会将隐藏文件的显示选项默认设置为关闭,用户需要手动开启才能看到这些文件。
•加密文件:隐藏软件可以将自己的文件进行加密,只有正确解密的用户才能查看和操作这些文件。
加密文件可以使隐藏软件更难被察觉,因为即使用户能够看到文件,也无法理解其内容。
•文件名伪装:隐藏软件还可以将自己的文件伪装成其他类型的文件,如图片、音频或文档等,以迷惑用户和系统。
文件名伪装通常需要使用特定的文件格式和技术。
3. 网络通信隐藏软件通常需要与远程服务器进行通信,以接收远程指令和发送收集到的数据。
为了保证隐匿性,隐藏软件通常采用隐蔽的通信方式。
应用级->内核级->硬件级
早期的rootkit主要为应用级rootkit,应用级rootkit主要通过替换login、ps、ls、netstat等系统工具,或修改.rhosts等系统配置文件等实现隐藏及后门;硬件级rootkit主要指bios rootkit,可以在系统加载前获得控制权,通过向磁盘中写入文件,再由引导程序加载该文件重新获得控制权,也可以采用虚拟机技术,使整个操作系统运行在rootkit掌握之中;目前最常见的rootkit是内核级rootkit。
内核级rootkit又可分为lkm rootkit、非lkm rootkit。
lkm rootkit主要基于lkm技术,通过系统提供的接口加载到内核空间,成为内核的一部分,进而通过hook系统调用等技术实现隐藏、后门功能。
非lkm rootkit主要是指在系统不支持lkm机制时修改内核的一种方法,主要通过/dev/mem、
/dev/kmem设备直接操作内存,从而对内核进行修改。
非lkm rootkit要实现对内核的修改,首先需要获得内核空间的内存,因此需要调用kmalloc分配内存,而kmalloc是内核空间的调用,无法在用户空间直接调用该函数,因此想到了通过int 0x80调用该函数的方法。
先选择一个不常见的系统调用号,在sys_call_table中找到该项,通过写/dev/mem 直接将其修改为 kmalloc函数的地址,这样当我们在用户空间调用该系统调用时,就能通过int 0x80进入内核空间,执行kmalloc函数分配内存,并将分配好的内存地址由eax寄存器返回,从而我们得到了一块属于内核地址空间的内存,接着将要 hack的函数写入该内存,并再次修改系统调用表,就能实现hook系统调用的功能。
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隐藏网卡的混杂模式。
密码记录:密码记录可以通过hook sys_read系统调用实现,比如通过判断当前运行的进程名或者当前终端是否关闭回显,可以获取用户的输入密码。
hook sys_read还可以实现login后门等其它功能。
日志擦除:传统的unix日志主要在/var/log/messages,/var/log/lastlog,/var/run/utmp,/var /log/wtmp下,可以通过编写相应的工具对日志文件进行修改,还可以将HISTFILE等环境变设为
/dev/null隐藏用户的一些操作信息。
内核后门:可以是本地的提权后门和网络的监听后门,本地的提权可以通过对内核模块发送定制命令实现,网络内核后门可以在IP层对进入主机的数据包进行监听,发现匹配的指定数据包后立刻启动回连进程。
rootkit的主要技术:
lkm注射、模块摘除、拦截中断(0x80、0x01)、劫持系统调用、运行时补丁、inline hook、端口反弹……
lkm注射:也是一种隐藏内核模块的方法,通过感染系统的lkm,在不影响原有功能的情况下将rootkit 模块链接到系统lkm中,在模块运行时获得控制权,初始化后调用系统lkm的初始化函数,lkm注射涉及到elf文件格式与模块加载机制。
模块摘除:主要是指将模块从模块链表中摘除从而隐藏模块的方法,最新加载的模块总是在模块链表的表头,因此可以在加载完rootkit模块后再加载一个清除模块将rootkit模块信息从链表中删除,再退出清除模块,新版本内核中也可以通过判断模块信息后直接list_del。
拦截中断:主要通过sidt指令获得中断调用表的地址,进而获取中断处理程序的入口地址,修改对应的中断处理程序,如int 0x80,int 0x1等。
其中拦截int 0x1是较新的技术,主要利用系统的调试机制,通过设置DR寄存器在要拦截的内存地址上下断点,从而在执行到指定指令时转入0x1中断的处理程序,通过修改0x1中断的处理程序即可实现想要的功能。
劫持系统调用:和拦截中断类似,但主要是对系统调用表进行修改,可以直接替换原系统调用表,也可以修改系统调用表的入口地址。
在2.4内核之前,内核的系统调用表地址是导出的,因此可以直接对其进行修改。
但在2.6内核之后,系统调用表的地址已经不再导出,需要对0x80中断处理程序进行分析从而获取系统调用表的地址。
运行时补丁:字符设备驱动程序和块设备驱动程序在加载时都会向系统注册一个Struct
file_operations结构实现指定的read、write等操作,文件系统也是如此,通过修改文件系统的
file_operations结构,可以实现新的read、write操作等。
inline hook:主要是指对内存中的内核函数直接修改,而不影响原先的功能,可以采用跳转的办法,也可以修改对下层函数的call offset实现。
端口反弹:主要是为了更好的突破防火墙的限制,可以在客户端上监听80端口,而在服务器端通过对客户端的80端口进行回连,伪装成一个访问web服务的正常进程从而突破防火墙的限制。