Rootkit的类型、功能及主要技术
Linux后门入侵检测工具
【Linux】后门入侵检测工具一、rootkit简介rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。
rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统。
rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。
1、文件级别rootkit文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。
在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。
通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login 程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。
此时,即使系统管理员修改root密码或者清除root密码,攻击者还是一样能通过root用户登录系统。
攻击者通常在进入Linux系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。
在默认情况下,Linux中也有一些系统文件会监控这些工具动作,例如ifconfig命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。
如果这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。
Windows RootKit概述
挂钩技术—、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 是什么
Rootkit 是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit 一般都和木马、后门等其他恶意程序结合使用。
在悬念迭起的中外谍战片里,对战双方中的一派势力通常会派遣特工人员潜伏到对手阵营中。
这名卧底人员良好的伪装使得对手对此长时间毫无察觉;为了能够长期潜伏他不贸然采取高风险行为以免过早暴露自己;他赢得敌人的信任并因此身居要职,这使得他能够源源不断地获取重要情报并利用其独特渠道传送回去。
从某种意义上说这位不速之客就是Rootkit——持久并毫无察觉地驻留在目标计算机中,对系统进行操纵、并通过隐秘渠道收集数据的程序。
Rootkit 的三要素就是:隐藏、操纵、收集数据。
“Rootkit”中root 术语来自于unix 领域。
由于unix 主机系统管理员账号为root 账号,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了这台电脑。
然而能够“root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。
因此Rootkit 的初始含义就在于“能维持root 权限的一套工具”。
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任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。
第九章 Rootkit
文件级Rootkit(用户模式Rootkit)
返回首页
使用最广泛、特性最全面的用户模式Rootkit之一 就是Linux Rootkit家族(LRK)。
Universal Rootkit(URK)作用于多种UNIX变种: Linux、Solaris、BSD、FreeBSD、IRIX、HP-UX。 URK包括多种实现后门/隐藏攻击者的替换程序: login、sshd、ping、passwd、su、pidentd、ps、 top、find、ls、du、netstat、sniffer。
为利用该功能实现Rootkit一些恶意LKM变换了内 核处理各种系统调用的方式。攻击者可利用这项特性 插入特殊内核模块,截获系统调用并修改,改变系统 对特定命令的响应方式。
最流行的LKM Rootkit
Kernel Intrusion System(KIS): 可加载内核模块Rootkit(功能最强大) 其操作非常容易,表现为两种形式:一个不错的 GUI和一个隐藏进程周围的界面。 GUI中攻击者可设定KIS内核模块并将其粘附到文 件系统任何可执行文件,使KIS在系统启动时重新启 动。GUI让攻击者可远程控制同一个GUI内核模块。 KIS用户界面的方便就像一般的应用级Trojan程序。
URK工具是LRK工具的子集,它仍有很强破坏 力,其跨平台能力使得它对攻击者特别有用。
Windows用户模式Rootkit使用不频繁的原因:
1)20世纪90年代中后期,Windows系统中带有GUI 特性的应用程序级的后门迅速增加,不再需要修 改操作系统组件。 2)同时Windows Rootkit直接转向内核级本身,而 不是普通的系统二进制程序。 3)Windows文件保护(WEP)阻碍可执行程序替换。 WEP可发现计算机中重要可执行程序和库文件未 预料到的变化,并自动恢复原来的文件。
rootkit
内核对象是 Windows 系统中用来登记系 统运行情况和资源记录的内核数据结构,由 对象管理器来管理。修改内核数据结构的方 法主要分为两类: 修改活动进程链表(PsActiveProcessList) 修改进程令牌 (Process Token)
在链表 PsActiveProcessList 上保存着所有进程的 EPROCESS 结构,当某些模块需要获得系统中 运行的所有进程信息时,就会通过遍历该双向 链表来获得所要的信息。如果在 PsActiveProcessList 链表上删除相应的某进程信 息,则该进程将被隐藏起来,即使调用系统服 务 ZwQuerySystemInformation()也无法得到该进 程的相关信息。而由于 Windows 的线程分派 器使用另外的数据结构 (pKiDispatchReadyListHead,pKiWaitInListHead,p KiWaitOutListHead),因此,隐藏的进程仍然 能够正常的运行
需要注意,Rootkit 本身并不能使攻击者获 取管理员权限,它不是一种软件利用工具。 攻击者必须先使用其它手段获取主机的控 制权,例如利用漏洞的溢出攻击,或者被 动的密码嗅探等。一般需要取得管理员权 限才能正确部署 Rootkit工具。Rootkit 一般 具备下述功能:
窃取重要信息 通过监控键盘击键以及网络数据,窃取用户口令以及网络银行密码等 隐私信息 维持控制权 攻击者可以通过 Rootkit 隐藏的后门,非常隐蔽的以管理员权限再次进 入系统 隐藏攻击痕迹 隐藏与 Rootkit 相关的文件、进程、通信链接和系统日志等攻击痕迹。 欺骗检测工具 使检测工具无法发现系统的异常,无法找到隐蔽在系统中的 Rootkit 软件。 提供植入手段 其它可执行程序,例如蠕虫或病毒可以通过 Rootkit提供的隐蔽通道 植入系统,并且可以使用 Rootkit 来隐藏自身。 提供攻击跳板 攻击者可以利用受控主机对网络上的其它主机发动攻击,例如蠕虫传 播、拒绝服务攻击等。
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文件系统直接进行修改的方法,不过实现起来不够方便,也有一些具体的限制。
鬼影病毒及ROOTKIT技术简介
例子
以超级巡警的主要执行文件AST.exe为例,首先,有个文件名为kkk.exe 的恶意程序向IFEO列表里写入AST.exe项,并设置其Debugger指向 kkk.exe,于是系统就会认为kkk.exe是AST.exe的调试器,这样每次用户 点击执行AST.exe时,系统执行的实际上是作为调试器身份的kkk.exe, 至于本该被执行的AST.exe,此刻只能被当作kkk.exe的执行参数来传递 而已,而由于kkk.exe不是调试器性质的程序,所以被启动的永远只有 kkk.exe自己一个,用户每次点击那些“打不开”的安全工具,实际上就 等于又执行了一次恶意程序本体!这个招数被广大使用“映像劫持”技 术的恶意软件所青睐,随着OSO这款超级U盘病毒与AV终结者(随机数病 毒、8位字母病毒)这两个灭杀了大部分流行安全工具和杀毒软件的恶意 程序肆虐网络以后,一时之间全国上下人心惶惶,其实它们最大改进的 技术核心就是利用IFEO把自己设置为各种流行安全工具的调试器罢了, 破解之道尤其简单,只需要将安全工具的执行文件随便改个名字,而这 个安全工具又不在乎互斥量的存在,那么它就能正常运行了,除非你运 气太好又改到另一个也处于黑名单内的文件名去了,例如把AST.exe改为 IceSword.exe。
鬼影病毒处理方法(续)
2、修复MBR(关键一步,必须做),接着上一步,选择“4.修复”--> “ 修复(F)“ --> 确定。 第三步:重装戒恢复系统。在第二步完成后,千万丌要重启电脑迚入 WINDOWS了,否则会二次感染。
第四步:全盘杀毒。返回WINDOWS后,需要升级你的杀毒软件到最 新版本(最新病毒库),然后迚行“全盘查杀”,这样可以把残留在非 系统盘(比如D盘、E盘、F盘)里的病毒寄主文件杀掉,以做到“斩草 除根”。
Rootkit入门手册
一.Rootkit例子Rootkit 嵌入到MBR,Mebroot利用rootkit下载一个450KB的文件,将自身存储在硬盘的最后几个扇区,将自举管理程序写入MBR,实现隐藏磁盘访问,内核中实现,覆盖DISK.sys,调用DISK.sys,创建看门狗线程,如果没有安装,进行安装.查找NDIS隐藏和文档中未出现的函数,与NDIS通信,构造TCP/IP协义栈。
Rootkit一般有两种类型:用户模式和内核模式,用户模式的rootkit如HackerDefender100r容易被发现,但holy_father提供了HxDef的修改版本,命名为Silver andGold并开始销售,也能够防止系统级别的进程,内核模式的rootkit的运行级别与驱动程序是一个级别,内核rootkit不能工作于所有版本的Windows,增加了操作系统的不稳定性,每个rootkit都可以被探测到,但是准确探测的难度和时间超过了结果的价值二.钩子的艺术2.1 软钩子进程附加操作,对INT3中断指令的使用以截获程序流,FireFox挂钩,在PR_Write上设下一个钩子,当钩子命中时,读取栈上第二个参数所指向的ASCII字符串,如果这一字符串与我们之前定下的pattern变量相匹配时,它将被输出至控制台.如果将软钩子施加于调用频繁的函数身上时,目标进程的运行状态可能会极慢,或者会崩溃,因为软钩子所依赖的INT 3指令会导致中断处理例程接过控制权,直到相应的钩子代码执行完毕交还目标进程的控制权,若这一过程每秒钟需要发生上千次的话,大量的性能损失将不可能避免.2.2 硬钩子以硬编码形式向目标进程写入一条跳转指令,以使得同样使用汇编编写而成的钩子代码能够得以执行,软钩子适用于拦截那些调用次数少的函数,而调用次数多的函数,为了对目标进程施加最小的影响,硬钩子成为不二选择,硬钩子首要拦截对象是调用频繁的堆管理例程以及高密度的文件I/O操作。
Rootkit技术可以隐藏系统进程
Rootkit技术可以隐藏系统进程、系统文件、注册表、网络通信。
虽然Rootkit技术从1994年就开始迅速发展,但是直到2007年,国外的研究人员才开始把基于Windows启动过程的Rootkit检测技术与可信计算结合起来,从根源去解决这种攻击,但是这种检测思想实现难度大、成本高、通用性差,只能达到一个检测的目的,而不能真正的阻止这类Rootkit的运行。
2008年以后国内掀起了研究Rootkit技术的热潮,相继出现了Rootkit技术方面的成功实例。
其中包括:奇虎360公司的首席安全研究员李文彬于2008年6月提出了一种基于Boot.ini 的Rootkit-Tophet,并在其Blog中发表的一篇名为《 A new invisible Bootkit is on the way》的文章中进行了详细的描述,该Bootkit 技术能够绕过当前所有的防御软件。
在BIOS Rootkit的研究方面,国内起步较晚,相对成型的实例没有国外多。
国内目前在基于Windows 启动过程的Rootkit检测技术研究方面处于很初级的探索阶段,暂时还没有成型且可靠性高的检测技术出现,尤其在BIOS Rootkit的检测技术方面处于一个相对进展缓慢的状态。
国内还出现了通过TPM芯片去实现基于Windows启动过程的Rootkit的检测,这种检测方法的思想主要利用了可信计算的相关理论,能够检测出系统是否存在这类Rootkit,并且可以有效阻止Bootkit的运行,但是在BIOS Rootkit 的查杀方面可靠性不高,不能恢复操作系统的正常运行。
因此研究有效的并且可靠的检测和防御方法,对信启、安全技术的发展会起到很大的促进作用。
目前大部分的Anti Rootkit技术的实现都是使用了下列几种方法:Cross View(交叉检测技术)、基于行为的Rootkit检测技术和完整性校验技术。
而如今,Rootkit越来越向硬件层次渗透,试图在Windows系统启动之前就获得对系统的控制权,这样Rootkit 技术就不会检测到了。
内核级后门Rootkit技术
后门代码
CODE
IAT HOOK
系统 DLL
CODE
Rootkit
BAD CODE
CODE
技术总揽 隐藏篇 之 代码注入
►
►
Ring3: a.CreateRemoteThread + WriteProcessMemory 1.线程注入 2.代码注入 b.SetWindowsHookEx c. HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs d.Winlogon通知包 e.感染PE文件(1、全部插入 2、感染IAT ) f. DebugActiveProcess + SetThreadContext etc. (Activx,SPI,BHO…) Ring0: KeAttachProcess…
技术总揽 隐藏篇 之 DKOM
►
DKOM (Direct Kernel Object Manipulation) 直接修改系统内核数据实现隐藏 因为是修改系统内核数据,所以要写驱动(或采用其他技 巧)进入管态(Ring0) 使用WinDbg、SoftICE、IDA Pro等工具自己挖掘未公开的 Windows系统内部结构,从而实现比较好的效果… 对Windows系统机制非常熟悉,前置课程《操作系统原理》
参考资料
1.
2. 3. 4.
《Subverting the Windows Kernel》
RAIDE: Rootkit Analysis Identification Elimination 《Windows防火墙与封包拦截技术》
谢谢观看
通过特征码搜索系统中PspCidTable地址
内核级Rootkit 教程
内核级Rootkit 教程一、综述本文将引领读者打造一个初级的内核级Rootkit,然后为其引入两种简单的隐形技术:进程隐形技术和文件隐形技术。
同时,为了让读者获得rootkit编程的相关经验,我们顺便介绍了rootkit的装载、卸载方法,以及必不可少的测试技术。
本文介绍的Rootkit的主要构件是一个设备驱动程序,所以我们首先了解一下我们的第一个rootkit。
二、rootkit主体本节引入一个简单的rootkit实例,它实际上只给出了rootkit的主体框架,换句话说,就是一个设备驱动程序。
那么为什么要用设备驱动程序作为主体呢?很明显,因为在系统中,设备驱动程序和操作系统一样,都是程序中的特权阶级——它们运行于Ring0,有权访问系统中的所有代码和数据。
还有一点需要说明的是,因为本例主要目的在于介绍rootkit是如何隐形的,所以并没有实现后门之类的具体功能,。
我们将以源代码的形式说明rootkit,对着重介绍一些重要的数据结构和函数。
下面,先给出我们用到的第一个文件,它是一个头文件,名为Invisible.h,具体如下所示://Invisible.h:我们rootkit的头文件#ifndef _INVISIBLE_H_#define _INVISIBLE_H_typedef BOOLEAN BOOL;typedef unsigned long DWORD;typedef DWORD* PDWORD;typedef unsigned long ULONG;typedef unsigned short WORD;typedef unsigned char BYTE;typedef struct _DRIVER_DATA{LIST_ENTRY listEntry;DWORD unknown1;DWORD unknown2;DWORD unknown3;DWORD unknown4;DWORD unknown5;DWORD unknown6;DWORD unknown7;UNICODE_STRING path;UNICODE_STRING name;} DRIVER_DATA;#endif我们知道,应用软件只要简单引用几个文件如stdio.h和windows.h,就能囊括大量的定义。
5-Rootkit
实现Rootkit功能 用DLL实现 实现 功能
用DLL实现功能,然后,用其他程序启动该 DLL. 有三种方式:
最简单的方式——RUNDLL32 最简单的方式 特洛伊DLL 特洛伊 线程插入技术
最简单的方式——RUNDLL32 最简单的方式
Rundll32 DllFileName FuncName Rundll32.exe MyDll.dll MyFunc
检测Rootkit的技术思路 的技术思路 检测
基于签名的检测:keywords 启发式或行为的检测: VICE/Patchfinder(inject code) 交叉检测(Cross view based detection):RootKit revealer/Klister/Blacklight/GhostBuster 完整性检测:System virginity Verifier/Tripware.
提供后门访问的二进制替换程序 隐藏攻击者的二进制替换程序 用于隐藏但不替换二进制程序的其他工具 另外一些零散工具 安装脚本 UNIX系统中最流行的两种用户模式RootKit:
LRK家族和URK家族。
Windows用户模式 用户模式Rootkit 用户模式
像UNIX上一样,修改关键性操作系统软件 以使攻击者获得访问权并隐藏在计算机中。 用户模式RootKit控制操作系统的可执行程 序,而不是内核。
创建远程线程技术
远程线程技术指的是通过在另一个进程中 创建远程线程的方法进入那个进程的内存 地址空间。 通过CreateRemoteThread也同样可以在另 一个进程内创建新线程,新线程同样可以 共享远程进程的地址空间。
HANDLE CreateRemoteThread(
HANDLE hProcess, 一个地址 PSECURITY_ATTRIBUTES psa, DWORD dwStackSize, PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam, DWORD fdwCreate, PDWORD pdwThreadId);
内核级Rootkit技术基础知识
本帖最后由占地挤着于2011-1-29 20:23 编辑Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。
换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。
黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。
而本文的目的,就是同读者一起踏上Windows内核级Rootkit之旅!一、背景知识我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。
并且,设备的智能是通过软件来实现的。
所有软件中,有一种是必不可少的,那就是操作系统。
操作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。
真是同人不同命,同为软件,操作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。
因为在应用程序和硬件之间隔着操作系统,所以应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件。
也就是说,对应用程序而言,硬件是不可见的。
当然,凡事是没有绝对的,应用程序绕过操作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。
设想一个软件开发商在开发一功能丰富的软件,功能本身就够他头痛得了,现在他还得操心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。
所以,现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃。
二、内核的主要功能从上文中我们已经了解,内核在系统中处于核心枢纽的地位,下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能,更重要的是这些功能对Rootkit的意义所在:进程管理。
rookit for window:rookit技术资料
2009-10-12 17:34
转自:/content-431992-1.html
Rootkit For Windows:Rookit技术资料wear [E.S.T]
} OBJECT_ATTRIBDTES, *POBJECT_ ATTRIBUTES;
typedef struct _IO_STATUS_BLOCK
{
NTSTATDS Status;
ULONG Information;
}IO_STATUS_BLOCK , * PIO_STATUS_BLOCK ;
He4HookInv利用的第二个方法就是修改文件系统驱动中DRIVER_OBJECT的回调表,这里就不在详细说明了。
typedef struct _OBJECT_ATTRIBUTES
{
ULONG Length;
HANDLE RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
现在人们最熟悉的windows rootkit 就是hacker defender和ntrootkit了,还有使用了baiyuanfan在XCON提出的ring3 rootkit新思路的byshell,呵呵。而linux下就是knark了。
rootkit 技术分析
三.rootkit的一些以公开的隐藏技术以及检测技术。
typedef SSTAT *LPSSTAT;
typedef SSTPT *LPSSTPT;
基于Windows平台的Rootkit技术研究与应用
所有 Rootkit 基本上都是由几个独立的程序组成的,一个典型 Rootkit 包括[3]: (1)以太网嗅探程序,用于获得网络上传输的用户名和密码等信息。 (2)特洛伊木马程序,例如 inetd 或者 login,为攻击者提供后门。 (3)隐藏攻击者的目录和进程的程序,例如 ps、netstat、rshd 和 ls 等。 (4)可能还包括一些日志清理工具,例如 zap、zap2 或者 z2,攻击者使用 这些清理工具删除 wtmp、utmp 和 lastlog 等日志文件中有关自己行踪的条目。一 些复杂的 Rootkit 还可以向攻击者提供 telnet、shell 和 finger 等服务。 典型地,一个攻击者通过利用一个已知的漏洞或破解一个密码首先获得一台 计算机根级别的权限,然后在计算机上安装一个含 Rootkit 技术的软件。一旦这 个含 Rootkit 技术的软件被安装以后,它允许攻击者隐藏活跃的入侵行为,同时 规避正常的身份认证和授权机制来持续获得计算机的特权。Rootkit 可以将矛头 指向固件、一个管理程序、内核或者更常见的、用户模式的应用程序。 Rootkit 的检测方式是复杂的,因为 Rootkit 技术可能会破坏准备寻找它的软 件。检测方法包括使用一个备用的、可信的操作系统、基于行为的方法、特征码 扫描、差分扫描和内存转储分析。彻底去除 Rootkit 类型的软件可能是复杂的或 者是不可能的,尤其是位于内核的 Rootkit,重新安装操作系统可能是唯一的选
2.1 用户级 Rootkit 技术原理
探讨rootkit恶意代码的远离及防范方法
探讨rootkit恶意代码的远离及防范方法Rootkit起源与UNIX系统。
然而,这几年的发展已经使它“日新月异”,我们总是对这种暗藏于系统内部的恶意软件惶恐不已。
我们要做的就是增强对它的防范和斗争。
首先我们要了解一下rootkit恶意代码的原理:首先介绍什么是木马:利用计算机程序漏洞侵入后窃取文件的程序程序被称为木马。
它是一种具有隐藏性的、自发性的可被用来进行恶意行为的程序,多不会直接对电脑产生危害,而是以控制为主。
木马不经电脑用户准许就获取电脑的使用权限。
它不同于病毒,病毒主要是破坏数据以显示黑客的技术,而木马则是隐藏起来窃取用户的数据、密码、帐号等信息从而获得某种“利益”。
传统的Rootkit是一种比普通木马后门更为阴险的木马后门。
它主要通过替换系统文件来达到目的。
这样就会更加的隐蔽,使检测变得比较困难。
传统的Rootkit对一系列平台均有效,但主要是针对Unix的,比如Linux,AIX,SunOs等操作系统。
当然有些Rootkits可以通过替换DLL文件或更改系统来攻击windows平台.Rootkit并不能让你直接获得权限,相反它是在你通过各种方法获得权限后才能使用的一种保护权限的措施,在我们获取系统根权限(根权限即root权限,是Unix系统的最高权限)以后,Rootkits提供了一套工具用来建立后门和隐藏行迹,从而让攻击者保住权限。
木马主要由两部分构成:控制端和服务器端。
我们可以理解为C/S模式。
C端为黑客控制端,S端为被控制端。
被控制端植入了病毒。
Rootkit属于第五代驱动级木马病毒。
工作原理如下:首先木马程序把自己隐藏在某个用户感兴趣的文档中,让用户自己下载时附带木马(木马不会自我繁殖),只有用户运行附带木马的文档时木马才会起作用。
然后木马创建一个具有迷惑性的进程打开端口,接着进入电脑系统隐蔽起来干自己想干的事。
魔高一尺道也高一尺。
Rootkit的制造者不断地研究新的方法,以保持其恶意程序的隐藏性;而安全软件设计公司不断地开发、发布其反恶意程序的措施来保护其客户端。
rootkits病毒的原理介绍
rootkits病毒的原理介绍关于rootkits病毒的原理介绍Rootkits病毒主要分为两大类:第一种是进程注入式Rootkits,另一种是驱动级Rootkits。
第一种Rootkits技术通常通过释放动态链接库(DLL)文件,并将它们注入到可执行文件及系统服务进程中运行,阻止操作系统及应用程序对被感染的文件进行访问。
第二种Rootkits技术比较复杂,在系统启动时Rootkits病毒以加载驱动程序的方式,先于杀毒软件被装入系统,得到合法的操作系统控制权。
当杀毒软件通过系统API及NTAPI访问文件系统时进行监视,一但发现被Rootkits感染的文件时返回一个虚假的结果,从而阻止操作系统及应用程序对被感染的文件进行访问。
第一种Rootkits病毒较好处理,通过使用杀毒软件可以轻松清除,而且不会造成任何严重的后果。
第二种Rootkits病毒,由于其以驱动程序装入系统被认为是驱动的一部分,现阶段还没有一个较好的解决办法。
少数杀毒软件在处理使用此类Rootkits病毒时甚至会出现漏查漏杀的现象,大多数杀毒软件会发现此类病毒,但往往清除失败,某些笔者在实际工作中遇到过几次问题,现加以总结把解决方法与大家分享:第一个例子出现的`现象是操作系统能够正常运行,但杀毒软件无法启动,在没有任何可疑前后台进程的状况下,CPU占用率很高,毫无疑问系统被病毒感染,由于系统本身无法清除病毒,只好把该机器硬盘摘下,挂入另一没有被病毒感染的操作系统以从盘方式进行杀毒,由于病毒盘上所有文件在干净操作系统中只作为普通文件处理,病毒很快就被清除。
问题解决。
第二个例子情况更加严重一些,系统在进入桌面后即出现蓝屏,询问操作人员后得知,前一天杀毒软件报告病毒,杀毒重启后系统即出现桌面蓝屏,排除因为硬件及程序问题后,判断是rootkits病毒破坏操作系统中某启动文件引起,挂从盘杀毒后果然发现病毒,但作为操作系统主盘引导,依然出现进入桌面即蓝屏的现象,根据经验,考虑到rootkits病毒可能首先破坏杀毒软件,而且原杀毒软件已经无法启动,于是依旧挂从盘利用其他操作系统强行删除原系统的杀毒软件文件,再重新装入原系统,问题解决,重新装载杀毒软件,查杀后无病毒。
- 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隐藏网卡的混杂模式。
密码记录:密码记录可以通过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服务的正常进程从而突破防火墙的限制。